我需要一种可靠且准确的方法来将推文过滤为主观或客观。换句话说,我需要使用训练集在 Weka 之类的东西中构建一个过滤器。
是否有任何可用的训练集可用作 Twitter 消息或其他可转移域的主观/客观分类器?
我需要一种可靠且准确的方法来将推文过滤为主观或客观。换句话说,我需要使用训练集在 Weka 之类的东西中构建一个过滤器。
是否有任何可用的训练集可用作 Twitter 消息或其他可转移域的主观/客观分类器?
出于研究和非营利目的,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 的含义。
"u" 和 "awesme" 不会返回任何东西。
2)然后反对已知的缩写/速记并用扩展替换匹配(一些资源:netlingo http://www.netlingo.com/acronyms.php或 smsdictionary http://www.smsdictionary.co.uk/abbreviations)
现在原始推文将如下所示:
推文 1:@xyz你应该看到黑暗骑士。它真棒。
3)然后在拼写检查器中输入剩余的单词并用最佳匹配替换(对于小单词并不总是理想且容易出错)
相关链接: 寻找 Java 拼写检查器库
现在原始推文将如下所示:
推文 1:@xyz 你应该看到黑暗骑士。它真棒。
4) 将推文拆分并输入 SWN3,汇总结果
这种方法的问题在于
a) 否定应在 SWN3 之外处理。
b) 表情和夸张的标点信息会丢失或需要单独处理。
CMU 某处有情绪训练数据。我不记得链接了。CMU 在 Twitter 和情绪分析方面做了很多工作:
我为 twitter 写了一个英语与非英语的朴素贝叶斯分类器,并制作了一个〜示例开发/测试集,它的准确率为 98%。如果您只是想了解问题,我认为这类事情总是很好,但是像 SentiWordNet 这样的软件包可能会给您一个良好的开端。
问题在于定义是什么使推文成为主观或客观的!重要的是要了解机器学习与算法无关,而更多地与数据质量有关。
你提到 75% 的准确率就是你所需要的……那么召回呢?如果您提供正确的训练数据,您也许能够以较低的召回率获得它。
在DynamicLMClassifier
LingPipe 中工作得很好。
http://alias-i.com/lingpipe/demos/tutorial/sentiment/read-me.html