名称中的错误更正

izo*_*ica 7 c++ java algorithm error-correction

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

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

显然Lucene的纠错算法对我没有帮助,因为它没有处理上述情况.

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

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

Jam*_*arp 6

对于语音匹配,请参阅Soundex.

我认为修改Levenshtein距离算法以将"缩写为初始"和"从初始扩展"视为单距离编辑应该是直截了当的,但目前细节超出了我的范围.