提供明确的POS标记输入并获得情绪stanfordnlp

时间:2015-12-22 17:52:41

标签: nlp stanford-nlp

我正在尝试URL中问题11中提到的代码。

我想首先给出POS标记输入,然后第二次获得情绪分析。第一个我能够成功完成。我能打印树,它看起来很好。但是第二个返回给我-1(它应该返回给我4=very positive)。

请提供意见/建议。

public static String test(){
    try{

        String grammer="/Users/lenin/jar/stanfordparser-master/stanford-parser/models/englishPCFG.ser.gz";

        // set up grammar and options as appropriate
        LexicalizedParser lp = LexicalizedParser.loadModel(grammer);
        String[] sent3 = { "movie", "was","very", "good","." };
        // Parser gets tag of second "can" wrong without help                    
        String[] tag3 = { "PRP", "VBD", "RB", "JJ","." };                             
        List sentence3 = new ArrayList();
        for (int i = 0; i < sent3.length; i++) {
          sentence3.add(new TaggedWord(sent3[i], tag3[i]));
        }
        Tree parse = lp.parse(sentence3);
        parse.pennPrint();

        int sentiment_score = RNNCoreAnnotations.getPredictedClass(parse);
        System.out.println("score: "+sentiment_score);


    }
    catch(Exception e){
        e.printStackTrace();
    }
    return "";
}

1 个答案:

答案 0 :(得分:0)

您获得的值为-1,因为您尚未运行任何情绪分析。你只是为语法结构解析了句子。

当然,您可以通过代码运行情绪分析器,但不幸的是,目前还没有一个简单的低级别界面。添加一段时间是件好事!您基本上需要复制类edu.stanford.nlp.pipeline.SentimentAnnotator中发生的处理:

  1. 从解析器中获取二进制化树(直接或通过二进制化返回的树)
  2. 折叠一元
  3. 运行SentimentCostAndGradient课程forwardPropagateTree