我们正在完成一项关于文本分类的任务,我们使用一种无监督机器学习模型。
在我们进行文本聚类之前,数据集必须经过几个步骤,例如从停用词中清除它,从文本中提取词干词,然后获取特征选择。
阅读有关特征选择的信息,我可以应用多种方法进行特征选择,例如信息增益、基尼指数和互信息。
我想知道这些方法的性质以及如何在编码部分实现它们,是否有任何库可以用来执行这些任务。
我们正在完成一项关于文本分类的任务,我们使用一种无监督机器学习模型。
在我们进行文本聚类之前,数据集必须经过几个步骤,例如从停用词中清除它,从文本中提取词干词,然后获取特征选择。
阅读有关特征选择的信息,我可以应用多种方法进行特征选择,例如信息增益、基尼指数和互信息。
我想知道这些方法的性质以及如何在编码部分实现它们,是否有任何库可以用来执行这些任务。
您不应该选择功能。
文本遵循幂律,因此没有可以跳过的“不常用词”或未使用的功能。信息隐藏在分布的尾部,而不是最常用的词中。
如果您确实想为计算效率绑定维度(路透社被认为对文本来说很小),您应该部署基于散列的方法。
使用特征选择可以帮助文本分类,具体取决于应用程序域。在经济、政治、体育等主题(基于主题的类别)中,词干提取、停止列表和选择单词和单词 n-gram 通常效果很好。在其他问题中,例如垃圾邮件检测,在表示中使用停用词可以提高准确性。
问题是:文本的风格在应用领域重要吗?如果是,您应该保留停用词并避免词干提取,但您始终可以使用例如信息增益得分最高的那些特征来执行特征选择。
StringToWordVector
您可以通过过滤器在 WEKA 中执行停止列表和词干提取。您可以使用 WEKA 使用AttributeSelection
过滤器进行特征选择,带有搜索方法Ranker
和评估指标InfoGainAttributeEval
。在我的关于使用 WEKA进行文本挖掘的页面中获取更多详细信息(对于 SSP 感到抱歉)。
首先我们要生成arff文件。
arff文件格式如下:
@RELATION section
将包含预处理后整个文档中存在的所有单词。每个单词的类型都是真实的,因为 tfidf 值是真实值。
@data section
将包含在预处理期间计算的它们的tfidf 值。例如 first 将包含 tfidf 值所有出现在第一个文档中的单词最后一列文档类别。
@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
. 这对我有用。