python 字符串相似度判断详解

1. 背景介绍

      最近项目中要用到两个字符串相似度的求解算法,来矫正ocr文本识别的结果,进而提高识别的准确率,通过矫正(相当于模糊查询),识别准确率从65%上升到90%。其结果还是令人兴奋的,因此写博客以记录。

2. 方法与实现

      本文实现的方法是:“编辑距离”,所谓编辑距离,就是用来计算从原串(s)转换到目标串(t)所需要的最少的插入,删除和替换的数目。

      最后:先取两个字符串长度的最大值maxLen,用1-(需要操作数除maxLen),得到相似度。

      例如,abc 和abe 需要一个操作,长度为3,所以相似度为1-1/3=0.666。

      必要的安装包:pip install python-Levenshtein 指令安装 Levenshtein      

import Levenshtein

str_list = ["你好", "今天天气很好", "明天去吃大餐", "我喜欢编程"]
string = "天气正好好"

score_list = []

for i in str_list:
    # 计算编辑距离相似度,即莱文斯坦比
    score = Levenshtein.ratio(string, i)
    score_list.append(score)

print("%s与其他字符串的相似度分别为" % string)
print(str_list)
print(score_list)

      输出结果:

天气正好好与其他字符串的相似度分别为
['你好', '今天天气很好', '明天去吃大餐', '我喜欢编程']
[0.2857142857142857, 0.5454545454545454, 0.18181818181818182, 0.0]

    看来结果还是比较可靠的,相似度越高,说明两个字符串越接近。博主在项目中用到了该技巧,使文本识别的准确率大大提高。

参考:字符串相似性的其他几种度量方法

           编辑距离的C++实现

猜你喜欢

转载自blog.csdn.net/Guo_Python/article/details/110229037