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