我需要一种可靠而准确的方法来过滤推文的主观或客观。换句话说,我需要使用训练集在Weka之类的东西中构建一个过滤器。
是否有可用的培训集可用作Twitter消息或其他可转让域名的主观/客观分类器?
答案 0 :(得分:2)
为了研究和非营利目的,SentiWordNet可以为您提供您想要的产品。也可以获得商业许可证。
SentiWordNet:http://sentiwordnet.isti.cnr.it/
示例Jave代码:http://sentiwordnet.isti.cnr.it/code/SWN3.java
相关文件:http://nmis.isti.cnr.it/sebastiani/Publications/LREC10.pdf
我会尝试另一种方法:
实施例
鸣叫1:@xyz你应该看到黑暗骑士。它太棒了。
1)首先查找for含义的字典。
“你”和“awesme”不会返回任何内容。
2)然后反对已知的缩写/短号并用扩展替换匹配 (一些资源:netlingo http://www.netlingo.com/acronyms.php或smsdictionary http://www.smsdictionary.co.uk/abbreviations)
现在原始推文看起来像是:
鸣叫1:@xyz 你应该看到黑暗骑士。它太棒了。
3)然后输入拼写检查器中的剩余单词并替换为最佳匹配(对于小词而言,并不总是理想且容易出错)
相关链接: Looking for Java spell checker library
现在原始推文看起来像是:
鸣叫1:@xyz你应该看到黑暗骑士。它的很棒。
4)拆分并将推文送入SWN3,汇总结果
这种方法的问题在于
a)否定应在SWN3之外处理。
b)表情符号和夸张标点符号中的信息将丢失或需要单独处理。答案 1 :(得分:2)
CMU的某处有情绪训练数据。我不记得链接了。 CMU在推特和情绪分析方面做了很多工作:
我为twitter编写了一个英语与非英语Naive Bayes分类器并制作了一个示例开发/测试集,它准确率为98%。我认为,如果你只是想了解这个问题,那总是非常好的,但像SentiWordNet这样的软件包可能会给你一个良好的开端。
问题在于定义推文的主观或客观性!重要的是要理解机器学习不是关于算法,而是关于数据的质量。
你提到75%的准确度就是你需要的......那么召回呢?如果您提供正确的培训数据,您可能会以较低的召回率为代价。
答案 2 :(得分:1)
LingPipe中的DynamicLMClassifier
效果非常好。
http://alias-i.com/lingpipe/demos/tutorial/sentiment/read-me.html