我有一个名单列表,其中一些是假的,我需要使用NLP和Python 3.1保留真实姓名并丢弃假名

时间:2010-03-08 04:49:51

标签: python-3.x nlp

我不清楚从哪里开始。我从未做过任何NLP,只在Python 3.1中编程,我必须使用它。我正在查看网站http://www.linkedin.com,我必须收集所有的公开个人资料,其中一些有非常虚假的名字,比如'aaaaaa k dudujjek',我被告知我可以使用NLP找到真名,我甚至可以从哪里开始?

3 个答案:

答案 0 :(得分:3)

这是一个难以解决的问题,并且首先要获得有效的给定名称&姓氏列表。

您正在评估的名称集有多大,它们来自哪里?这些都是您需要考虑的重要事项。如果您正在评估一小组“美国”名称,例如,您的有效名单与日语或印度名称列表会有很大不同。

你在抓住LinkedIn方面的想法是正确的,但你抓住假的个人资料/名称缺陷是正确的。一个更好的网站可能是像IMDB(可能是名称by iterating over different birth years),或维基百科的most popular given namesmost common surnames列表。

当谈到它时,这是一个精确与召回的问题:为了错过更少的假货,你不可避免地会抛出一些真实的名字。如果放宽限制,你会获得更多假货,但你也会减少真实姓名。

答案 1 :(得分:1)

这里有几种可能性,但最明显的似乎是HMM,即Hidden Markov ModelsNLTK套件包含[至少]一个HMM模块,但我必须承认我从未使用它。

另一个可能的障碍是AFAIK,NTLK尚未移植到Python 3.0

这就是说,虽然我非常热衷于在适用的情况下使用NLP技术,但我认为使用几种范例(包括一些NLP技巧)的过程可能是解决这一特定问题的更好解决方案。例如,在传统数据库中存储常见姓氏(和名字)的简化字典可以提供更可靠且计算效率更高的方法来过滤输入数据的重要部分,从而留下宝贵的CPU资源用于不那么明显的案例。

答案 2 :(得分:0)

如果你的名单甚至只是最低限度的“开放”,我担心这个问题是无法解决的 - 如果这些名字是来自传统行动的小人群的客户,你最终可能会为成千上万的人提供几百个名字。但一般来说,你几乎无法预测什么是真实姓名,什么不是真实姓名,不过阿拉伯语,中文或班图语名称可能会出现在南英语乡村社区名称的样本中。我的意思是,'Ng'是一个普通的粤语姓氏,'O'在韩国很常见,所以假设可能会失败。在奥地利这个地方被称为'他妈的',所以即使寻找四个字母的单词也无法保证成功。

你可以做的是通过一个足够大的这样的名称样本并手动排序。然后,使用各种文本处理工具并收集指标。也许你可以获得某个名称的可能性被认为是假的,也许它不可行。但是,你永远不会超越这里的可能性。

另外,我们过去常常使用谷歌地图和电话簿来验证客户数据。如果谷歌地图可以找到该地方,我们称该地址已经过验证。很明显,在更严格的要求下,真正的验证必须更进一步。让我们不要忘记,这些数据的验证更像是一个社会问题,而不是一个语言问题。