2011-02-12 27 views
3
私は2つの単語の類似性パーセントを取得したい

、例えば)Pythonの検索技術:単語の類似度

abcd versus zzabcdzz == 50% similarity 

は非常に正確である必要はありません。それを行う方法はありますか?私はPythonを使用していますが、他の言語を推薦することは自由です。

+0

[テキスト差分アルゴリズム](http://stackoverflow.com/questions/145607/text-difference-algorithm) – tzot

答えて

6

python-Levenshteinを使用してedit distanceを計算してみてください。

レーベンシュタインのPython C拡張モジュールは

  • レーベンシュタイン(編集)距離、及び編集操作
  • 文字列類似
  • 近似中央値文字列、および一般
  • を平均文字列の高速計算のための機能を含んでいます
  • 文字列と類似度を設定

2つの文字列の編集距離を最も長い文字列の長さで割って計算することで、類似点の概要を知ることができます。あなたの例では、編集距離は4であり、編集距離の最大値は8であるので、類似度は50%です。

3

あなたはpythonの作り付けのモジュールここdifflib

を使用することができますが、そのページからの例です

>>> s = SequenceMatcher(None, "abcd", "bcde") 
>>> s.ratio() 
0.75 
0

コピーthat答えから:

Pythonでは、difflibがあります。

difflibは、SequenceMatcherクラスを提供しています。このクラスを使用すると、類似性比を得ることができます。関数例:

def text_compare(text1, text2, isjunk=None): 
    return difflib.SequenceMatcher(isjunk, text1, text2).ratio() 
関連する問題