![3d549e09a3374a00e7f9b7eaeabaa88f.png](https://i-blog.csdnimg.cn/blog_migrate/0ac540b4de5cb5ed07c8401b68730209.jpeg)
字符串的相似性比较应用场合很多,像拼写纠错、文本去重、上下文相似性等。
评价字符串相似度最常见的办法就是:把一个字符串通过插入、删除或替换这样的编辑操作,变成另外一个字符串,所需要的最少编辑次数,这种就是编辑距离(edit distance)度量方法,也称为Levenshtein距离。海明距离是编辑距离的一种特殊情况,只计算等长情况下替换操作的编辑次数,只能应用于两个等长字符串间的距离度量。
其他常用的度量方法还有 Jaccard distance、J-W距离(Jaro–Winkler distance)、余弦相似性(cosine similarity)、欧氏距离(Euclidean distance)等。
python-Levenshtein 使用
使用 pip install python-Levenshtein 指令安装 Levenshtein
![bd68627df2207b6da806df4d189d35c6.png](https://i-blog.csdnimg.cn/blog_migrate/ba6e64ab6805faa8a020409eb8bde8e6.jpeg)
1. difflib
![ca3ce43b62a2917477eabd4c59b89209.png](https://i-blog.csdnimg.cn/blog_migrate/406f1b75ab867c4a742f7ac0fc44f272.jpeg)
2. hamming距离,str1和str2长度必须一致,描述两个等长字串之间对应位置上不同字符的个数
![e0f4896b2d67b35def0a21f8536f2afb.png](https://i-blog.csdnimg.cn/blog_migrate/fcb50ff400009936e6c8700615032a47.jpeg)
3. 编辑距离,描述由一个字串转化成另一个字串最少的操作次数,在其中的操作包括 插入、删除、替换
![a662c2ffd6f43f03e5451be08d09be86.png](https://i-blog.csdnimg.cn/blog_migrate/02abd984bea5a2bc1d0b9c6aecb39ef1.jpeg)
4.计算莱文斯坦比
![0a49fe2c97b41b2bedec9396b9c74317.png](https://i-blog.csdnimg.cn/blog_migrate/2f7d3db5e075f030013f61cbfe697fff.jpeg)
5.计算jaro距离
![f807d9a2673bfa749dda432093a607ea.png](https://i-blog.csdnimg.cn/blog_migrate/5c392dc6042d3b0c5b5db987176e14cd.jpeg)
6. Jaro–Winkler距离
![50043abbd19567ebe99f959bf1eff58e.png](https://i-blog.csdnimg.cn/blog_migrate/c0bd599ea5c6807b1003219d01cb30f3.jpeg)
输出:
![c1d4d8702122627b2cc14c1b62beb26f.png](https://i-blog.csdnimg.cn/blog_migrate/2a9e1f243efc5e7bab961068cda97f63.jpeg)