如何在Lucene中进行实体提取

如何在Lucene中进行实体提取,lucene,named-entity-extraction,Lucene,Named Entity Extraction,我试图在Lucene中进行实体提取(更像是匹配)。以下是一个示例工作流: 给定一些文本(来自URL)和人名列表,尝试从文本中提取人名 注: 人名并不完全相同 正常化。e、 有些是X先生,太太。 Y和一些只是无名氏,X和Y。 其他前缀和后缀需要考虑 关于小,老,博士,I,II。。。 等等(不要让我从非 美国姓名) 我正在使用Lucene为每个Url中的文本创建内存索引(剥离html标记),并使用StandardAnalyzer查询所有名称的列表,一次一个(100k个名称,是否有其他方法可以做到这一

我试图在Lucene中进行实体提取(更像是匹配)。以下是一个示例工作流:

给定一些文本(来自URL)和人名列表,尝试从文本中提取人名

注:

人名并不完全相同 正常化。e、 有些是X先生,太太。 Y和一些只是无名氏,X和Y。 其他前缀和后缀需要考虑 关于小,老,博士,I,II。。。 等等(不要让我从非 美国姓名)

我正在使用Lucene为每个Url中的文本创建内存索引(剥离html标记),并使用StandardAnalyzer查询所有名称的列表,一次一个(100k个名称,是否有其他方法可以做到这一点?以平均值计算。这大约需要8秒。就我的平均文本而言)

一个主要的问题是,为了消除噪音,我使用0.01的分数作为基本分数,如果文本中包含“John Doe”,并且在许多情况下未达到0.01的阈值,那么像“John Doe先生”这样的查询比“John Doe”的分数要低得多

另一个问题是,如果我将所有的名字正常化,并开始删除Dr.Mr.Mr.Mrs.等的所有出现,那么我就会开始错过像“Dr.John Edward II”这样的好匹配,最后出现很多像“Mr.John Edward”这样的垃圾匹配


我知道Lucene可能也不是这份工作的合适工具,但到目前为止,它还没有被证明太糟糕。感谢您的帮助。

NEE是一项NLP任务,不属于lucene的一部分。对于开源,您可以查看lingpipe和gate以及opennlp。有各种赚钱的选择


GATE完全是基于规则的,很难实现高精度。你需要一个统计引擎;lingpipe有一个,但您必须提供培训数据。我不了解opennlp在这方面的最新内容。

人名消歧是出了名的困难。如果您有其他信息,如位置或名称的共现,这将是有价值的。但是在作者消歧方面还有很多工作要做,通常不能仅仅从一个名字列表中解决

这是一个典型的项目。和一份典型的出版物


下面是一个关于记录重复数据消除的项目,我们发现它对消除作者歧义非常有用

这些项目可能对您有用:

OpenNPL很有用

该网站有文档和示例

对于完全没有经验的人 这本书提供了一个很好的概述。您也可以从上面的链接下载本书的源代码。

您可以试试这个。。

文档很清楚,您也可以使用dbpediaspotlightwebservice


我们尝试了Gate,但遇到了类似的问题。假阳性率高。这并不一定是坏事,但我们正在尽可能地调整它。好吧,我们中的一些人为了钱而出售这些东西是有原因的。如果您对商业解决方案感兴趣,请就此发表评论,我将向您发送一个联系人。