Php 如何消除大部分相似值的重复数据?

Php 如何消除大部分相似值的重复数据?,php,Php,我有一个数据库,里面有一列大学的名字。这些值是通过自由形式的用户文本输入收集的。因此,实际上有很多重复的值,但是,它们并不完全相同 例如: 华盛顿圣大学 华盛顿州立大学 华盛顿州立大学 华盛顿州立大学 华盛顿州 WSU 我应该如何从列表中删除重复项?我考虑过使用php函数,如and和调优阈值来排除匹配。但我想知道在我把兔子洞挖得太深之前,是否有更好的方法 我在寻找能给出解决问题的概念策略或算法的答案。我喜欢任何编程语言或伪代码。3种方式……你的风格和数据将是决定哪条路线的关键 1-翻译表。创

我有一个数据库,里面有一列大学的名字。这些值是通过自由形式的用户文本输入收集的。因此,实际上有很多重复的值,但是,它们并不完全相同

例如:

华盛顿圣大学
华盛顿州立大学
华盛顿州立大学
华盛顿州立大学
华盛顿州
WSU

我应该如何从列表中删除重复项?我考虑过使用php函数,如and和调优阈值来排除匹配。但我想知道在我把兔子洞挖得太深之前,是否有更好的方法


我在寻找能给出解决问题的概念策略或算法的答案。我喜欢任何编程语言或伪代码。

3种方式……你的风格和数据将是决定哪条路线的关键

1-翻译表。创建一个包含两列的表,第一列为输入。用所有其他术语的不同列表填充值。手动检查(在电子表格中更容易)每个输入并填充“显示”名称。Gordon的评论是这样的……我曾经用一家临时公司雇佣了15个人,为期一周,像这样对搜索词进行分类,如果你的独特输入列表很大,这可能是一个相当大的练习

2-Levenshtein距离。这不是最漂亮的,但适用于大多数人(80/20规则)。这里有一个很好的配置块,它不是很简单(即,华盛顿州的6个变体中,它应该将它们全部分组为哪一个?)。在我过去的经验中,我将表交叉连接到它自己……使用table1.input和table2.input之间的Levenshtein距离和计数来找出哪个术语与它最匹配。这是一个巨大的兔子洞,如果这是你要走的路线,请做好准备……无论如何,这是一次很好的学习经历

  • 第三方工具。如果您处于商业智能环境中,一些BI工具现在有能力解决这个问题。微软还提供了一个数据质量工具和一些其他选项。老实说,这些人刚刚为你做了第二项选择,你将为此支付第三方的费用

  • 您也可以将选项1和选项2结合起来……按照第一步创建带有输入的表,使用脚本填充使用levenshtien的“显示”列,然后手动浏览数据并根据需要进行更正。

    将数据加载到您选择的电子表格中,并将标准化名称放在输入名称旁边。你越早开始,你就越早完成。你在哪个数据库?对于SQLServer来说,这类函数有很大的不同。我认为有一种数据质量工具可以使用@它位于Microsoft SQL Server中(标记为tsql)