Ядро-nlp:

101
12

Я пытаюсь играть с системой разрешения со-ссылки core-nlp. Система работает, как описано в учебнике. Ниже приведен код для него:

public static void main(String[] args) throws Exception {
Annotation document = new Annotation("Barack Obama was born in Hawaii. He is the president. Obama was elected in 2008.");
Properties props = new Properties();
props.setProperty("annotators", "tokenize,ssplit,pos,lemma,ner,parse,mention,coref");
StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
pipeline.annotate(document);
System.out.println("---");
System.out.println("coref chains");
for (CorefChain cc : document.get(CorefCoreAnnotations.CorefChainAnnotation.class).values()) {
System.out.println("\t" + cc);
}

который выводит:

CHAIN3-["Barack Obama" in sentence 1, "He" in sentence 1]

То, что я пытаюсь получить, - это карта, которая показывает

Key | Value
He : Barack Obama
Obama: Barack Obama

Есть ли встроенный метод для достижения этого или мне нужно выполнить его послепроцесс (не только для карты)?

спросил(а) 2021-01-19T12:52:50+03:00 6 месяцев, 2 недели назад
1
Решение
64

На данный момент для этого нет кода. Вот фрагмент, в котором будет напечатано упоминание о блеске, информации о местоположении и каноническом упоминании:

for (CorefChain cc : document.get(CorefCoreAnnotations.CorefChainAnnotation.class).values()) {
CorefChain.CorefMention representativeMention = cc.getRepresentativeMention();
for (CorefChain.CorefMention cm : cc.getMentionsInTextualOrder()) {
String position = "sentence num: "+cm.sentNum+" position: "+cm.startIndex;
System.out.println(cm.mentionSpan + "\t" + position + "\t" + representativeMention.mentionSpan);
}

}

ответил(а) 2021-01-19T12:52:50+03:00 6 месяцев, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема