2

2 つの文字列間のデルタ比をプログラムで検出する方法を探しています。文字列の長さを使用できますが、これはサイズが同じで異なる入力についてはあまり有用な情報を提供しません。Google コードJava Diff Utilsには Java diff ツールがありますが、2011 年以降更新されておらず、文字列自体を実際に変更する必要はありません。

たとえば、しきい値を使用して変更検出を試みています。更新された文字列は既存の文字列と 42% 異なります。続行してもよろしいですか?

これに使用できるライブラリを知っている人はいますか、それとも java-diff-utils が私の唯一のオプションですか? apache commons であまり見つけられませんでした。グーグルは無関係な情報を返しています。

4

1 に答える 1

3

レーベンシュタイン距離を使用して、2 つの文字列がどの程度異なるかを計算できます。そこにはかなり複雑な計算がいくつかありますが、実際のコードはかなり短いものです。その wiki のコードを Java で簡単に書き直すことができます。

違いは整数で測定され、1 つの文字列を別の文字列に変換するために必要なステップ数を示します。ステップは、キャラクターの追加、削除、または別のキャラクターとの置換の場合があります。必要なステップの量はわかりますが、どのステップやどの順序であるかはわかりません。しかし、繰り返しになりますが、合計の差だけを測定したいので、それで十分な情報であると確信しています.

編集: コメント投稿者の 1 人 (kaos) が、Apache Commons のレーベンシュタイン距離の実装へのリンクを提供しました。

于 2013-08-08T12:55:49.050 に答える