如何从斯坦福Corenlp包中获得短语级别的情绪

时间:2014-07-13 14:58:53

标签: java nlp stanford-nlp sentiment-analysis

这对这个社区来说可能不是一个非常相关的问题。但我认为这会让我接触更广泛的计算机科学界并获得帮助。

我使用的是Standford Core NLP软件包,更具体地说是它的Sentiment module。我使用以下命令获得句子级别的情绪。

java -cp stanford-corenlp-3.4.jar:stanford-corenlp-3.4-models.jar:xom.jar:joda-time.jar:jollyday.jar:ejml-0.23.jar -mx2g edu.stanford.nlp.sentiment.SentimentPipeline -stdin < input.txt

但我需要短语级别的情绪,就像我们在online demo中看到的那样。我无法弄清楚如何。

编辑:

在查看源代码之后,我想通过向上述命令添加另一个参数,可以获得句子的解析树表示的每个节点的情感分数。然而,这只给出了数字情绪分数,而不是正面/负面情绪。但我认为将这一分数转化为二元正面/负面情绪是相当微不足道的。命令是:

java -cp stanford-corenlp-3.4.jar:stanford-corenlp-3.4-models.jar:xom.jar:joda-time.jar:jollyday.jar:ejml-0.23.jar -mx2g edu.stanford.nlp.sentiment.SentimentPipeline -stdin -output PENNTREES < input.txt

1 个答案:

答案 0 :(得分:4)

您可以使用BuildBinarizedDataset(stanford-corenlp 3.4)作为示例,如何使用情感注释将句子解析为PTB树。当然,BuildBinarizedDataset接受如下输入:

0   I hate demo
2   I
1   hate
2   demo
0   I hate

第一行是句子,第二行是句子的情绪,但这用于训练模型以产生情感注释的PTB树而不是给出单独的短语的值。

(0 (2 I) (0 (1 hate) (2 demo)))

但是,如果您只提供句子,它将生成一个具有整体句子情绪值的树:

(0 (0 I) (0 (0 hate) (0 demo)))

可能您可以修改BuildBinarizedDataset的代码,而不是使用Sentiment Annotation Pipeline将定义值中的标签分配给评估。

希望这能指向正确的方向。如果你弄明白该怎么做,请分享。