Java 确认实体的最佳方法

Java 确认实体的最佳方法,java,nlp,text-mining,opennlp,named-entity-recognition,Java,Nlp,Text Mining,Opennlp,Named Entity Recognition,我想了解解决以下问题的最佳方法 我有与简历/简历非常相似的文档,我必须提取实体(姓名、姓氏、生日、城市、zipcode等) 为了提取这些实体,我结合了不同的查找程序(Regex、Dictionary等) 这些发现者没有问题,但是,我正在寻找一种方法/算法或类似的东西来确认实体 “确认”的意思是我必须在近处(更接近我找到的实体)找到特定的术语(或实体) 例如: My name is <name> Name: <name> Name and Surname: <name

我想了解解决以下问题的最佳方法

我有与简历/简历非常相似的文档,我必须提取实体(姓名、姓氏、生日、城市、zipcode等)

为了提取这些实体,我结合了不同的查找程序(Regex、Dictionary等)

这些发现者没有问题,但是,我正在寻找一种方法/算法或类似的东西来确认实体

“确认”的意思是我必须在近处(更接近我找到的实体)找到特定的术语(或实体)

例如:

My name is <name>
Name: <name>
Name and Surname: <name>
我的名字是
姓名:
姓名:
我可以确认实体
,因为它更接近于让我理解“上下文”的特定术语。如果我在实体附近有“姓名”或“姓氏”单词,那么我可以说我很有可能找到了

因此,我们的目标是编写这些规则来确认实体。另一个例子应该是:

我的地址是……,00143罗马

意大利语Zipcode的长度为5位数(仅限数字),在我的文档中很容易找到一个5位数的数字(正如我上面所写的,我使用regex),我还通过查询数据库来检查它,以了解该数字是否存在。这里的问题是,我需要再检查一次以确认(肯定)它

我必须查看该编号是否靠近实体
,如果是,则确定。。。我有很好的可能性

我还试着训练一个模型,但我没有真正的“上下文”(句子)。 通过以下方式培训模型:

My name is: <name>John</name>
Name: <name>John</name>
Name/Surname: <name>John</name>
<name>John</name> is my name
我的名字是:约翰
姓名:约翰
姓名:约翰
约翰是我的名字
听起来不太好,因为:

  • 我已经读过了,我们需要很多句子来培养一个好的榜样
  • 这些不是“句子”,我没有“上下文”(记得我说过文档类似于简历/简历的地方)
  • 也许那些短语太短了
  • 我不知道我能找到多少种不同的方式来表达确切的意思,但我肯定找不到15000种方式:)

    我应该使用什么方法来确认我的实体

    非常感谢你

    问题陈述 首先,我不认为将任务分解为两个步骤(提取和确认)是最好的,只要我不遗漏问题中的一些细节。如果我理解正确,您的目标是以最大的精确度和召回率从文档集中提取结构化信息,如姓名/城市/等;这两种度量都可能更重要,但通常它们的权重相等-例如,使用F1度量

    先评估 “你无法控制你无法测量的东西”

    我建议首先准备评估系统和标记数据集:对于每个文档,找到正确的名称/城市/等-可以完全手动(这更“真实”,但更困难)或半自动完成,例如通过应用某些方法,包括正在开发的方法,并纠正其错误(如果有)。 评估系统应该能够计算准确度和召回率(请参阅,以便自己轻松实现)

    至于它的大小,我不必担心需要准备太大的数据集:当然,越多越好,但对于复杂(明显非线性)任务和很多特性的情况来说,这是至关重要的。我相信100-200份文件就足以让您的案例启动,而且需要几个小时来准备

    然后,您可以基于regexp和字典评估您的简单提取器——如果不同的方面(名称或城市)有不同的度量标准,则效果最好。根据结果,您的操作可能会有所不同

    低精度-添加更多特定功能 如果方法显示的精度太低,即提取的错误项太多,则应添加特异性或特定特征;我会在专门用于信息提取的科学论文中搜索这些信息,这些信息涉及到那些针对特定信息类型的信息,无论是姓名或地址,或是一些更模糊的信息,比如技能,如果你对这些信息感兴趣的话。例如,许多致力于简历解析的论文(如[]和[])都注意到姓名通常放在文本的最开头;或者城市的前面通常有“at”。 我不知道你们文件的细节,但我怀疑它们违反了这种模式

    此外,将命名实体识别器的输出视为一项功能(另请参见)可能非常有用且容易

    同样,分析NERC使用的方法更难但更好,并使其适应您的任务和文档的具体情况

    这些特征可以通过任何有监督的机器学习进行聚合(如果您没有太多经验,可以从Logistic回归和随机森林开始):您知道评估数据集中的肯定和否定(全部但不是肯定)答案,只需将它们转换为特征空间并提供给一些类似的ML库

    低召回率-提取更多候选对象 如果该方法显示的召回率太低,即遗漏了很多项,那么您应该扩展候选集-例如,开发限制较少的模式,在字典查找中添加模糊匹配(查看或字符串度量)

    另一种选择是应用词性标记,并将每个名词作为候选词——可能是某些信息项的每个专有名词,或者是名词双格,或者添加其他弱限制。在这种情况下,您的精度很可能会降低,因此必须考虑上面的段落

    注意:如果您的数据来自Web(例如LinkedIn的个人资料),请尝试通过关键字“Web数据提取”进行搜索或查看import.io

    文学类 只是一些随机的,尝试搜索,最好从调查开始

  • 雷努卡·S·阿纳米,高里·R·拉奥。自动轮廓提取与识别 采用斯坦福算法进行分类。国际医学杂志 创新技术与探索工程(IJITE)ISSN: 2278-3075,第4卷第7期,2014年12月()

  • Swapnil声纳。使用命名实体群集恢复解析 算法。2015 ()