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));
}
}
}