2

difflib のドキュメントを確認しましたが、difflib.SequenceMatcher.ratio()実際の動作について混乱しています。このことを考慮 :

s = difflib.SequenceMatcher(None, "hey here" , "hey there").ratio()
print s 

私はs = 0.9411764705882353
それがどのように正確に計算されるか知りたいと思っていました. 2つの文字列は、1つの文字列と他の文字列の偏差を実際に調べることで比較されます。2つの文字列abの場合、ドキュメントは次のように述べて います。

差分は、「'a' を 'b' に変更するために何をする必要があるか?」として計算されます。

そして、次のようなものがあります:

b 内の x の場合、b2j[x] は x が現れる (b 内の) インデックスのリストです。ジャンク要素が出てこない

上記のs の例について説明してください。

4

1 に答える 1

1

ドキュメントから:

T は両方のシーケンスの要素の総数で、M は一致の数です。これは 2.0*M / T です。

この場合、最初の文字列が 8 文字で、2 番目の文字列が 9 文字であるため、T は 17 です。最初の文字列の 8 文字が 2 番目の文字列と一致するため、M は 8 です。2 * 8 / 17 は 0.9411764705882353 です。

于 2014-05-16T14:21:42.687 に答える