Stanford NLP: How to lemmatize single word?

stanford-nlp

Solution

There are two options: you can either annotate you `Annotation` object through a `StanfordCoreNLP` pipeline:

StanfordCoreNLP pipeline = new StanfordCoreNLP(new Properties(){{
  setProperty("annotators", "tokenize,ssplit,pos,lemma");
}});

Annotation tokenAnnotation = new Annotation("wedding");
pipeline.annotate(tokenAnnotation);  // necessary for the LemmaAnnotation to be set.
List<CoreMap> list = tokenAnnotation.get(SentencesAnnotation.class);
String tokenLemma = list
                        .get(0).get(TokensAnnotation.class)
                        .get(0).get(LemmaAnnotation.class);

The other option is to use the SimpleCoreNLP API:

String tokenLemma = new Sentence("wedding").lemma(0);

Problem

I know how I can annotate a sentence and get the lemma of each word but I don't know how to do it if I just want to lemmatize a single word. I tried ``` Annotation tokenAnnotation = new Annotation("wedding"); List<CoreMap> list = tokenAnnotation.get(SentencesAnnotation.class); String tokenLemma = list .get(0).get(TokensAnnotation.class) .get(0).get(LemmaAnnotation.class); ``` but the `tokenAnnotation` has only one `TextAnnotation` key which means `list` will be `null`here. So how can I lemmatize a single word?

Original source