Разрешение анафоры с использованием Stanford Coref - PullRequest
2 голосов
/ 07 января 2012

У меня есть предложения (Текст I) :

Том умный мальчик. Он много чего знает.

Я хочу изменить Он во втором предложении на Том , поэтомуокончательные предложения станут (Текст II) :

Том умный мальчик. Том много чего знает.

Я написал некоторый код, но мой coref объект всегда null .
Кроме того, я понятия не имею, что делать дальше, чтобы получить правильный результат.

    String text = "Tom is a smart boy. He know a lot of thing.";
    Annotation document = new Annotation(text);
    Properties props = new Properties();
    props.put("annotators", "tokenize, ssplit, pos, parse, lemma, ner, dcoref");
    StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
    pipeline.annotate(document);

    List<Pair<IntTuple, IntTuple>> coref = document.get(CorefGraphAnnotation.class);

Я хочу знать, если я делаю это неправильнои что я должен делать дальше, чтобы получить Текст II от Текст I .
PS: Я использую Stanford CoreNLP 1.3.0.

Спасибо.

1 Ответ

2 голосов
/ 09 января 2012
List<Pair<IntTuple, IntTuple>> coref = document.get(CorefGraphAnnotation.class);

Это старый формат вывода coref.

Вы можете изменить эту строку на

Map<Integer, CorefChain> graph = document.get(CorefChainAnnotation.class);

или использовать параметр oldCorefFormat:

props.put("oldCorefFormat", "true");
...