Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 评级文章-情绪分析_Java_Algorithm_Math_Probability_Sentiment Analysis - Fatal编程技术网

Java 评级文章-情绪分析

Java 评级文章-情绪分析,java,algorithm,math,probability,sentiment-analysis,Java,Algorithm,Math,Probability,Sentiment Analysis,我正在开发一个Java程序(分类器),它读取给定的文本文件并输出相关的情绪(积极的、消极的或中性的) 该程序计算三类(正、负或中性)的三种概率。考虑到这三种可能性,我想给这篇文章打分(最多10分) 示例- 如果假设 P(Positive) = 0.0006 P(Negative) = 0.0001 P(Neutral) = 0.0002 然后很明显,这篇文章是高度积极的,因此评级应该是高ie 8或以上 PS-概率加起来不等于1,并且是非常小的数字(在~10^-(100)范围内) 有人能指出什

我正在开发一个Java程序(分类器),它读取给定的文本文件并输出相关的情绪(积极的、消极的或中性的)

该程序计算三类(正、负或中性)的三种概率。考虑到这三种可能性,我想给这篇文章打分(最多10分)

示例- 如果假设

P(Positive) = 0.0006
P(Negative) = 0.0001
P(Neutral)  = 0.0002
然后很明显,这篇文章是高度积极的,因此评级应该是高ie 8或以上

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

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

谢谢


编辑 我不能简单地计算比率。比如说

P(Positive) = 1.2*E(-117)
P(Negative) = 4.7*E(-112)
P(Neutral)  = 9.3*E(-110)

上面显示的概率变化很大。因此,采用比率将毫无意义。

大约6个月前,我在亚马逊的评论中也做了类似的事情(估计准确度的基本事实是星级评级)

您可以为此任务使用,即每个“单词”都是一个功能。这会导致高维度的问题,这可能会影响学习时间

从原始数据中提取特征后,可以使用一个具有高维问题的特征。我测试了(线性和高斯核)和。我发现SVM的得分要高得多——当我在Amazon上测试时,这两个内核之间没有统计学意义

对于我的学习算法,我使用了带有3个可能值(类)的标称分类器——pro/neutral/Anticle

我还发现使用(降维)对朴素贝叶斯非常有帮助,但对支持向量机没有太大帮助


一些更重要的注释:

  • 词干分析也有帮助
  • 除了单词之外,使用双格(单词对)也有帮助(尽管会进一步增加问题的维度)
  • 对于我使用的任务和库来实现 学习算法
  • 我建议分割数据进行测试和训练,以估计数据的准确性,并用于寻找算法的参数(例如,SVM所需的参数)


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

    如果你使用朴素贝叶斯,在某个点上你会计算概率(或对数似然性)一个给定的例子在某个类中,在你的例子中是否定的、肯定的或中立的。也许你可以把概率乘以10得到你的评分

    我认为这与编程无关。最好访问stats.stackexchange.com@leonbloy。我是StackOverflow的新手,将在stats.stackexchange.com上发布这个问题。如果{正,负,中性}是样本空间,那么严格地说,这里你没有处理概率度量,因为它们的P(x)和不等于1;这在这里似乎不相关,可能也不相关(因此,如果不相关,显然可以忽略这一点),但取决于你对P值的处理,如果你假设P是一个概率度量,你可能会遇到麻烦。@G.Bach你是对的,这些是每一类的可能性。我粗略地把它们称为概率。如果你翻阅一些与情绪分析相关的研究论文,你会发现这些概率加起来永远不会等于1。这意味着可能会有另一个类别,即“未分类”的文档不属于其他类别。因为我们只想估计文档可能属于哪一类,所以我们可以忽略另一类,从这三类中选择最合适的。PS-我正在使用机器学习来训练分类器。无论如何,谢谢!谢谢你,阿米特!出于某些原因,我正在与NaiveBayes合作。我们的项目似乎相似。但我必须做的另一件事是生成评级,而不是测试给定的评级(如您的案例)。使用bag of words模型可以简化文档的表示,但如何使用它生成10分的分数?你知道有哪种算法能在给定3类概率的情况下帮助生成评级/分数吗?@AnkitRustagi我用过。在监督学习中,您需要有一个初始的训练数据,并使用它生成分类器(这称为学习过程)。通常,在这个模型中学习需要几千个样本(经验法则)。有时可以做的一件事是将这项任务外包,将其分成10块(例如),让人们为你对火车数据的看法进行分类(当然要收费)。谢谢@justin!实际上,我得到的概率是非常小的数字。这可能是因为我用大约100篇文章训练了分类器。我发现每个类大约有30000个单词(不是唯一的)。因此,由于没有大量独特的单词,我得到的可能性通常在~10^(-100)的范围内。所以简单地乘以10在这里是行不通的!