7

我想使用 OpenNLP进行“共指解析” 。来自 Apache 的文档(Coreference Resolution)不包括如何进行“coreference resolution”。有没有人有任何文档/教程如何做到这一点?

4

2 回答 2

12

我最近遇到了同样的问题,并写了一些关于使用 OpenNLP 1.5.x 工具的博客笔记。整个复制有点密集,所以这里有一个链接,里面有更多细节


在高层次上,您需要加载适当的OpenNLP 共指模型库以及WordNet 3.0 字典。鉴于这些依赖关系,初始化链接器对象非常简单:

// LinkerMode should be TEST
//Note: I tried LinkerMode.EVAL before realizing that this was the problem
Linker _linker = new DefaultLinker("lib/opennlp/coref", LinkerMode.TEST);

然而,使用链接器就不太明显了。你需要:

  1. 将内容分解为句子和相应的标记
  2. 为每个句子创建一个 Parse 对象
  3. 包装每个句子 Parse 以指示句子顺序:

    final DefaultParse parseWrapper = new DefaultParse(parse, idx);
  4. 遍历每个句子解析并使用链接器从每个解析中获取 Mention 对象:

    最终提及 [] 范围 =
       _linker.getMentionFinder().getMentions(parseWrapper);
  5. 最后,使用链接器识别所有 Mention 对象中的不同实体:

    DiscourseEntity[] 实体 = _linker.getEntities(arrayOfAllMentions);
于 2012-12-06T18:38:50.907 回答
9

目前几乎没有关于 OpenNLP 的共指解析文档,除了在自述文件中简短地提到了如何运行它

如果您不打算使用 OpenNLP,那么请考虑使用Stanford CoreNLP 包,其中包含一个 Java 示例,说明如何运行它,包括如何使用该包执行共指解析。它还包括一个总结其性能的页面,以及发表在 coreference 包上的论文

于 2012-02-27T04:56:13.700 回答