Stanford NER для словосочетаний или сложных слов

Я заметил, что corenlp.run может определить "10 утра завтра" и разобрать его как время. Но учебное пособие и документы, которые я видел, допускают только одно слово в строке. Как мне понять фразу. На связанной ноте, есть ли способ пометить составные объекты?

1 ответ

Решение

Подобные фразы, относящиеся ко времени, распознаются библиотекой SUTime. Более подробную информацию можно найти здесь: https://nlp.stanford.edu/software/sutime.html

Существует функция для извлечения сущностей после ner пометка была сделана.

Например, если вы пометили предложение: Joe Smith went to Hawaii . как PERSON PERSON O O LOCATION O вы можете извлечь Joe Smith а также Hawaii, Это требует entitymentions аннотатор.

Вот пример кода:

package edu.stanford.nlp.examples;

import edu.stanford.nlp.pipeline.*;
import edu.stanford.nlp.ling.*;
import edu.stanford.nlp.util.*;

import java.util.*;

public class EntityMentionsExample {

  public static void main(String[] args) {
    Annotation document =
        new Annotation("John Smith visited Los Angeles on Tuesday.");
    Properties props = new Properties();
    //props.setProperty("regexner.mapping", "small-names.rules");
    props.setProperty("annotators", "tokenize,ssplit,pos,lemma,ner,entitymentions");
    StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
    pipeline.annotate(document);

    for (CoreMap entityMention : document.get(CoreAnnotations.MentionsAnnotation.class)) {
      System.out.println(entityMention);
      //System.out.println(entityMention.get(CoreAnnotations.TextAnnotation.class));
      System.out.println(entityMention.get(CoreAnnotations.EntityTypeAnnotation.class));
    }
  }
}
Другие вопросы по тегам