这对这个社区来说可能不是一个非常相关的问题。但我认为这会让我接触更广泛的计算机科学界并获得帮助。
我使用的是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
答案 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将定义值中的标签分配给评估。
希望这能指向正确的方向。如果你弄明白该怎么做,请分享。