計算言語学/あいまい文字列マッチングについて質問するのはこれで 2 回目ですが、今回はステミングについてではありません。
私の最初の問題は、ファジー文字列マッチングを使用してデータベースの重複を排除することでした。私はすでにそれを達成しました。ここで、文字列が別の文字列の省略形であるかどうかを検出する必要があります。例えば:
- JOHN ADRIAN FREEMAN WELTER は JAF Welter または JAFWelter と同等です
- MICROSOFT OFFICE は MS OFFICE と同じです
- BUILDING は BLDG に等しい
私は現在、最初の問題に SimMetrics の .Net バージョンを使用しています。それで、私の問題を解決できる方法が SimMetrics にありますか? ない場合、これを解決する最善の方法は何ですか?
SimMetrics に実装されているメトリックは次のとおりです。
- ハミング距離
- レーベンシュタイン距離
- Needleman-Wunch 距離またはセラーズ アルゴリズム
- スミス・ウォーターマン距離
- 後藤距離またはスミス・ウォーターマン・後藤距離
- ブロック距離 or L1 距離 or シティブロック距離
- モンジュ・エルカン距離
- ジャロ距離メトリック
- ジャロ・ウィンクラー
- SoundEx 距離測定
- マッチング係数
- サイコロの係数
- Jaccard Similarity または Jaccard Coefficient または Tanimoto 係数
- オーバーラップ係数
- ユークリッド距離または L2 距離
- コサイン類似度
- 変分距離
- ヘリンジャー距離またはバタチャリヤ距離
- 情報半径 (Jensen-Shannon ダイバージェンス)
- 調和平均
- スキュー発散
- 混乱確率
- タウ
- Fellegi and Sunters (SFS) メトリック
- TFIDF または TF/IDF
- ファストA
- ブラストP
- 最大一致
- qグラム
- ウッコネン アルゴリズム
私はこれらすべてのアルゴリズムに精通しているわけではありません。ここで既に使用したのは、Leveshtein Distance、Needleman-Wunch、Jaro-Winkler、SoundEx、および TF/IDF です。そして、これらのアルゴリズムは、この短縮名の問題を解決するには不十分だと思います