首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >评级文章.情绪分析

评级文章.情绪分析
EN

Stack Overflow用户
提问于 2013-03-31 14:09:01
回答 2查看 661关注 0票数 3

我正在编写一个Java程序(分类器),它读取给定的文本文件并输出相关情绪(正负或中性)。

程序计算这三个类别(正、负或中性)的三个概率。考虑到这三个概率,我想给这篇文章一个分数(最多10分)。

示例-如果假设,

代码语言:javascript
复制
P(Positive) = 0.0006
P(Negative) = 0.0001
P(Neutral)  = 0.0002

那么很明显,这篇文章是非常正面的,因此评分应该是高的,即8或更高。

PS -概率不等于1,而且是非常小的数字(在~10^-(100)的范围内)

有人能指出有什么算法可以帮助我给文章打分吗?

谢谢

编辑我不能简单地取比率。例如

代码语言:javascript
复制
P(Positive) = 1.2*E(-117)
P(Negative) = 4.7*E(-112)
P(Neutral)  = 9.3*E(-110)

上面显示的概率差别很大。因此,取比率将是毫无意义的。

EN

回答 2

Stack Overflow用户

发布于 2013-03-31 14:19:31

大约6个月前,我在亚马逊的评论上做了一些类似的事情(估算准确性的基本事实是明星评级)。

您可以使用纸袋模型来完成这项任务--即每个单词都是一个特性。这会导致一个很高维度的问题--这可能会影响学习时间。

从原始数据中提取特性之后,您可以使用具有高维问题的下降的分类算法之一。我测试了支持向量机 (线性和高斯核)和朴素-贝斯。我发现支持向量机的得分要好得多--当我在Amazon上测试时,这两个内核之间没有统计学意义。

在我的学习算法中,我使用了三个可能值(类)的标称分类器--pro/中性/反对。

我还发现,使用特征选择 (降低维数)对于朴素-贝叶斯是非常有用的,但对支持向量机则没有多大帮助。

一些更重要的注意事项:

  1. 堵住词句也有帮助。
  2. 除了单词之外,使用双字元(对词)也有帮助(尽管进一步增加了问题的维度)。
  3. 对于这个任务,我使用韦卡利卜库来实现学习算法。
  4. 我建议将数据分割用于测试和训练,以估计数据的准确性,并使用交叉验证为算法寻找参数(例如,支持向量机所需的参数)。

结果表明:支持向量机对正面评价的准确率为85%,对负面评价的准确率为80%。真正的问题是中立性,我们得到了70%,而赞成和反对的错误也主要是因为分类器把它归类为“中性”,几乎没有(少于5%)被归类为赞成/反对,而它们正好相反。

票数 4
EN

Stack Overflow用户

发布于 2013-03-31 15:46:13

如果您使用的是朴素贝叶斯,在某个点上,您将计算出给定示例在某个类中的概率(或日志概率),在您的情况下是负的、正的或中性的。也许你可以把这个概率乘以10才能得到你的评分?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15730254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档