如何使用Stanford NLP解析器中的BagOfWordsAnnotation?

时间:2017-07-13 09:15:44

标签: java stanford-nlp

我找不到与list of annotation中的词袋相关的任何内容。我发现有一个用于获取词袋的注释类,我认为它用作:

coreMap.get(CoreAnnotations.BagOfWordsAnnotation.class);

但我不知道应该启用哪个注释器。到目前为止,我已经尝试过:

tokenize, ssplit, pos, lemma, ner, parse, sentiment, natlog, openie

但没有运气。

如何使用Stanford NLP解析器中的BagOfWordsAnnotation

1 个答案:

答案 0 :(得分:0)

那不就是使用tokenize注释的输出吗?或者,更复杂的lemmatisation输出? (取决于你的用例)像这样,例如:

Properties props;
props = new Properties();
props.put("annotators", "tokenize, ssplit, pos, lemma");
pipeline = new StanfordCoreNLP(props);

public static List<String> lemmatize(String documentText)
{
    List<String> lemmas = new LinkedList<String>();
    Annotation document = new Annotation(documentText);

    pipeline.annotate(document);
    List<CoreMap> sentences = document.get(SentencesAnnotation.class);
    for(CoreMap sentence: sentences) {
        for (CoreLabel token: sentence.get(TokensAnnotation.class)) {
            lemmas.add(token.get(LemmaAnnotation.class));
        }
    }
    return lemmas;
}

我从来没有听说过这个注释器,如果它存在,我会发现有点令人惊讶,因为它基本上是标记化,可能通过一些禁用词剥离增加,你可以轻松地自己做,或使用其他(较少的NLP)面向Lucene的,面向更多IR的软件包。