2012-11-06 12 views
7

名前にエラー訂正を実行するアルゴリズムをデバイスにしようとしています。私のアプローチは正しい名前のデータベースを持っており、それぞれの名前と入力された名前の間の編集距離を計算し、次に5または10の最も近いものを提案します。名前のエラー修正

このタスクは、名前の一部がイニシャルで置き換えられる可能性があるため、標準的なエラー修正とは大きく異なります。たとえば、 "Jonathan Smith"と "J. Smith"は実際にはかなり近く、簡単に同じ名前と見なすことができるため、編集距離は0でなくても実際には小さくなければなりません。同じ。たとえば、ShnaiderSchneiderは、異なるロケールの人が書いた同じ名前のバージョンです(これは私が推測するより良い例です)。また、別のケースでは、実際には何も書かれていない可能性があると想像してください。Jawaharlal Nehruやはりおそらくそれらのほとんどは音声学的に類似しているでしょう。

明らかにLuceneのエラー修正アルゴリズムは、上記のケースを処理しないため、ここで私を助けません。

私の質問は次のとおりです。名前に誤り訂正を実行できるライブラリがありますか?上記のケースを扱うためのアルゴリズムを提案できますか?

私はC++またはjavaのライブラリに興味があります。アルゴリズムの提案に関しては、あらゆる言語や疑似コードが行います。

+0

私はここで2つの可能なアプローチを参照してください:1.距離を計算するときに同義語の辞書を持ってそれを含める。 2.説明したロジックを使用して、一部のAIモジュールを使用します。 – SomeWittyUsername

+0

私は数百万の名前、異なるロケール、異なる同義語を持っているので、私はオプション2しか使えないと信じています。ここでの問題は**私は具体的に音声の類似部分を記述するロジックを実装する方法です**です。また、似たものがないことを確認したかったのです。 –

+0

これには十分注意してください。私はちょうど2009年に終わる数年間の学生だったUCSDとの複数の週の議論を終えました。彼らは返却小切手を私に請求していました。それは、私が最終的に彼らの記録を見るのではなく、小切手のイメージを掘り起こすようになったときだけ解決されました。小切手は実際には同じ名義と名字で書かれていましたが、中間の頭文字が付けられています。会計部門は、それに基づいて私のアカウントに属していたとみなしていました。正確な名前の一致でさえ、データが同一人物であるかどうかを判断するのにはあまり役に立ちません。 –

答えて

6

発音の一致については、Soundexを参照してください。

私は単距離編集が直感的でなければならないので、「初期値に短縮する」と「初期値から拡張」を扱うためにLevenshtein距離アルゴリズムを変更すると思いますが、詳細は今のところ私を超えています。

+0

Soundexは間違いなく私が利用できるものです。有難うございます :) –

3

また、Metaphoneをご覧になることもできます。

関連する問題