2013-02-27 32 views
0

我有一个个人名称,地址,电话号码等数据集。有些人多次出现,略有变化的名称/和/或收件人和/或电话号码。假数据片段如下所示:固定字符串变量与不同的拼写等

first  last address   phone  
Jimmy  Bamboo P.O. Box 1190 xxx-xx-xx00 
Jimmy W. Bamboo P.O. Box 1190 xxx-xx-xx22 
James West Bamboo P.O. Box 219 xxx-66-xxxx 

...等等。有时候,E.被拼写成东,街和街,有时候不是。

我需要做的就是运行几乎120,000行的数据,以便根据姓名,地址和电话号码来识别每个独特的个人。任何人都有一个线索,可以在不手动运行每条记录的情况下如何完成这项工作?我越盯着它,我越觉得它不可能,不作任何判断的呼吁,并说至少有两个或三个领域是相同的对待这个单一的个人。

谢谢!!

Ani

+0

这听起来像'正expressions'工作。尽管单独使用正则表达式并不容易。(例如,您可以轻松地匹配任何类似于Jxxxxxx Bamboo的任何内容,但它也会与Jacintha Bamboo相匹配。)因此,您可能必须找到常用昵称列表。如果你看看R的“文本挖掘”工具,可能有一些函数可以自动处理这类东西? – 2013-02-28 00:08:05

+0

艰难的路线,试图至少修复名称,以便它们在记录中保持一致。 – Ani 2013-02-28 00:09:14

+0

我会先找到与特定字段完全匹配的条目,然后检查其他字段是否大致相同。在开始担心模糊匹配之前,请查看您可以使用精确匹配减少数据设置的数量。 – Marius 2013-02-28 00:09:24

回答

3

正如我在评论中提到的,这不是小事。您必须根据结果决定程序员时间/解决方案复杂性的权衡。你不会达到100%的结果。你只能接近它,而时间和复杂性成本会增加你接近100%。从一个简单的解决方案开始(完全匹配),并查看哪些问题最常导致错过的匹配。实施模糊解决方案来解决这个问题。冲洗并重复。

有几种工具可以使用(我们全部使用它们)。

1)距离匹配,如Damerau Levenshtein。你可以用这个名字,地址和其他东西。它处理错位如换位,次要拼写,省略字符等。

2)phonetic word matching - soundex不好。还有其他更先进的。我们最终编写了自己的书来处理我们经常遇到的种族混合。

3)昵称查找 - 很多昵称不会被语音或距离匹配 - 像法尼斯的Fanny这样的名字所捕获。有很多这样的昵称。您可以构建对常规名称的昵称查找。请考虑Jennifer - Jen,Jenny,Jennie,Jenee等变体。

名称可能很难。名字的创意拼写似乎是一种当前的时尚。例如,我们的数据库有超过30个名字Kaitlynn的拼写变体,它们都是实际名称的拼写。当你试图将凯蒂与其中任何一个匹配时,这使得昵称匹配变得困难。

这里有类似主题的其他一些答案,我在这里做的计算器:

Processing of mongolian names

How to solve Dilemma of storing human names in MySQL and keep both discriminability and a search for similar names?

MySQL Mixing Damerau–Levenshtein Fuzzy with Like Wildcard