从非结构化数据中提取名称实体

尼拉里·科达(Nirali Khoda)

我有高度非结构化的数据,我想从中提取全名。数据是这样的

txt = " 663555 murphy rd suite 106 richardson tx 7508 usa 111 it park indore 452 010 india ph 91 987 4968420 123456789 sumeetlogikviewcom  Nirali Khoda cofounder analytics pvt ltd ideata  a comprehensive data analytics platform"

text = "dicictay  8 8 8 bf infotech pvt ltd manager infotech pvt ltd  redefining technologies 91 12345 12345 zoeb fatemi "

我尝试过spacy和standfordNER,但效果不佳。它从这样的地址给我起名字

en = spacy.load('en_core_web_md')

txt = txt.title().strip()

sents = en(txt)

people = [ee for ee in sents.ents if ee.label_ == 'PERSON']

输出是这样的:

[663555 Murphy Rd Suite, Analytics Pvt Ltd Ideata]

预期产量:

[Nirali Khoda]

帮助将不胜感激。谢谢 :)

登林格

在开始之前,我想提一下,我改用spacy.load("en_core_web_lg")了我的代码-这似乎会极大地影响解析结果,因此这可能是解决问题的初始方法。
我也没有在本地运行StanfordNER的安装,因此我改用了他们提供的Web界面

正如您已经提到的那样,由于您的“句子”缺乏任何内聚结构,因此NER的问题在这种情况下是有问题的。问题是mos NER的准确性来自上下文信息,而您的情况显然不够。
在上面提到的Web界面中,通过解析您的示例中的一个句子也可以很好地看到这一点:解析后的句子树看起来非常可怕(显然),并且从那里我们可以接受的东西很多。

我还使用SpaCy解析了第一句话,在查看可识别的实体时得到了以下结果:

663555 DATE
106 Richardson PERSON
Tx GPE
7508 DATE
Usa GPE
111 CARDINAL
Park Indore GPE
452 010 CARDINAL
India GPE
91 CARDINAL
987 CARDINAL
123456789 DATE
Sumeetlogikviewcom PERSON
Nirali Khoda Cofounder Analytics Pvt Ltd Ideata ORG
Comprehensive Data Analytics Platform ORG

正如我们所看到的,这里的问题是双重的:不仅您名字中的实例标签错误(ORG而不是PERSON),而且还表明最初拆分为不同实体存在问题。

我假设您具有某种访问数据提取管道的方式,并且不会“盲目地”从其他地方获取这些信息。这一点特别重要,因此您可以在不同的容器之间引入某种形式的分隔。尽管大多数预处理器都有某种形式的锅炉(删除HTML标记并“统一”它们),但某种形式的分隔可能对您有好处:我对输入内容做了一些改动:

txt = " 663555 murphy rd suite 106 richardson tx 7508 usa , 111 it park indore 452 010 india ph 91 987 4968420 123456789 , sumeetlogikviewcom ,  Nirali Khoda , cofounder analytics pvt ltd , ideata  a comprehensive data analytics platform"

然后,我再次执行了相同的处理,然后-看一下-得到以下结果:

663555 DATE
106 Richardson PERSON
Tx GPE
7508 DATE
Usa GPE
111 CARDINAL
Park Indore GPE
452 010 CARDINAL
India GPE
91 CARDINAL
987 CARDINAL
123456789 DATE
Sumeetlogikviewcom PERSON
Nirali Khoda PERSON
Cofounder Analytics Pvt Ltd ORG
Ideata   ORG

这次,结果既被正确拆分,又被(更多)正确分类。显然,您仍然无法获得理想的结果,但是NER很少出现这种情况。

如果您只想识别名称,则也可以使用更粗略的方法“手动解析”它们,而不管基础实体是什么:您可能希望让SpaCy或CoreNLP拆分不同的实体,然后-与实际的标签无关-检查每个实体是否包含一组通用的名字/姓氏中包含的令牌(例如,可以在此处找到美国的数据)。我确信存在更全面的列表,如果您只是在寻找名称,这可能是一个很好的替代。当然,这也不太可能完美地解决您的问题(例如,丰田汽车,它在日语中也是很常见的姓氏;或者像普罗珀先生这样的东西,(对于计算机)也很可能是“人”。 ”)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从非结构化消息中提取数据的模式

从高度非结构化的网页中提取数据

Python-使用NLTK从非结构化文本(NLP)中提取实体(名词短语)的关系

在非结构化数据中提取excel中的邮政编码

使用Python从大型非结构化文本文件中提取数据元素

从网址中提取名称实体

从 hashref 中提取各种结构化数据

UIMA,从文本中提取半结构化(表格)数据

从非结构化字符串中提取JSON字符串

从非结构化文本中提取字符串值

从非结构化字符串中提取键值对的最佳方法?

将非结构化数据(连接的文本字符串)转换为可使用、可读的格式/从字符串中提取数据点

从文本中提取名称

尝试从结构化格式的字符串中提取数据

读取非结构化数据熊猫

Cassandra和非结构化数据

从数据字符串中提取名称

如何从结构化字符串中提取单词?

从PDF文件中提取表结构化文本

如何在非结构化数据中的特定字符串之前提取日期?

如何将非结构化数据文件提取到 json 对象上

如何提取非结构化的excel文件数据(仪表盘数据)并将其导出为结构化的干净数据

用R从非结构化文本文件中提取不同长度的数字(纬度和经度)

如何将这些非结构化数据转化为结构化数据?

Python - 解析半结构化文本并提取到结构化数据

以编程方式从一堆网页中提取结构化数据的最简单方法是什么?

使用R从具有相同格式的多页pdf文件中提取特定的结构化数据

从混乱的文件中提取名称

使用dplyr从列表中提取名称