使用OpenNLP进行共指解决

Kha*_*rul 7 nlp opennlp

我想使用OpenNLP进行"共识解析".来自Apache的文档(Coreference Resolution)未涵盖如何进行"共同参考解析".有没有人有任何文档/教程如何做到这一点?

dpd*_*ing 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);
Run Code Online (Sandbox Code Playgroud)

但是,使用链接器有点不太明显.你需要:

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

    final DefaultParse parseWrapper = new DefaultParse(parse, idx);
  4. 迭代每个句子解析使用链接器从每个解析中获取提及对象:

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

    DiscourseEntity[] entities = _linker.getEntities(arrayOfAllMentions);


Chr*_*ris 9

OpenNLP目前几乎没有共识解决方案文档,除了非常简短地提到如何在自述文件中运行它.

如果您没有投资使用OpenNLP,那么请考虑使用Stanford CoreNLP软件包,其中包括如何运行它的Java示例,包括如何使用软件包执行共参考解析.它还包括一个总结其性能的页面,以及在coreference包上发布的论文.