【发布时间】: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之间?可以说是很可怜了。班级人数是多少?
标签: python twitter machine-learning nltk classification