统计未分类和未知名称

我有一份大约10万个名称的列表。这些名称包括个人姓名、公司名称等,名称可能是完全匹配的,也可能在某些方面有所不同。我也有一些地址,但这些地址可能是错误的或者不存在。我需要收集并统计每个名称以进行分析。以下是一个示例集,

Bank America, N.ABOABank f AmercaAmerica BankWells Fargo BankWells FargoWells Fargo, N.AFargo Bank

对于Bank of America,计数将是三,因为America Bank是不同的。对于Wells Fargo,计数也将是三,因为Fargo Bank是不同的。

编辑:

除了使用机器学习之外,另一种选择是使用模糊匹配。我已经查看了difflib和fuzzywuzzy库,但问题是我没有参考列表;逻辑本身需要找出参考(这就是我认为机器学习是答案的原因)。

因此,作为练习,这里是第二个数据示例,

John Smith - 首次发现,因此标记为ID 1Chase Bank - 首次发现,标记为ID 2John J. Smith - 与John Smith相似,因此标记为ID 1BOA - 首次发现,标记为ID 3Bank of America - 与BOA不相似,因此标记为ID 4(技术上这是BOA,但系统起初不会知道)BOA, N.A. - 与BOA相似,因此标记为ID 3

现在让我们看看BOABank of America。程序如何知道它们是相同的?它不会知道,所以我需要返回并指出BOABank of America是相同的。如果我们选择机器学习的路线,我可以创建一个新字段,手动指出BOABank of America是相同的,然后重新尝试这个过程以获得更好的结果。但假设我们想走简单路线,不这样做,有没有Python库可以帮助我?

我更需要一个好的起点而不是实际的代码。


回答:

我仍然想尝试使用机器学习,但我已经创建了一个Python解决方案,我将使用FuzzyWuzzy来实现。

我将基于对数据库的循环生成一个动态参考列表。因此,在第一次循环中,我将为该文本创建一个唯一ID。这将被存储在一个表中。在第二次循环中,我将查看新表中的记录并尝试匹配,如果有匹配,该ID将被分配给下一条记录。如果没有找到匹配的文本,该文本将被添加到新表中并分配一个新的唯一ID…依此类推。这种方法避免了机器学习,并且对于当前的需求集来说可能已经足够好了。

编辑:我正在添加一个额外的表,因此表格将如下所示

表1 = 未处理的源数据表表2 = 唯一名称表表3 = 唯一名称的所有派生

我还将获取一个最常见名称的唯一列表,并将其添加到表2和表3中。这将只是一个起点。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注