我有一个公司名单,但其中一些公司只是人名。我想从名单中排除这些人,但我无法找到一种方法来识别公司的人名。区分人名和公司名称之间的清单
通过在线研究,我尝试了两种方法。首先是使用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 B
,JOSEPH D WAGENKNECHT
和ROBERTSON KEITH
。
z = []
for company in y:
tokens = nltk.tokenize.word_tokenize(company)
z.append(nltk.pos_tag(tokens))
这不起作用,因为它将所有内容都标记为专有名词。然后我放下所有东西,并且只使用.title()
使每个单词的首字母大写,但是由于类似的原因,这也失败了。
我尝试的另一种方法是使用Human Name Parser
模块,但这也不起作用,因为它将公司名称标记为该人的姓名。
有没有一种方法可以区分上面列出的人名和公司名称?
是,清单?如果是这样,你错过了一些逗号,并且你的报价出了点怪异 – depperm
听起来更像是一个机器学习问题。你如何期待NLTK知道“公司”的定义?你必须告诉它(INC,LLC,CO,GROUP)都是关键字 –
我的错我把它列为一个正确的列表。 – Jstuff