2016-04-24 85 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