我正在研究一个Java程序(分类器),它读取给定的文本文件并输出相关的情绪(正面或负面或中性)。
该程序计算三个类别(正或负或中性)的三个概率。考虑到这三个概率,我想给文章一个分数(最多10个)。
示例 - 如果想的话,
P(Positive) = 0.0006
P(Negative) = 0.0001
P(Neutral) = 0.0002
然后很明显,该文章是高度正面的,因此评级应该高,即8或以上。
PS - 概率不等于1并且数字非常小(在~10 ^ - (100)范围内)
有人可以指出任何可以帮我评价文章的算法吗?
由于
修改 我不能简单地拿比率。例如
P(Positive) = 1.2*E(-117)
P(Negative) = 4.7*E(-112)
P(Neutral) = 9.3*E(-110)
上面显示的概率变化很大。因此,采用比率将毫无意义。
答案 0 :(得分:4)
我在6个月前的亚马逊评论上做了类似的事情(估计准确性的基本事实是星级评定)。
您可以使用Bag of Words model执行此任务 - 即每个“字词”都是一项功能。这会导致维度非常高的问题 - 这可能会影响学习时间。
从原始数据中提取要素后,您可以使用具有高维度问题的classification algorithms之一。我测试了SVM(线性和高斯内核)和Naive-Bayes。我发现SVM得分要好得多 - 当我在亚马逊上测试时,这两个内核之间没有统计意义。
我使用名义分类器和3个可能的值(类)作为我的学习算法 - pro / neutral / against。
我还发现使用feature selection(以减少维度)对于Naive-Bayes非常有用,但对于SVM却没有那么多。
更重要的一些注意事项:
我的结果:使用SVM,正面评论的准确率为85%,负面评论的准确率为80%。真正的问题是中立,我们得到了70%,而且赞成和反对的错误也主要是因为分类器将其归类为“中立”,几乎没有(少于5%)被归类为亲/反对他们是恰恰相反。
答案 1 :(得分:0)
如果你正在使用朴素贝叶斯,在某些时候你会计算一个给定例子在某个类别中的概率(或记录可能性),在你的情况下为负,正或中性。也许您可以将该概率乘以10以获得您的评分?