7

我正在尝试设计一种在名称中执行纠错的算法。我的方法是使用正确名称的数据库,计算每个名称与输入名称之间的编辑距离,然后建议最接近的 5 或 10 个。

此任务与单词中的标准纠错有很大不同,因为某些名称可能会被首字母代替。例如,“Jonathan Smith”和“J. Smith”实际上非常接近,很容易被认为是同一个名字,所以如果不是 0,编辑距离应该非常小。另一个挑战是,有些名字在发音时可能会以不同的方式书写相同的。例如Shnaider,并且Schneider是由具有不同语言环境的人编写的同名版本(我猜有更好的例子)。还有另一种情况——想象一下写作中可能出现的所有错误,Jawaharlal Nehru其中大部分与真实姓名无关。同样,它们中的大多数可能在语音上是相似的。

显然 Lucene 的纠错算法在这里对我没有帮助,因为它不能处理上述情况。

所以我的问题是:你知道任何能够对名称进行纠错的库吗?你能提出一些处理上述情况的算法吗?

我对 c++ 或 java 中的库感兴趣。至于算法建议,任何语言或伪代码都可以。

4

2 回答 2

6

有关语音匹配,请参阅Soundex

我认为修改 Levenshtein 距离算法以将“缩写为初始”和“从初始扩展”视为单距离编辑应该很简单,但目前细节超出了我的范围。

于 2012-11-06T08:19:02.497 回答
3

你也可以看看Metaphone

于 2012-11-07T23:47:03.383 回答