我们正在完成一项关于文本分类的任务,我们使用一种无监督的机器学习模型。
在我们进行文本聚类之前,数据集必须经过几个步骤,例如从停用词中清除它,从文本中提取干词,然后获取特征选择。
阅读有关特征选择的内容,我可以使用多种方法进行特征选择,例如信息增益,基尼指数和相互信息。
我想知道这些方法的性质以及我如何在编码部分实现它们,是否有任何库可以用来执行这些任务。
答案 0 :(得分:0)
您不应该选择功能。
文字遵循幂律,因此您可以跳过“非常常用语”或未使用的功能。信息隐藏在发布的尾部,而不是最常见的单词。
如果您确实希望限制维度以提高计算效率(路透社被认为是文本较小),您应该部署基于哈希的方法。
答案 1 :(得分:0)
使用功能选择可以帮助文本分类,具体取决于应用程序域。在主题(基于主题的类别)中,例如经济,政治,体育等,阻止,停止和选择单词和单词n-gram通常很有效。在其他问题中,例如垃圾邮件检测,在表示中使用停用词可以提高准确性。
问题是:文本的样式在应用程序域中很重要?如果是,您应该保留停用词并避免词干,但您始终可以使用例如具有最高信息增益分数的那些功能。
您可以通过StringToWordVector
过滤器在WEKA中执行停止和限制。您可以使用AttributeSelection
过滤器使用WEKA进行功能选择,搜索方法为Ranker
,评估指标为InfoGainAttributeEval
。在我Text Mining with WEKA的页面中获取更多详细信息(抱歉SSP)。
答案 2 :(得分:0)
首先我们必须生成 arff 文件。
arff 文件格式如下:
@RELATION section
将包含预处理后整个文档中的所有单词。每个单词的类型都是真实的,因为tfidf值是实数值。
@data section
将包含在预处理期间计算的 tfidf值。例如,首先将包含tfidf值,第一个文档中的所有单词以及文档的最后一列的 categary 强>
@RELATION filename
@ATTRIBUTE word1 real
@ATTRIBUTE word2 real
@ATTRIBUTE word3 real
.
.
.
.so on
@ATTRIBUTE class {cacm,cisi,cran,med}
@data
0.5545479562,0.27,0.554544479562,0.4479562,cacm
0.5545479562,0.27,0.554544479562,0.4479562,cacm
0.55454479562,0.1619617,0.579562,0.5542,cisi
0.5545479562,0.27,0.554544479562,0.4479562,cisi
0.0,0.2396113617,0.44479562,0.2,cran
0.5545479562,0.27,0.554544479562,0.4479562,carn
0.5545177444479562,0.26196113617,0.0,0.0,med
0.5545479562,0.27,0.554544479562,0.4479562,med
生成此文件后,您可以将此文件作为InfoGainAttributeEval.java
的输入。这对我有用。