2

我有句子(文本 I)

汤姆是个聪明的男孩。知道很多事情。

我想把第二句中的He改成Tom,所以最后的句子会变成(Text 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);

我想知道我是否做错了,以及接下来我应该怎么做才能从Text I获取Text II。 PS:我使用的是斯坦福 CoreNLP 1.3.0。

谢谢。

4

1 回答 1

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

这是一种旧的 coref 输出格式。

您可以将此行更改为

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

或者您可以使用以下oldCorefFormat选项:

props.put("oldCorefFormat", "true");
于 2012-01-08T23:37:38.957 回答