我有一个大约100k名字的列表。这些是人名,公司名称等。名称可以完全匹配或在某些方面有所不同。我也有地址,但地址可能错误或可能不存在。我需要收集并计算每个名称以进行分析。这是一个示例集,
Bank America, N.A
BOA
Bank f Amerca
America Bank
Wells Fargo Bank
Wells Fargo
Wells Fargo, N.A
Fargo Bank
对于Bank of America
,计数将为3,因为America Bank
是不同的。对于Wells Fargo
,计数将为3,因为Fargo Bank
是不同的。
编辑:
不是使用机器学习,另一种选择是使用模糊匹配。我看过difflib和fuzzywuzzy库,但问题是我没有参考列表;逻辑本身必须找出参考(这就是为什么我认为机器学习就是答案)。
所以作为练习,这是第二个数据示例,
John Smith - First instance found, therefore, this is labeled as ID 1
Chase Bank - First instance found, this is labeled as ID 2
John J. Smith - Similar to John Smith, therefore, this is labeled as ID 1
BOA - First instance found, this is labeled as ID 3
Bank of America - Not similar to BOA, therefore labeled as ID 4 (Technically this is BOA but the system will not know this at first)
BOA, N.A. - Similar to BOA, therefore labeled as ID 3
现在让我们来BOA
和Bank of America
。该程序将如何知道这些是相同的?它不会,所以我需要回来并指出BOA
和Bank of America
是相同的。如果我们进入机器学习路线,我可以创建一个新字段并手动指示BOA
和Bank of America
是相同的,然后再次重试该过程以获得更好的结果。但是,让我们说我们想走简单的路线而不是这样做,是否有一个python库可以帮助我?
我需要一个比起实际代码更好的起点。
答案 0 :(得分:0)
我仍然希望尝试使用机器学习,但我已经创建了一个Python解决方案,我将使用FuzzyWuzzy实现。
我将基于数据库循环生成动态参考列表。因此,对于循环1,我将为该Text创建一个唯一的ID。这将存储在表格中。在循环2中,我将查看新表中的记录并尝试匹配它,如果匹配,则将相同的ID分配给下一个记录。如果未找到任何内容,则将使用新的唯一ID将文本添加到新表中。 。 。等等。这种方法避免了机器学习,它可能足以满足当前的一系列要求。
编辑: 我正在添加一个附加表,因此表格如下所示
Table 1 = Unprocessed Source Data
Table 2 = Unique Names
Table 3 = All derivations of Unique Names
我也得到了一个唯一的列表,可以开始使用最常见的名称,并将其添加到表2和表3中。这只是一个起点。