【问题标题】:Group by Similar sounding names按发音相似的名称分组
【发布时间】:2017-08-10 17:45:11
【问题描述】:

我们有一个贡献者数据库。贡献者信息是从多个来源导入的。每个人都贡献了几次,每次都输入他们的名字。一些贡献者拼错了他们的名字。要求是找出每个贡献者的总贡献。我们尝试了 SQL Soundex 和 Metaphone 3。Soundex 不准确,Metaphone 3 太耗时。有没有更好的方法来解决这个问题?

例子:

Sql Soundex

select soundex('Opacinch') returns O125
select soundex('Opancinch') returns O152

变音器 3

Metaphone 3 使用排名算法。应将每条记录与所有记录进行比较,这会导致分组过多。如果我们使用排名 2,下面的所有记录都将被视为相同

Chandaprakash
Chandaprakas
Chandapraka
Chandaprak
Chandapra
Chandapr
Chandap
Chanda
Chand
Chan
Cha
Ch
C

【问题讨论】:

  • 是的 - 更改表格设计。听起来很可怕。
  • 你怎么知道VivkVivek是同一个贡献者?遵循@juergend 的建议。
  • 如果您没有具体说明“不准确”(显示输入以及预期和实际匹配)和“太耗时”(提及基准)的确切含义,我们将无法帮助您。正如目前所说,这个问题被解释为“把你最喜欢的全文搜索算法扔给我,我会弄清楚它是否满足我未公开的要求”,这不是本网站的工作方式。
  • 每个贡献者每次都输入他们的名字 - NOOOOO!
  • Metaphone 尝试通过语音查找相似的单词。这与你的问题不同。大多数人可能拼错一两个字母。也许您可以获得所有不同名称的列表,将它们大写,将每个字母的 ASCII 值相加,然后按总数分组。这是一种简单的“聚类”技术,可以根据贡献者的数量以及他们的名字的不同而起作用。如有必要,您可以改进每个名称的值的计算,例如:赋予第一个字母更多的权重,因为人们很少会拼错它。

标签: c# sql


【解决方案1】:

从“名称”表中填充 DropDownList。这样每个人都只能选择他的名字,而不允许输入不同的拼写。

【讨论】:

  • 用户没有使用我的应用程序来填充。他们提交包含此信息的 excel 文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多