Python 中基于标记的编辑距离?
Token-based edit distance in Python?
我熟悉 python 的 nltk.metrics.distance
模块,通常用于计算两个字符串的编辑距离。
我对一个函数感兴趣,它计算这样的距离,但不是像通常那样按字符而是按标记。我的意思是你只能 replace/add/delete 整个标记(而不是字符)。
常规编辑距离示例和我想要的标记化版本:
> 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
那么下面会给你token-wise编辑距离:
import editdistance
editdistance.eval(list1, list2)
示例:
import editdistance
tokens1 = ['aa', 'bb', 'cc']
tokens2 = ['a' , 'bb', 'cc']
editdistance.eval(tokens1, tokens2)
out[4]: 1
更多信息请参考:
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
我熟悉 python 的 nltk.metrics.distance
模块,通常用于计算两个字符串的编辑距离。
我对一个函数感兴趣,它计算这样的距离,但不是像通常那样按字符而是按标记。我的意思是你只能 replace/add/delete 整个标记(而不是字符)。
常规编辑距离示例和我想要的标记化版本:
> 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
那么下面会给你token-wise编辑距离:
import editdistance
editdistance.eval(list1, list2)
示例:
import editdistance
tokens1 = ['aa', 'bb', 'cc']
tokens2 = ['a' , 'bb', 'cc']
editdistance.eval(tokens1, tokens2)
out[4]: 1
更多信息请参考:
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