区分人名和公司名称的列表

东西

我有公司列表,但是其中一些公司只是人的名字。我想从名单中删除这些人,但是我很难找到一种方法来识别公司中的人名。

通过在线研究,我尝试了两种方法。首先是使用nltk我的代码看起来像

y = ['INOVATIA LABORATORIES LLC', 'PRULLAGE PHD JOSEPH B', 'S J SMITH CO INC', 'TEVA PHARMACEUTICALS USA INC', 'KENT NUTRITION GROUP INC', 'JOSEPH D WAGENKNECHT', 'ROBERTSON KEITH', 'LINCARE INC', 'AGCHOICE - BLUE MOUND']

在上面的列表中我要删除PRULLAGE PHD JOSEPH BJOSEPH D WAGENKNECHTROBERTSON KEITH

z = []
for company in y:
    tokens = nltk.tokenize.word_tokenize(company)
    z.append(nltk.pos_tag(tokens))

这是行不通的,因为它将所有内容标记为专有名词。然后,我将所有内容都转换为小写字母,并且仅使用来将每个单词的首字母大写.title(),但这也由于类似的原因而失败。

我尝试的另一种方法是使用Human Name Parser模块,但这也行不通,因为它将公司名称标记为人员的名字和姓氏。

有什么方法可以区分人名和公司名吗?

温诺

我不相信您可以完全以编程方式执行此操作,因此将需要一些手动操作。但是,您可以使事情变得简单一些itertools.groupby

正如一些评论中指出的那样,公司可能包含某些关键字,因此我们可以创建要使用的关键字列表:

key_words = ["INC", "LLC", "CO", "GROUP"]

在这里,我们可以根据一个项目是否包含这些关键字之一来对列表进行排序(这是必须进行分组的):

y.sort(key=lambda name: any(key_word in name for key_word in key_words))    

在您的示例中,这将列出

['PRULLAGE PHD JOSEPH B', 'JOSEPH D WAGENKNECHT', 'ROBERTSON KEITH', 'AGCHOICE - BLUE MOUND', 'INOVATIA LABORATORIES LLC', 'S J SMITH CO INC', 'TEVA PHARMACEUTICALS USA INC', 'KENT NUTRITION GROUP INC', 'LINCARE INC']

从这里,我们可以将可能不是公司的事物(不包含任何关键字的事物)和绝对是公司的事物(确实包含关键字的事物)分为以下几类:

import itertools
I = itertools.groupby(y, lambda name: any(key_word in name for key_word in key_words))

因此,我们现在分为两组:

for i in I:
    print i[0], list(i[1])
False ['PRULLAGE PHD JOSEPH B', 'JOSEPH D WAGENKNECHT', 'ROBERTSON KEITH', 'AGCHOICE - BLUE MOUND']
True ['INOVATIA LABORATORIES LLC', 'S J SMITH CO INC', 'TEVA PHARMACEUTICALS USA INC', 'KENT NUTRITION GROUP INC', 'LINCARE INC']

然后,您可以手动对错误的组进行分类并删除公司,或者应用其他类似的过滤器方法来进一步改善匹配度。其他一些要应用的过滤器:

  • 任何包含的东西"MR", "MS", "MRS", "PHD", "DR"很可能是一个人
  • 表单"multiple_letters<space>single_letter<space>multiple_letters"中的单词可能是名称,您可以使用re

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取装配体的公司名称和版权信息

来自分类Dev

在路由mvc中添加和调用公司名称

来自分类Dev

如何单击“搜索公司名称”按钮,输入公司名称并使用 Selenium 和 Python 进行搜索?

来自分类Dev

订单网格的公司名称列

来自分类Dev

Android Studio默认公司名称

来自分类Dev

显示的公司名称,而不是“ https”

来自分类Dev

公司名称?宣称?新专栏?

来自分类Dev

Stripe Checkout 公司名称溢出

来自分类Dev

我想按公司名称的字母顺序对该列表进行排序

来自分类Dev

LinkedIn API获得一级学位联系以及公司名称,职位和行业?

来自分类Dev

地址栏中的https锁定和公司名称

来自分类Dev

将徽标和公司名称放在网页顶部的中心

来自分类Dev

Laravel Auth 通过公司名称、用户名和密码登录

来自分类Dev

在Routes MVC 4中添加公司名称

来自分类Dev

如何在URL(HTTPS)旁边显示公司名称?

来自分类Dev

iTunes Connect:带有特殊字符的公司名称

来自分类Dev

业务/公司名称的SQL varchar列长度

来自分类Dev

如何从IP地址获取公司名称?

来自分类Dev

在两个表中匹配公司名称

来自分类Dev

Freebase查找其他公司名称

来自分类Dev

公司名称与 topnav 在同一行

来自分类Dev

保持公司徽标中的公司名称与ios中的应用名称不同

来自分类Dev

在Windows中获取当前的注册组织名称(公司名称)

来自分类Dev

正确混合使用公司名称的名称字符串

来自分类Dev

正确混合使用公司名称的名称字符串

来自分类Dev

如何从R中的公司名称返回对股票代码名称的查询

来自分类Dev

当我从下拉列表中选择公司名称时,UpdatePanel为AutopostBack = true并且自动填充文本框不起作用

来自分类Dev

Faker gem:如何设置最高 长度/范围 公司名称/号码

来自分类Dev

将公司名称移至最底端的最佳方法是什么

Related 相关文章

  1. 1

    获取装配体的公司名称和版权信息

  2. 2

    在路由mvc中添加和调用公司名称

  3. 3

    如何单击“搜索公司名称”按钮,输入公司名称并使用 Selenium 和 Python 进行搜索?

  4. 4

    订单网格的公司名称列

  5. 5

    Android Studio默认公司名称

  6. 6

    显示的公司名称,而不是“ https”

  7. 7

    公司名称?宣称?新专栏?

  8. 8

    Stripe Checkout 公司名称溢出

  9. 9

    我想按公司名称的字母顺序对该列表进行排序

  10. 10

    LinkedIn API获得一级学位联系以及公司名称,职位和行业?

  11. 11

    地址栏中的https锁定和公司名称

  12. 12

    将徽标和公司名称放在网页顶部的中心

  13. 13

    Laravel Auth 通过公司名称、用户名和密码登录

  14. 14

    在Routes MVC 4中添加公司名称

  15. 15

    如何在URL(HTTPS)旁边显示公司名称?

  16. 16

    iTunes Connect:带有特殊字符的公司名称

  17. 17

    业务/公司名称的SQL varchar列长度

  18. 18

    如何从IP地址获取公司名称?

  19. 19

    在两个表中匹配公司名称

  20. 20

    Freebase查找其他公司名称

  21. 21

    公司名称与 topnav 在同一行

  22. 22

    保持公司徽标中的公司名称与ios中的应用名称不同

  23. 23

    在Windows中获取当前的注册组织名称(公司名称)

  24. 24

    正确混合使用公司名称的名称字符串

  25. 25

    正确混合使用公司名称的名称字符串

  26. 26

    如何从R中的公司名称返回对股票代码名称的查询

  27. 27

    当我从下拉列表中选择公司名称时,UpdatePanel为AutopostBack = true并且自动填充文本框不起作用

  28. 28

    Faker gem:如何设置最高 长度/范围 公司名称/号码

  29. 29

    将公司名称移至最底端的最佳方法是什么

热门标签

归档