相似公司名称重复剔除

Duplicate elimination of similar company names

我有一个带有公司名称的 table。由于人为输入错误,有很多重复项。是否应该包括细分,错别字等,有不同的看法。我希望所有这些重复都标记为一个公司“1c”:

+------------------+
|     company      |
+------------------+
| 1c               |
| 1c company       |
| 1c game studios  |
| 1c wireless      |
| 1c-avalon        |
| 1c-softclub      |
| 1c: maddox games |
| 1c:inoco         |
| 1cc games        |
+------------------+

我认为 Levenshtein distance 是消除拼写错误的好方法。然而,当添加细分时,Levenshtein 距离会急剧增加,不再是一个好的算法。这个对吗?

总的来说,我几乎没有计算语言学方面的经验,所以我不知道应该选择什么方法。

你会为这个问题推荐什么算法?我想在java中实现它。纯 SQL 也可以。链接到来源将不胜感激。谢谢

这是一道难题。 “normalization”可能对您有帮助在此处输入。

一个简单的解决方案是使用具有标记意识的 Levenshtein 距离。 Python 库 Fuzzy Wuzzy 就是这样做的,this blog post 介绍了它如何与激励示例一起工作。基本思想很简单,您应该能够在 Java 中毫不费力地实现它。

在高层次上,想法是将输入拆分为空格和标点符号的标记,然后对标记进行排序并将它们视为一个集合,然后使用集合交集大小(允许模糊匹配)作为公制。

一些相关链接: