Python中基于令牌的编辑距离?

时间:2016-04-24 18:56:14

标签: python nltk edit-distance

我熟悉python的nltk.metrics.distance模块,它通常用于计算两个字符串的编辑距离。

我感兴趣的是一个计算这样的距离的函数,但不像通常那样以字符方式表示。我的意思是你只能替换/添加/删除整个令牌(而不是字符)。

常规编辑距离示例和我想要的标记化版本:

> 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?我宁愿使用已经实现和测试过的东西而不是编写我自己的代码。感谢您的提示。

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

首先,安装以下内容:

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