Stanford CorpNLP 返回错误结果

Stanford CorpNLP returning wrong results

我正在尝试在 this 问题后使用 stanford corenlp 进行词形还原。我的环境是:-

我的代码片段是:-

//...........lemmatization starts........................

    Properties props = new Properties(); 
    props.put("annotators", "tokenize, ssplit, pos, lemma"); 
    StanfordCoreNLP pipeline = new StanfordCoreNLP(props, false);
    String text = "painting"; 
    Annotation document = pipeline.process(text);  

    List<edu.stanford.nlp.util.CoreMap> sentences = document.get(SentencesAnnotation.class);

    for(edu.stanford.nlp.util.CoreMap sentence: sentences) 

    {    
        for(CoreLabel token: sentence.get(TokensAnnotation.class))
        {       
            String word = token.get(TextAnnotation.class);      
            String lemma = token.get(LemmaAnnotation.class); 
            System.out.println("lemmatized version :" + lemma);
        }
    }

    //...........lemmatization ends.........................

我得到的输出是:-

lemmatized version :painting

我期望的地方

lemmatized version :paint

请赐教

这个例子中的问题是单词 painting 可以是 to paint 的现在分词或名词,词形还原器的输出取决于词性分配给原始单词的标签。

如果你 运行 标注器只在片段 绘画 上,那么就没有上下文可以帮助标注器(或人类)决定单词如何应该被标记。在这种情况下,它选择了标签 NN 并且名词 painting 的词条实际上是 painting.

如果您 运行 与句子 "I am painting a flower." 相同的代码,标记器应该正确地将 painting 标记为 VBG 并且词形还原器应该 return 绘画.