名前の誤り訂正を実行するアルゴリズムを考案しようとしています。私のアプローチは、正しい名前のデータベースを用意し、それぞれの名前と入力された名前の間の編集距離を計算し、最も近い 5 または 10 を提案することです。
このタスクは、名前の一部がイニシャルに置き換えられる可能性があるため、標準的なエラー修正とは大きく異なります。たとえば、"Jonathan Smith" と "J. Smith" は実際には非常に近く、同じ名前と簡単に見なすことができるため、編集距離は 0 ではないにしても非常に小さくする必要があります。同じ。たとえば、Shnaider
とSchneider
は、異なるロケールを持つ人々によって書かれた同じ名前のバージョンです (より良い例があると思います)。そして別のケース - 書き込みで起こりうるすべての誤りを想像してみてくださいJawaharlal Nehru
。そのほとんどは本名とは何の関係もありません。繰り返しますが、おそらくそれらのほとんどは音声的に似ています。
明らかに、Lucene のエラー修正アルゴリズムは、上記のケースを処理しないため、ここでは役に立ちません。
私の質問は、名前のエラー修正ができるライブラリを知っていますか? 上記のケースを処理するためのアルゴリズムを提案できますか?
C++ または Java のライブラリに興味があります。アルゴリズムの提案に関しては、どの言語または擬似コードでもかまいません。