python 字符串相似度判断详解

OCR 专栏收录该内容
4 篇文章 0 订阅

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++实现

 

 

  • 0
    点赞
  • 0
    评论
  • 4
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

CV-deeplearning

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值