特征选择文本挖掘

问题描述 投票:0回答:4

我们正在完成一项有关文本分类的任务,我们使用了一种无监督的机器学习模型。

在进行文本聚类之前,数据集必须经历几个步骤,例如从停用词中清除数据集,从文本中提取词干,然后获得功能选择。

关于特征选择,有几种方法可用于特征选择,例如信息增益,基尼系数和互惠信息。

我想知道这些方法的性质以及我如何在编码部分中实现它们,是否可以使用任何库来执行这些任务。

java nlp weka text-mining feature-selection
4个回答
0
投票

您不应该选择功能。

文本遵循幂定律,因此没有可以跳过的“不常用词”或未使用的功能。信息隐藏在分布的末尾,而不是最常用的单词中。

如果您确实想限制维度以提高计算效率(对于文本来说,路透社认为很小),则应部署基于散列的方法。

  • 我想您要进行标准的TF-IDF特征表示,并将单词视为特征。

0
投票

使用功能选择可以帮助文本分类,具体取决于应用程序域。在主题(基于主题的类别)中,例如经济,政治,体育等方面,词干,中止列表和选择单词和单词n-gram的效果通常很好。在其他问题中,例如垃圾邮件检测,在表示中使用停用词可以提高准确性。

问题是:文本样式在应用程序领域中很重要?如果是,则应保留停用词并避免词干,但您始终可以使用例如那些具有最高信息增益得分的功能。

您可以通过StringToWordVector过滤器在WEKA中执行停止列表和阻止。您可以通过搜索方法AttributeSelection和评估指标Ranker使用InfoGainAttributeEval过滤器将WEKA用于特征选择。在Text Mining with WEKA的页面上获取更多详细信息(对不起,SSP)。


0
投票

首先我们必须生成arff文件。

<< [arff文件格式如下:

@RELATION section将包含

preprocessing

之后整个文档中存在的所有单词。每个单词都将是实数类型,因为tfidf值是实数。@data section将包含它们在

preprocessing。

期间计算出的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。这对我有用。

0
投票
[有一个python库用于功能选择TextFeatureSelection。该库以分数的形式为每个单词标记,二元组,三字母组等提供区分能力。

那些了解机器学习中特征选择方法的人,它基于

包装器方法,并且为ML工程师提供了所需的工具,以提高其NLP和深度学习模型中的分类准确性。它具有4种方法,分别是Chi-square,Mutual informationProportional DifferenceInformation gain,以帮助选择单词作为特征,然后再输入到机器学习分类器中。

from TextFeatureSelection import TextFeatureSelection #Multiclass classification problem input_doc_list=['i am very happy','i just had an awesome weekend','this is a very difficult terrain to trek. i wish i stayed back at home.','i just had lunch','Do you want chips?'] target=['Positive','Positive','Negative','Neutral','Neutral'] fsOBJ=TextFeatureSelection(target=target,input_doc_list=input_doc_list) result_df=fsOBJ.getScore() print(result_df) #Binary classification input_doc_list=['i am content with this location','i am having the time of my life','you cannot learn machine learning without linear algebra','i want to go to mars'] target=[1,1,0,1] fsOBJ=TextFeatureSelection(target=target,input_doc_list=input_doc_list) result_df=fsOBJ.getScore() print(result_df)
© www.soinside.com 2019 - 2024. All rights reserved.