我正在尝试设计一种在名称中执行纠错的算法。我的方法是使用正确名称的数据库,计算每个名称与输入名称之间的编辑距离,然后建议最接近的 5 或 10 个。
此任务与单词中的标准纠错有很大不同,因为某些名称可能会被首字母代替。例如,“Jonathan Smith”和“J. Smith”实际上非常接近,很容易被认为是同一个名字,所以如果不是 0,编辑距离应该非常小。另一个挑战是,有些名字在发音时可能会以不同的方式书写相同的。例如Shnaider
,并且Schneider
是由具有不同语言环境的人编写的同名版本(我猜有更好的例子)。还有另一种情况——想象一下写作中可能出现的所有错误,Jawaharlal Nehru
其中大部分与真实姓名无关。同样,它们中的大多数可能在语音上是相似的。
显然 Lucene 的纠错算法在这里对我没有帮助,因为它不能处理上述情况。
所以我的问题是:你知道任何能够对名称进行纠错的库吗?你能提出一些处理上述情况的算法吗?
我对 c++ 或 java 中的库感兴趣。至于算法建议,任何语言或伪代码都可以。