重复删除类似的公司名称

时间:2017-06-23 16:14:27

标签: duplicates nlp linguistics

我有一张公司名称的表格。由于人为输入错误,有许多重复。如果应该包括细分,拼写错误等,有不同的看法。我希望所有这些重复标记为一个公司“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也没关系。链接到来源将不胜感激。感谢。

1 个答案:

答案 0 :(得分:2)

这是一个难题。可能对您有帮助的神奇搜索关键字是" 规范化" - 虽然有时它意味着非常不同的事情(例如,#34;数据库规范化"无关,例如),但您实际上是在尝试将输入规​​范化。

一个简单的解决方案是使用Levenshtein距离和令牌感知。 Python库Fuzzy Wuzzy做到了这一点,this blog post介绍了它如何与激励示例一起工作。基本的想法很简单,你应该能够用Java实现它,没有太大的困难。

在较高的层次上,我们的想法是将输入分成空格上的标记和标点符号,然后对标记进行排序并将它们视为一组,然后使用设置的交集大小 - 允许模糊匹配 - 作为度量标准。

一些相关链接: