名称中的错误更正

时间:2012-11-06 08:04:06

标签: java c++ algorithm error-correction

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

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

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

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

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

2 个答案:

答案 0 :(得分:6)

对于语音匹配,请参阅Soundex

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

答案 1 :(得分:3)

您也可以查看Metaphone