在名称列表中提取名称

数据挖掘 nlp 信息检索 nltk 命名实体识别 斯坦福-nlp
2022-03-08 06:38:42

我被提供了一个文本清理任务,我假设这涉及到一些自然语言处理。

我有一组没有任何特定模式的名称,我需要从该列表中分离出各个名称。

下面是一个例子:

John Batista Barack Obama George W. Bush Serafim Batzoglou Vijay Pande Fei Fei Li Oussama Khatib Kwame Nkrumah John Oliver

如您所见,该段落有两点特别之处。

1) 空格“”是唯一的分隔符,但是,它是不可用的,因为有些名字有中间名。

2) 我有法语、德语、西班牙语、汉语和其他民族发音用英语写的名字。

现在我面临的挑战是从这一段中找到名字。我对 NLP 非常陌生,使用 Python 和 R 进行建模工作。

任何帮助将不胜感激。

1个回答

我不是这里的专家,所以这是我的(蛮力?)方法。

SeatGeek 开源了一个名为fuzzywuzzy的python 库,它非常适合文本匹配。它有一个称为token_set_ratio比较两个多词字符串并对其距离进行评分的函数。它可以只考虑单个单词的交集,并且只对那个交集进行评分。例如,“Barack Obama Bill Clinton Madeleine Albright”将在“Bill Clinton”中获得 100 分,但在“Bill Barack”中也将获得 100 分。

你需要建立一个已知名字的列表,根据他们是名人的列表来判断,快速的谷歌搜索会显示数百个为你准备好的网站。使用该列表,您可以循环遍历,计算分数token_set_ratio如果著名的名字超过了你的字符串的某个阈值分数,你将它附加到捕获的名字列表中。