0

这将是我第二次询问计算语言学/模糊字符串匹配,但这次不是关于词干。

我的第一个问题是使用模糊字符串匹配对数据库进行重复数据删除,我已经做到了。现在,我必须检测一个字符串是否是另一个字符串的简写。例如:

  • JOHN ADRIAN FREEMAN WELTER 等于 JAF Welter 或 JAFWelter
  • MICROSOFT OFFICE 等于 MS OFFICE
  • BUILDING 等于 BLDG

我目前正在使用 SimMetrics 的 .Net 版本来解决我的第一个问题。那么,SimMetrics 中有没有一种方法可以解决我的问题呢?如果没有,那么解决这个问题的最佳方法是什么?

以下是 SimMetrics 中实现的指标:

  • 汉明距离
  • 莱文斯坦距离
  • Needleman-Wunch 距离或卖方算法
  • 史密斯-沃特曼距离
  • Gotoh 距离或 Smith-Waterman-Gotoh 距离
  • 街区距离或L1距离或城市街区距离
  • 蒙格埃尔坎距离
  • Jaro 距离度量
  • 雅罗·温克勒
  • SoundEx 距离指标
  • 匹配系数
  • 骰子系数
  • Jaccard 相似度或 Jaccard 系数或 Tanimoto 系数
  • 重叠系数
  • 欧几里得距离或 L2 距离
  • 余弦相似度
  • 变分距离
  • 海灵格距离或巴塔查亚距离
  • 信息半径(Jensen-Shannon 散度)
  • 谐波平均值
  • 偏差散度
  • 混淆概率
  • Fellegi 和 Sunters (SFS) 指标
  • TFIDF 或 TF/IDF
  • 快速A
  • 爆破
  • 最大匹配
  • q-gram
  • Ukkonen 算法

我对所有这些算法都不是很熟悉。我已经在这里使用的是 Leveshtein Distance、Needleman-Wunch、Jaro-Winkler、SoundEx 和 TF/IDF。而且我认为这些算法不足以解决这个简写名称问题

4

1 回答 1

2

您很可能需要自定义方法。这是我要尝试的:

  1. JOHN ADRIAN FREEMAN WELTER 等于 JAF Welter 或 JAFWelter

在这里,您可以使用单词的第一个字母来获取缩写。如果所有出现的最后一个单词都是完整的,这很可能会为您提供独特的解决方案,否则您可能会找到具有相同缩写的其他单词序列(例如 JAFW:Java 作为外来词)

  1. MICROSOFT OFFICE 等于 MS OFFICE

在这里,您需要一个已知单词的字典,并认识到Microsoft可以从MicroSoft放在一起(假设两者都在您的字典中)并在这些上使用第一种方法

  1. BUILDING 等于 BLDG

在这里,您将需要一个单词字典和自定义缩写(我认为您不会找到一个可以计算所有单词缩写的规则/算法)

于 2012-04-15T12:08:43.020 回答