web-dev-qa-db-ja.com

類似性アルゴリズムを比較する

文字列類似性関数を使用して、データベース内の破損したデータを検索します。

私はそれらのいくつかに出くわしました:

  • ジャロ、
  • ジャロ・ウィンクラー、
  • レーベンシュタイン
  • ユークリッドと
  • Q-gram、

それらの違いは何で、どのような状況で最も効果的に機能するのか知りたいですか?

40
Ali

エラータと私のwikiウォークのコメントを拡張します 同様の問題空間に適用されるアルゴリズムの比較可能性に関する1階の文献に注意してください これらのアルゴリズムの適用可能性を、それらが決定する前に調べてみましょう数値的に同等です。

ウィキペディアから Jaro-Winkler

コンピュータサイエンスと統計では、Jaro-Winkler距離(Winkler、1990)は2つの文字列間の類似性の尺度です。これは、Jaro距離メトリック(Jaro、1989、1995)の変形であり、主にレコードリンケージ(重複検出)の領域で使用されます。 2つの弦のJaro-Winkler距離が大きいほど、弦は類似します。 Jaro-Winkler距離メトリックは、人名などの短い文字列に最適であり、設計されています。スコアは正規化され、0は類似性なし、1は完全一致です。

レブンシュタイン距離:

情報理論とコンピュータサイエンスでは、レーベンシュタイン距離は2つのシーケンス間の差の量を測定するための文字列メトリックです。編集距離という用語は、特にレーベンシュタイン距離を指す場合によく使用されます。

2つの文字列間のレーベンシュタイン距離は、1つの文字列を別の文字列に変換するために必要な編集の最小数として定義され、許容される編集操作は、単一の文字の挿入、削除、または置換です。 1965年にこの距離を考慮したウラジミールレーベンシュタインにちなんで名付けられました。

ユークリッド距離:

数学では、ユークリッド距離またはユークリッド距離は、定規で測定する2つのポイント間の「通常の」距離であり、ピタゴラスの公式で与えられます。この式を距離として使用することにより、ユークリッド空間(または任意の内積空間)が距離空間になります。関連するノルムは、ユークリッドノルムと呼ばれます。古い文献では、メトリックをピタゴラスメトリックと呼んでいます。

そして Q-またはn-gramエンコーディング:

計算言語学と確率の分野では、n-gramは、テキストまたは音声の特定のシーケンスからのnアイテムの連続したシーケンスです。問題のアイテムは、アプリケーションに応じて、音素、音節、文字、単語、または塩基対にすることができます。 n-gramはテキストまたは音声コーパスから収集されます。

N-gramモデル(およびそれらを使用するアルゴリズム)の2つの主要な利点は、比較的単純であること、およびスケールアップする能力です。単純にnaモデルを増やすことで、十分に理解された時空間トレードオフでより多くのコンテキストを保存し、小さな非常に効率的にスケールアップする実験。

問題は、これらのアルゴリズムがすべての可能なアルゴリズムの範囲内で異なる適用性を持つさまざまな問題を解決し、 最長共通サブシーケンス 問題、データまたは使用可能な メトリック の問題を解決することです。その。実際、一部の 三角形の不等式 を満たさないため、これらすべてがmetricsであるとは限りません。

データの破損を検出する疑わしいスキームを定義するために邪魔になる代わりに、これを正しく行います: checksumsparity bits を使用してあなたのデータのために。より簡単な解決策がするとき、はるかに難しい問題を解決しようとしないでください。

39
MrGomez

文字列の類似性は、さまざまな方法で役立ちます。例えば

  • グーグルの結果は、文字列の類似性を使用して計算されたという意味ですか。
  • 文字列の類似性は、OCRエラーを修正するために使用されます。
  • 文字列の類似性は、キーボード入力エラーを修正するために使用されます。
  • 文字列の類似性は、バイオインフォマティクスで2つのDNAの最も一致する配列を見つけるために使用されます。

ただし、1つのサイズですべてに対応できるわけではありません。すべての文字列類似性アルゴリズムは特定の用途向けに設計されていますが、それらのほとんどは類似しています。たとえば Levenshtein_distance は、2つの文字列を等しくするために変更する文字数です。

kitten → sitten

ここで距離は1文字変化です。削除、追加、置換に異なる重みを付けることができます。たとえば、OCRエラーとキーボードエラーは、一部の変更の重要度が低くなります。 OCR(一部の文字は他の文字と非常によく似ています)、キーボードの一部の文字は互いに非常に接近しています。バイオインフォマティクス文字列の類似性により、多くの挿入が可能になります。

Jaro–Winkler 距離メトリックの2番目の例は、人の名前などの短い文字列に設計され、最適です」

したがって、問題については常に心に留めておく必要があります。

文字列類似性関数を使用して、データベース内の破損したデータを見つけたいのですが。

データはどのように破損していますか?キーボード入力エラーと同様のユーザーエラーですか?それともOCRエラーに似ていますか?それとも完全に別のものですか?

2
Atilla Ozgur