名前にエラー訂正を実行するアルゴリズムをデバイスにしようとしています。私のアプローチは正しい名前のデータベースを持っており、それぞれの名前と入力された名前の間の編集距離を計算し、次に5または10の最も近いものを提案します。名前のエラー修正
このタスクは、名前の一部がイニシャルで置き換えられる可能性があるため、標準的なエラー修正とは大きく異なります。たとえば、 "Jonathan Smith"と "J. Smith"は実際にはかなり近く、簡単に同じ名前と見なすことができるため、編集距離は0でなくても実際には小さくなければなりません。同じ。たとえば、Shnaider
とSchneider
は、異なるロケールの人が書いた同じ名前のバージョンです(これは私が推測するより良い例です)。また、別のケースでは、実際には何も書かれていない可能性があると想像してください。Jawaharlal Nehru
やはりおそらくそれらのほとんどは音声学的に類似しているでしょう。
明らかにLuceneのエラー修正アルゴリズムは、上記のケースを処理しないため、ここで私を助けません。
私の質問は次のとおりです。名前に誤り訂正を実行できるライブラリがありますか?上記のケースを扱うためのアルゴリズムを提案できますか?
私はC++またはjavaのライブラリに興味があります。アルゴリズムの提案に関しては、あらゆる言語や疑似コードが行います。
私はここで2つの可能なアプローチを参照してください:1.距離を計算するときに同義語の辞書を持ってそれを含める。 2.説明したロジックを使用して、一部のAIモジュールを使用します。 – SomeWittyUsername
私は数百万の名前、異なるロケール、異なる同義語を持っているので、私はオプション2しか使えないと信じています。ここでの問題は**私は具体的に音声の類似部分を記述するロジックを実装する方法です**です。また、似たものがないことを確認したかったのです。 –
これには十分注意してください。私はちょうど2009年に終わる数年間の学生だったUCSDとの複数の週の議論を終えました。彼らは返却小切手を私に請求していました。それは、私が最終的に彼らの記録を見るのではなく、小切手のイメージを掘り起こすようになったときだけ解決されました。小切手は実際には同じ名義と名字で書かれていましたが、中間の頭文字が付けられています。会計部門は、それに基づいて私のアカウントに属していたとみなしていました。正確な名前の一致でさえ、データが同一人物であるかどうかを判断するのにはあまり役に立ちません。 –