【问题标题】:Algorithm for clustering names聚类名称的算法
【发布时间】:2015-02-01 18:05:39
【问题描述】:

我在 db 列中有人名(名字、姓氏和姓氏)。 数据未满,例如某些行

  • 只有名字、姓氏或姓氏。
  • 顺序不同(姓氏,姓氏)
  • 拼写错误

我需要一种算法来显示组中的一组行,这将表明它是同一个人,我将去手动删除它们,除了一个。

这些数据非常具体,并且名称重复,所以如果我们有 John、Jonh Smihtm 和 John Smith,这肯定是同一个人,我会去手动删除除了最后一个。

我需要在可能性组中显示它们。所以应该有一组非常可能是同一个人(John Smith, Jonh Smit),那么应该有一组可能是同一个人(约翰,约翰尼)和一组可能是同一个人(乔,乔纳森)。

我对数据挖掘和聚类比较陌生,所以请告诉我一些算法以及如何开始。

【问题讨论】:

  • 有趣的问题,但可能是迁移到统计数据的候选者。 IMO 这里的关键问题是找到一个好的模型。

标签: algorithm cluster-analysis spell-checking levenshtein-distance


【解决方案1】:

不要使用集群。它会产生很多误报。它将认为“Sam”和“Pam”高度相似。

改为查看拼写校正,或定义 Levenshtein 距离阈值。但是考虑到拼写错误行为的方法会比这种原生字母方法更有效。

【讨论】:

  • 但是 Levenshtein 距离不会遇到同样的问题吗?即使阈值为 1,Jenny 和 Penny 也会被归为同一类。
  • 是的,这就是为什么我会采用可能错字的方法。集群的问题在于它会被传递使用。所以 Penny, Jenny, Jonny, Jonn, John, ... 在聚类时都一样,即使总的差异几乎是整个字符串。
猜你喜欢
  • 2020-06-18
  • 2013-11-26
  • 2018-07-24
  • 2011-03-29
  • 2020-02-14
  • 2022-01-03
  • 2023-04-04
  • 2013-10-19
  • 2016-11-09
相关资源
最近更新 更多