Stanford CoreNLP如何为短语分配括号?

时间:2015-12-11 20:39:31

标签: stanford-nlp sentiment-analysis

我有一个问题,关于CoreNLP如何为在累积整体句子分数的途中为短语分配括号。主要问题是它在一个句子中计算短语情绪的ORDER。有谁知道使用什么算法?一个例子将清楚地说明我的问题:

在我的训练模型中,我使用的量表是0-4,其中0表示负数,2表示中性,4表示正数,因此以下短语得分:(3(1下)(2(2)油)(2制作))) 注意:跳跃到正面的原因是我们预测油价和石油产量下降将导致价格上涨,因此正确预测石油价格上涨将需要整体积极的情绪。

接下来,我们假设抓住了以下推文:“欧佩克决定降低石油产量”。我假设CoreNLP做的第一件事就是为每个单词分配一个分数。在我们的训练模型中,lower得分为1,所有其他单词都没有得分,因此得分为中性。

问题似乎源于CoreNLP决定对短语(单词组)进行评分。如果它做的第一件事是得分“石油生产”,然后得分“降低石油产量”,它会看到我们的模型中的“低油产量”的确切短语匹配并正确地指定得分为3.

然而,我猜测的是:第一个CoreNLP得分“欧佩克决定”,然后“欧佩克决定”,然后“欧佩克决定降低”,然后“欧佩克决定降低油价”,然后欧佩克决定在这种情况下,“低油产量”一词从未被考虑在真空中,因为没有与我们的训练模型相匹配的短语,单个单词分数决定整体情绪并且得分为1由于“降低。”

唯一的解决方案是让某人告诉我CoreNLP用来对短语进行评分的确切括号算法。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

Stanford CoreNLP在句子上运行一个选区解析器。然后它使用TreeBinarizer将选区树变成二叉树。

这是相关课程:

edu.stanford.nlp.parser.lexparser.TreeBinarizer

以下是GitHub上源代码的链接:

https://github.com/stanfordnlp/CoreNLP/blob/master/src/edu/stanford/nlp/parser/lexparser/TreeBinarizer.java

以下是TreeBinarizer设置位置的源代码:

https://github.com/stanfordnlp/CoreNLP/blob/master/src/edu/stanford/nlp/pipeline/ParserAnnotator.java