6

Python の difflib モジュールを試していたところ、SequenceMatcher. そのため、次の例を試しましたが、何が起こっているのか理解できませんでした。

>>> SequenceMatcher(None,"abc","a").ratio()
0.5

>>> SequenceMatcher(None,"aabc","a").ratio()
0.4

>>> SequenceMatcher(None,"aabc","aa").ratio()
0.6666666666666666

さて、比率によると:

範囲 [0, 1] の float としてシーケンスの類似度の尺度を返します。は両方のシーケンスTの要素の総数で、 Mは一致の数です。これは2.0*M / Tです。

だから、私の場合:

  1. T=4などのM=1比率2*1/4 = 0.5
  2. T=5などのM=2比率2*2/5 = 0.8
  3. T=6などのM=1比率2*1/6.0 = 0.33

私の理解によるとT = len(aabc) + len(a)M=2なぜならaが 2 回入ってくるからaabcです。

では、どこが間違っているのでしょうか。

のソースコードはこちらSequenceMatcher.ratio()

4

1 に答える 1

6

あなたは最初のケースを正しく持っています。2 番目のケースでは、afromの 1 つだけがaabc一致するため、M = 1 です。3 番目の例では、両方aの s が一致するため、M = 2 です。

[追伸: 古代の Python 2.4 ソース コードを参照しています。現在のソース コードはhg.python.orgにあります。]

于 2012-09-15T11:13:26.883 に答える