文字列の類似度2019年7月21日 | |
はじめに文字列の類似度を出したい場合は、Python モジュールの difflib を用いる。 文字列の類似度文字列の類似度は difflib の SequenceMatcher で求めることができる。 >>>from difflib import SequenceMatcher >>>s = SequenceMatcher(None, "猫", "犬") >>>print(s.ratio()) 0.0 >>>s = SequenceMatcher(None, "猫", "子猫") >>>print(s.ratio()) 0.6666666666666666 ratio() の値が 1 に近いほど類似度が高い。全く別物であると 0 である。公式ドキュメントでは、0.6 以上だと似ていると言えるとされているが、おそらくそれは文章同士の話なので、単語同士だともう少し大きく見た方がよいかもしれない。 >>>s = SequenceMatcher(None, "ヨークシャーテリア", "ブルガリアヨーグルト") >>>print(s.ratio()) 0.21052631578947367 >>>s = SequenceMatcher(None, "ヨークシャーテリア", "シャンデリア") >>>print(s.ratio()) 0.5333333333333333 >>>s = SequenceMatcher(None, "ヨークシャーテリア", "ヨークシャープディング") >>>print(s.ratio()) 0.6 >>>s = SequenceMatcher(None, "スコティッシュ", "スコッティティッシュ") >>>print(s.ratio()) 0.8235294117647058 >>>s = SequenceMatcher(None, "スコティッシュフォールド", "スコッティティッシュ") >>>print(s.ratio()) 0.6363636363636364 >>>s = SequenceMatcher(None, "メインクーン", "メイクイーン") >>>print(s.ratio()) 0.8333333333333334 参考 | |
PENGUINITIS |