import Levenshtein as Let
#编辑距离
Let.distance("holiday","today")
3
#汉明距离(Hamming Distance),字符串必须等长
Let.hamming("holiday","Tuesday")
4
#字符修改的步骤
Let.editops("holiday","today")
[('replace', 0, 0), ('delete', 2, 2), ('delete', 3, 2)]
#计算Jaro–Winkler distance
Let.jaro_winkler("holiday","today")
0.7904761904761904
#找到两个string中相同的块
#matching_blocks(edit_operations, source_length, destination_length)
a,b = "holiday","today"
mb = Let.matching_blocks(Let.editops(a,b), len(a), len(b))
''.join([a[x[0]:x[0]+x[2]] for x in mb])
'oday'
#找到1个合适的中性单词
Let.median(["holiday","holy","day","today","Friday","okay"])
'hoday'
#计算两个string的相似度
Let.ratio("holiday","today")
0.6666666666666666
#计算两个string数组的相似度
a = ["holiday","sad","like","cause"]
b = ["today","sat","likely","cause"]
Let.seqratio(a,b)
0.7833333333333333
#根据修改步骤,把单词逐一向目标单词转变
a = "holiday"
b = "today"
e = Let.editops(a,b)
print(Let.apply_edit(e[:1],a,b))
print(Let.apply_edit(e[:2],a,b))
print(Let.apply_edit(e,a,b))
toliday toiday today
#从一个步骤里减去另一个步骤
a = "holiday"
b = "today"
e = Let.editops(a,b)
print(e)
print(e[:1])
Let.subtract_edit(e,e[:1])
[('replace', 0, 0), ('delete', 2, 2), ('delete', 3, 2)] [('replace', 0, 0)]
[('delete', 2, 2), ('delete', 3, 2)]