当前位置: 首页 > 知识库问答 >
问题:

使用OpenNLP链接多个名称查找器实体

山鸿彩
2023-03-14

首先是一点背景:我试图在一个文档库中识别街道地址,我们决定,显而易见的解决方案是使用NLP(本例中为Apache OpenNLP)工具来实现这一点,到目前为止,一切看起来都很好,尽管我们仍然需要用大量文档来训练模型,但这并不是一个真正的问题。我们通过使用DataMake中的USAddress解析器,为地址验证添加了额外的步骤,从而改进了解决方案。我最大的问题是,如果地址旁边没有一个位置,地址本身就什么都不是,有时位置是在文本中指定的,我们假设这种情况经常发生。

我的问题来了:有没有办法使用共指来关联文本中的实体?或者更好的是,有没有一种方法可以对文本中的任意单词进行注释,并将它们标识为一个实体?

我一直在看ApacheOpenNLP文档,但是。。。它很薄,我认为它还需要一些改进。

共有3个答案

柯国安
2023-03-14

好吧,几个月后!我追求的不是Coref。。。我实际上在寻找的是关系提取(信息提取)。我使用了MITIE(BinaryRelation),这就成功了,我使用Brat注释工具训练了自己的模型,我得到了0.81的F1分数。非常整洁。。。

秦联
2023-03-14

<罢工> OpenNLP不提供共引用解析模块。 你必须使用斯坦福或伊利诺伊或伯克利系统来完成任务。他们可能不会开箱即用,你可能必须做一些参数调整或监督训练来达到合理的性能。

@编辑
感谢@Alaye指出OpenNLP确实有一个coref模块,更多细节请参见他的答案

谢谢

张和豫
2023-03-14

如果你想使用共指来解决这个问题,你可以看看这个博客

但是一个更简单的解决方案是使用句子检测器RegEx或位置NER句子检测器(假设地址在一行中)

我认为可以使用正则表达式识别美国地址,一旦正则表达式匹配,就可以使用opennlp的句子检测器打印整个地址行。

同样,您可以使用opennlp提供的NER模型来查找位置并打印所需的句子。

希望这有帮助!

编辑

这次Github回购让我们变得简单。过来看!

 类似资料:
  • 我正在使用OpenNLP的NameFinder API示例文档。初始化名称查找器后,文档使用以下代码作为输入文本: 然而,当我将其引入eclipse时,“documents”(而不是“document”)变量给了我一个错误,表示变量documents无法解析。“documents”数组变量所指的文档是什么?我是否需要初始化一个名为“documents”的数组,该数组包含txt文件,以消除此错误?

  • 我正在使用Apache Open NLP的NER。我已经成功训练了我的自定义数据。在使用名称查找器时,我正在根据空白拆分给定的字符串并传递字符串数组,如下所示。 在这里,当我使用split时,test和case作为单独的值给出,namefinder永远不会检测到它们。我将如何克服上述问题。是否有一种方法可以传递完整的字符串(而不将其拆分为数组),这样,测试用例本身就可以被视为一个整体?

  • 我试图使用ApacheOpenNLP来识别文本中的日期实体。我创建了一个小java程序,该程序使用以下格式的一系列日期生成标记: 每个标签都是OpenNLP定义格式的句子。 我生成了大约40万条条目,并对模型进行了培训。培训结束后,我试图通过命令行使用TokenNameFinder来验证一切是否正常,但对于每个单词,我都键入finder,并将其标识为日期实体。例如,当我打字时: 我得到的是: 我想

  • 根据文档中的指南,我试图在一些数据上测试training OpenNLP的Name Finder。然而,我遇到了错误:,这似乎没有任何意义。 我运行的命令是: 我从https://opennlp.apache.org/download.html.环境变量似乎设置正确,基本文件夹中的文件夹包含一个文件夹。 编辑:这似乎与CoNLL2003格式有关。如果我尝试直接运行训练器而不指定它就可以工作。但是我

  • 我有这个html页面: 我成功地插入了列表中的所有链接: 但如何插入类别的名称?像这样:“动作,冒险........”

  • 我是openNlp的新手。我开始训练一个模型(TokenNameFinderTrainer),以识别名称。到目前为止还不错,但现在我想识别组织(例如“Microsoft”)。 我的问题是:opennlp默认识别哪些类型的实体?(如果有的话...) 我看到它可以处理