给定包含 N 篇文档的文本数据集,每篇文档由一个类别标签(取值为 "positive"
或 "negative"
)和文本内容构成。要求使用 Bag-of-Words 模型提取文本特征,利用卡方检验计算每个单词与类别标签之间的相关性。卡方统计量的计算公式为
χ2= ∑i=12 ∑j=12 Eij(Oij−Eij)2
其中 Oij 表示观察到的频数,Eij 表示在独立性假设下计算的期望频数,计算公式为
具体步骤如下:
假设你团队正在开发一个文本分类模型,用于将客户评论分类为正面或负面。由于文本数据具有高维度的特性,模型训练和预测的效率受到影响。你提议使用卡方检验进行特征选择,挑选出与分类任务最相关的词汇,降低数据的维度,从而提高模型的性能。
请你编写一个程序,使用卡方检验对给定的文本数据集进行特征选择。
具体要求如下:
1.读取输入数据集,包含多篇标注了类别的文本文档。
2.提取特征,采用词频(Bag−of−Words)模型,将文本转换为特征向量。(不能忽视单词字母大小写)
3.计算每个特征(词)的卡方统计量,衡量其与类别标签的相关性。
4.根据卡方统计量选择前(k)个最重要的特征。
5.输出选定的特征列表。
输出(k)行,每行包含一个单词(特征),按照卡方统计量从大到小排序。如果多个特征的卡方值相同,按字母顺序升序排列。
对于每个特征(单词),卡方统计量计算公式为:
x2=∑i=12∑j=12Eij(Oij−Eij)2 其中:
(Oij)是观察到的频数,表示特征是否出现和类别的四种组合情况,
Eij是期望频数,按照独立性假设计算:
Eij=总样本数(特征是否出现的行数)×(类别的列和)
输入
6
positive I love this movie
negative I hate this movie
positive This film was fantastic
negative This film was terrible
positive What a great experience
negative What a bad experience
3
输出
bad
fantastic
great
输入
2
1 1
输出
-1