推特分类器功能选择NLTK

ell*_*zan 5 python twitter classification machine-learning nltk

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

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

然后,我在以下博客上实现了该技术:文本分类情感分析消除低信息功能.结果与使用tf-idf算法获得的结果非常相似,这使我更彻底地检查了我的分类器的"最具信息性特征"列表.就在那时我意识到我遇到了一个更大的问题:

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

如果可以的话,我不想使用停用词,因为需要经常更新列表.但是,如果这是我唯一的选择,我想我必须坚持下去.

那么,总结一下我的问题,是否有人知道如何真正获得特定来源中最具信息性的词语是Tweet?

编辑:我正在尝试分为三组:积极,消极和中立.另外,我想知道,对于TF-IDF,我应该只删除分数较低的单词,还是分数较高的单词?在每种情况下,您将从特征选择过程中排除文本源词汇的百分比?

Dav*_*son 2

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

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