推文分类器特征选择 NLTK

Posted

技术标签:

【中文标题】推文分类器特征选择 NLTK【英文标题】:Tweet Classifier Feature-Selection NLTK 【发布时间】:2012-02-05 10:15:20 【问题描述】:

我目前正在尝试使用 NLTK 中的朴素贝叶斯分类器对推文进行分类。我正在使用“$”前缀(例如:$AAPL)对与特定股票代码相关的推文进行分类。我的 Python 脚本基于这篇博文:Twitter Sentiment Analysis using Python and NLTK。到目前为止,我已经取得了相当不错的成绩。但是,我觉得还有很大很大的改进空间。

在我的单词特征选择方法中,我决定实现 tf-idf 算法来选择信息量最大的单词。不过,在这样做之后,我觉得结果并不那么令人印象深刻。

然后我在以下博客上实现了该技术:Text Classification Sentiment Analysis Eliminate Low Information Features。结果与使用 tf-idf 算法获得的结果非常相似,这使我更彻底地检查了我的分类器的“最具信息性的特征”列表。那时我意识到我遇到了一个更大的问题:

推文和真实语言不使用相同的语法和措辞。在普通文本中,可以使用 tf-idf 或停用词来挑选出许多冠词和动词。然而,在推文语料库中,一些极其无信息的词,如“the”、“and”、“is”等,与对正确分类文本至关重要的词一样多。我不能只删除所有少于 3 个字母的单词,因为一些无信息特征比这更大,而一些信息特征更小。

如果可以,我希望不必使用停用词,因为需要经常更新列表。但是,如果这是我唯一的选择,我想我将不得不接受它。

所以,总结一下我的问题,有谁知道如何真正在推文的特定来源中获得信息量最大的词?

编辑:我试图分为三组:正面、负面和中立。另外,我想知道,对于 TF-IDF,我应该只剪掉分数低的单词,还是剪掉分数高的单词?在每种情况下,您会从特征选择过程中排除多少百分比的文本源词汇?

【问题讨论】:

您的推文语料库有多大?你现在得到什么样的分数?此外,您是否考虑过使用与朴素贝叶斯不同的分类器和/或使用除单词以外的其他特征(例如作者)? 我没有考虑使用其他功能:作者太多样化了。目前,我的语料库只有几百条推文。至于分数,我会说,取决于我的测试语料库的大小(总是越来越大),它们的范围从 0 到 0.3。 分数,我的意思是准确度/F1/无论你测量什么。如果你有一个更大的语料库,你可能会得到更好的结果:例如idf 可能会变得更加准确。 嗯,当我计算准确度时,它给了我一个介于 0 和 1 之间的值。我理解你对更大语料库的看法,但奇怪的是,'the' 的 tf-idf 很高得分,无论来源。 你的意思是你的准确率在0到0.3之间?可以说是很可怜了。班级人数是多少? 【参考方案1】:

您链接到的博文描述了 show_most_informative_features 方法,但 NaiveBayesClassifier 也有一个 返回 特征的 most_informative_features 方法而不仅仅是打印它们。您可以简单地根据您的训练集设置一个截止值 - 诸如“the”、“and”之类的特征以及其他不重要的特征将在信息量方面位于列表的底部。

确实,这种方法可能会过度拟合(某些特征在您的训练集中比在您的测试集中重要得多),但对于任何根据您的训练集过滤特征的东西来说都是如此。

【讨论】:

你的意思是 show_most_informative_features 方法吗?如果是这样,我希望您的解决方案能够正常工作,但这正是我的问题:事实证明,按照分类器的标准,'the' 信息量很大。事实上,在我分析的推文中,它并没有出现那么多! 我的意思是“most_informative_features”,而不是“show_most_informative_features”——不同之处在于 show_most_informative_features 只打印它们(这对算法毫无价值),而 most_informative_features 返回它们(参见我上面链接的 API)。至于“the”似乎提供了丰富的信息,那似乎是我所描述的过度拟合。但它也可能与 NLTK 用来量化“信息量”的糟糕指标有关,这不是信息增益。重要问题:您有多少分类? 我只分类了大约 200 条推文。由于 NLTK 的信息获取方法很糟糕,是否应该使用我提到的博客文章中的方法有任何帮助? 是的,我会马上编辑我的帖子。但我不是指多少条推文,我指的是你将它们分类到多少组 澄清一下,在您的代码中,您是否使用了博文中描述的 BigramAssocMeasures 方法?

以上是关于推文分类器特征选择 NLTK的主要内容,如果未能解决你的问题,请参考以下文章

scikits learn 和 nltk:朴素贝叶斯分类器性能差异很大

Sklearn MLP 特征选择

如何在朴素贝叶斯分类器中使用优势比特征选择

为啥以两种不同方式应用随机森林分类器的特征选择结果不同

随机森林回归器的特征选择

特征选取--卡方选择器