2016-04-24 9 views
1

私はPythonのnltk.metrics.distanceモジュールに精通しています。これは、通常、2つの文字列の編集距離を計算するために使用されます。トークンベースの編集距離はPythonでですか?

私はこのような距離を計算する機能に興味がありますが、通常どおりchar-wiseではなくtoken-wiseです。これにより、(文字の代わりに)全体のトークンのみを置換/追加/削除できることを意味します。通常の編集距離と私の希望トークン化バージョンの

例:

> char_dist("aa bbbb cc", 
      "aa b cc") 
3        # add 'b' character three-times 

> token_dist("aa bbbb cc", 
      "aa b cc") 
1        # replace 'bbbb' token with 'b' token 

はすでにpythonでtoken_distを計算することができ、いくつかの機能、ありますか?むしろ私自身のコードを書くよりも、すでに実装され、テストされているものを使用したいと思います。ヒントありがとう。

pip install editdistance 

は、その後、次はあなたにトークンワイズ編集距離を与える:

答えて

3

まず、以下のインストール

import editdistance 
editdistance.eval(list1, list2) 

例:詳細については

import editdistance 
tokens1 = ['aa', 'bb', 'cc'] 
tokens2 = ['a' , 'bb', 'cc'] 
editdistance.eval(tokens1, tokens2) 
out[4]: 1 

、以下を参照してください:

https://github.com/aflc/editdistance

+1

素晴らしいです!ありがとうございました – petrbel

3

NLTKのedit_distanceは、文字列のようにリストと同じようにうまく動作するように表示されます。

nltk.edit_distance("aa bbbb cc", "aa b cc") 
> 3 
nltk.edit_distance("aa bbbb cc".split(), "aa b cc".split()) 
> 1 
関連する問題