2016-04-24 51 views
1

我熟悉Python的nltk.metrics.distance模塊,它通常用於計算兩個字符串的編輯距離。Python中基於令牌的編輯距離?

我感興趣的是一個函數,它計算這樣的距離,但不是像通常那樣按字母順序而是按照符號來計算。我的意思是,你可以只替換/添加/刪除整個令牌(而不是字符)。

定期編輯距離和所需的我的版本標記化的例子:

> 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?我寧願使用已經實現和測試的東西,而不是寫自己的代碼。感謝您的提示。

回答

3

首先,安裝以下軟件:

pip install editdistance 

那麼下面會給你的令牌明智的編輯距離:

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