1

google-diff-match-patch C# ライブラリを使用しています。2 つのテキストの類似性を測定したい。これを行うには、次の C# コードを作成します。

List<DiffMatchPatch.Diff> lDiffs = dmpDiff.diff_main(sTexte1, sTexte2);
int iIndex = dmpDiff.diff_levenshtein(lDiffs);
double dsimilarity = 100 - ((double)iIndex / Math.Max(sTexte1.Length, sTexte2.Length) * 100);

0 ~ 100 の類似値 (0 == 完全一致 - 100 == 完全に異なる)。

この計算が正しいということで、これは良いアプローチだと思いますか?

4

1 に答える 1

1

APIのホームページを見てみましたが、この説明が表示さdiff_levenshteinれます

差分が与えられた場合、挿入、削除、または置換された文字の数に関して、そのレーベンシュタイン距離を測定します。最小距離は 0 で、これは等しいことを意味し、最大距離は長い文字列の長さです。

次の行では、距離 (変化の測定値) を元の文字列の長さのパーセンテージに変換し、それを 100 から差し引いています。

double dsimilarity = 100 - ((double)iIndex / Math.Max(sTexte1.Length, sTexte2.Length) * 100);

だから、はい、これは私には問題ないようです。

私の唯一のコメントは、元のアルゴリズムは完全一致を表すために 0 を使用し、あなたは 100 を使用していることです。これは混乱を招く可能性があります。これで問題ない場合は、将来のメンテナーのために適切にコメントしてください。

于 2013-09-30T08:55:59.283 に答える