精华内容
下载资源
问答
  • python字符串相似度 tdebatty likeity的Python3.x实现 一个实现不同字符串相似度和距离度量的库。 当前实现了十二种算法(包括Levenshtein编辑距离和同级,Jaro-Winkler,最长公共子序列,余弦相似性等)。 查看...
  • 计算字符串变换相等的最小操作代价 2020远景智能计算字符串相似度计算字符串变换相等的最小操作代价题目描述:输入描述:输出描述:示例:思路:算法介绍示例代码:代码输出:2020远景智能在线笔试 计算字符串的相似度...
  • python 字符串相似度判断详解

    千次阅读 2020-11-27 14:05:45
    如何用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++实现

     

     

    展开全文
  • NULL 博文链接:https://biansutao.iteye.com/blog/326008
  • python判断字符串相似度

    千次阅读 2019-08-23 10:55:05
    参考Python 字符串相似性的几种度量方法 安装python-Levenshtein 直接去官网下载适合自己系统的python-Levenshtein.whl文件,进入文件目录,安装,...测试字符串相似度算法 参考了上述链接的代码 # -*- coding: utf...

    参考Python 字符串相似性的几种度量方法

    安装python-Levenshtein

    直接去官网下载适合自己系统的python-Levenshtein.whl文件,进入文件目录,安装,如我的

    pip install python_Levenshtein-0.12.0-cp37-cp37m-win_amd64.whl
    

    测试字符串相似度算法

    参考了上述链接的代码

    # -*- coding: utf-8 -*-
    
    import difflib
    # import jieba
    import Levenshtein
    
    str1 = "我的骨骼雪白 也长不出青稞"
    str2 = "雪的日子 我只想到雪中去si"
    
    # 1. difflib
    seq = difflib.SequenceMatcher(None, str1,str2)
    ratio = seq.ratio()
    print('difflib similarity1: ', ratio)
    
    # difflib 去掉列表中不需要比较的字符
    seq = difflib.SequenceMatcher(lambda x: x in ' 我的雪', str1,str2)
    ratio = seq.ratio()
    print('difflib similarity2: ', ratio)
    
    # 2. hamming距离,str1和str2长度必须一致,描述两个等长字串之间对应位置上不同字符的个数
    # sim = Levenshtein.hamming(str1, str2)
    # print 'hamming similarity: ', sim
    
    # 3. 编辑距离,描述由一个字串转化成另一个字串最少的操作次数,在其中的操作包括 插入、删除、替换
    sim = Levenshtein.distance(str1, str2)
    print('Levenshtein similarity: ', sim)
    
    # 4.计算莱文斯坦比
    sim = Levenshtein.ratio(str1, str2)
    print('Levenshtein.ratio similarity: ', sim)
    
    # 5.计算jaro距离
    sim = Levenshtein.jaro(str1, str2 )
    print('Levenshtein.jaro similarity: ', sim)
    
    # 6. Jaro–Winkler距离
    sim = Levenshtein.jaro_winkler(str1 , str2 )
    print('Levenshtein.jaro_winkler similarity: ', sim)
    

    输出结果为

    difflib similarity1: 0.14814814814814814
    difflib similarity2: 0.0
    Levenshtein similarity: 13
    Levenshtein.ratio similarity: 0.14814814814814814
    Levenshtein.jaro similarity: 0.4061355311355312
    Levenshtein.jaro_winkler similarity: 0.4061355311355312

    展开全文
  • Levenshtein:快速计算编辑距离以及字符串相似度
  • python比较字符串相似度

    万次阅读 2018-12-15 17:55:28
    比较两个字符串的模块是difflib.SequenceMatcher,使用起来很简单: import difflibdef string_similar(s1, s2): return difflib.SequenceMatcher(None, s1, s2).quick_ratio() print string_similar('爱尔眼科沪...

    python自带比较相似度的模块,difflib。比较两个字符串的模块是difflib.SequenceMatcher,使用起来很简单:

    import difflib
    def string_similar(s1, s2):
        return difflib.SequenceMatcher(None, s1, s2).quick_ratio()
    
    print string_similar('爱尔眼科沪滨医院', '沪滨爱尔眼科医院')
    
    print string_similar('安定区妇幼保健站', '定西市安定区妇幼保健站')
    
    print string_similar('广州市医院', '广东省中医院')

     

    运行结果:

    1.0

    0.842105263158

    0.606060606061

    最主要的是,python原生的模块的效率都比较好。其中None的位置是一个函数,用来去掉自己不想算在内的元素。比如我想把空格排除在外:

    seq = difflib.SequenceMatcher(lambda x:x=" ", a, b)
    
    ratio = seq.ratio()

     

     

    准备做一个小功能,需要计算字符串的相似度,提前做点功课。

    算法

    字符串相似度的算法以及有很多资料了。最常见的理解就是:把一个字符串通过插入、删除或替换这样的编辑操作,变成另外一个字符串ÿ

    展开全文
  • python 字符串相似度计算,距离算法

    千次阅读 2018-09-10 10:39:59
    字符串相似度最常见的办法就是:把一个字符串通过插入、删除或替换为另一个字符串,所需要的最少编辑次数,这种就是编辑距离(edit distance)度量方法,也称为Levenshtein距离。海明距离是编辑...

    字符串的相似性比较应用场合很多,像拼写纠错、文本去重、上下文相似性等,判断2个文字列的相似度的多少,合理使用的话就可以实现Google、百度等搜索引擎中的 ‘你是不是要找‘XX’’ 的功能了。

    字符串相似度最常见的办法就是:把一个字符串通过插入、删除或替换为另一个字符串,所需要的最少编辑次数,这种就是编辑距离(edit distance)度量方法,也称为Levenshtein距离。海明距离是编辑距离的一种特殊情况,只计算等长情况下替换操作的编辑次数,只能应用于两个等长字符串间的距离度量。其他常用的度量方法还有 Jaccard distance、J-W距离(Jaro–Winkler distance)、余弦相似性(cosine similarity)、欧氏距离(Euclidean distance)等

    import difflib
    import Levenshtein
    
    str1 = "未来资金还款来源主要包括上市公司分红"
    str2 = "未来还款资金来源主要包括个人日常收入"
    
    # 1. difflib
    seq = difflib.SequenceMatcher(None, str1, str2)
    ratio = seq.ratio()
    print('difflib similarity1: ', ratio)
    #返回的结果超过0.6就算很相似。目前做近义词词典就是借助相似度自动化来实现。
    
    # difflib 去掉列表中不需要比较的字符
    seq = difflib.SequenceMatcher(lambda x: x in '主要', str1, str2)
    ratio = seq.ratio()
    print('difflib similarity2: ', ratio)
    
    #2. hamming距离,str1和str2长度必须一致,描述两个等长字串之间对应位置上不同字符的个数
    sim = Levenshtein.hamming(str1, str2)
    print('hamming similarity: ', sim)
    
    # 3. 编辑距离,描述由一个字串转化成另一个字串最少的操作次数,在其中的操作包括 插入、删除、替换
    sim = Levenshtein.distance(str1, str2)
    print('Levenshtein similarity: ', sim)
    
    # 4.计算莱文斯坦比
    sim = Levenshtein.ratio(str1, str2)
    print('Levenshtein.ratio similarity: ', sim)
    
    # 5.计算jaro距离
    sim = Levenshtein.jaro(str1, str2)
    print('Levenshtein.jaro similarity: ', sim)
    
    # 6. Jaro–Winkler距离
    sim = Levenshtein.jaro_winkler(str1, str2)
    print('Levenshtein.jaro_winkler similarity: ', sim)

    输出 

    difflib similarity1:  0.5555555555555556
    difflib similarity2:  0.5555555555555556
    hamming similarity:  10
    Levenshtein similarity:  10
    Levenshtein.ratio similarity:  0.5555555555555556
    Levenshtein.jaro similarity:  0.7222222222222222
    Levenshtein.jaro_winkler similarity:  0.7777777777777778

    ref:https://blog.csdn.net/qq_37788558/article/details/78780785

    https://blog.csdn.net/xiaodongxiexie/article/details/78221271

    https://blog.csdn.net/u013055678/article/details/52695280

    https://blog.csdn.net/u010454729/article/details/46559845(推荐)

    https://blog.csdn.net/yixianfeng41/article/details/61917158

    展开全文
  • Python实现的十多种字符相似度算法

    千次阅读 2018-06-21 22:08:25
    最近因为工作需要,使用Python实现了常用的字符串相似度算法,一共超过十种。列举如下: * Levenshtein * NormalizedLevenshtein * WeightedLevenshtein * DamerauLevenshtein * OptimalStringAlignment * ...
  • 平时的编码中,我们经常需要判断两个文本的相似性,不管是用来做文本纠错或者去重等等,那么我们应该以什么维度来判断相似性呢?这些算法又怎么实现呢?这篇文章对常见的计算方式做一个记录。Leven...
  • 主要方法有:编辑距离、余弦相似度、模糊相似度百分比 1、编辑距离 def levenshtein(first, second): ''' 编辑距离算法(LevD... returns: 两个字符串的编辑距离 int ''' if len(first) > len(se...
  • /usr/bin/env python def levenshtein(a,b): "Calculates the Levenshtein distance between a and b." n, m = len(a), len(b) if n > m: # Make sure n <= m, to use O(min(n,m)) spa...
  • 编辑距离是针对二个字符串(例如英文字)的差异程度的量化量测,量测方式是看至少需要多少次的处理才能将一个字符串变成另一个字符串。 利用编辑距离计算相似度的概率f(x,y): 如果y为x的子串,则f(x,y)=1f(x,y)=1...
  • Python 字符串相似性的几种度量方法

    万次阅读 2018-02-01 19:26:11
    评价字符串相似度最常见的办法就是:把一个字符串通过插入、删除或替换这样的编辑操作,变成另外一个字符串,所需要的最少编辑次数,这种就是编辑距离(edit distance)度量方法,也称为Levenshtein距离。...
  • Levenshtein算法python也是用的这个对比字符串相似度的,还不错
  • 文本相似度算法的对比及python实现

    千次阅读 多人点赞 2019-11-01 15:00:42
    文本相似度算法的对比及python实现 前言 通常我们有这样的需求:对两篇文章或者产品内容进行重复率查询。 为了解决类似的问题,罗列了一些常见的相似度算法,用python代码实现。 五种常见的相似度算法:余弦相似度...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • Python计算字符串相似度

    万次阅读 2017-02-28 14:20:36
    字符串相似度算法以及有很多资料了。最常见的理解就是:把一个字符串通过插入、删除或替换这样的编辑操作,变成另外一个字符串,所需要的最少编辑次数。AKA,两个字符串之间的距离。解这样一个问题,可以使用穷举...
  • 在搞验证码识别的时候需要比较字符代码的相似度用到“编辑距离算法”,关于原理和C#实现做个记录。 据百度百科介绍: 编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需...
  • >>> str1 ='hchaha' >>> str2 ='hahahb' >>> >>> cmplst = zip(list(str1), list(str2)) >&...
  • 只是衡量两个字符串之间的相同字符的占比,而未考虑字符的排序导致的两个字符的差异 s1="艾伦图灵传" s2="艾伦图灵传" def jaccard_score(s1,s2): print("s1",set(s1)) print("s2", set(s2)) print("s1&
  • Levenshtein Distance 算法,又叫Edit Distance 算法,是指两个字符串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。一般来说,编辑...
  • 1、先对下面两字符串进行分词处理: s1 = "hi,今天温度是12摄氏度。" s2 = "hello,今天温度很高。" 分词结果: ['hi', '今', '天', '温', '度', '是', '12', '摄', '氏', '度'] ['hello', '今', '天', '温', ...
  • 编辑距离算法即MED(Minimum Edit Distance)算法,由俄罗斯的 Vladimir Levenshtein 在1965年提出,故又称Levenshtein距离。
  • 1、Javapublic static void ... // 计算两个字符串的长度。 int len1 = str1.length(); int len2 = str2.length(); // 建立上面说的数组,比字符长度大一个空间 int[][] dif = new int[len1 + 1
  • 我们再工作中可能会遇到需要判断两个字符串有多少相似度的情况(比如抓取页面内容存入数据库,如果相似度大于70%则判定为同一片文章,则不录入数据库) 那这个时候,我们应该怎么判断呢? 不要着急,python自带的...
  • 文章目录自然语言处理系列二十八文本相似度算法字符串编辑距离Python代码实现总结 自然语言处理系列二十八 文本相似度算法 在自然语言处理中,我们经常需要判定两个东西是否相似。比如,在微博的热点话题推荐那里,...
  • 总共有六个算法,具体算法思想可以关注前面发过的文章,但是其中的基于自大子字符串长度的算法运行效率太低,有待优化。 由于代码中有相关注释,所以实现过程就不一一赘述 # -*- coding:utf-8 -*- #这个.py将所有的...
  • data.csv中包含了一个新闻标题列表,试通过近似检测方法,通过Jaccard相似度,检测相似文章,将结果保存到csv文件中,不同文章间用空行隔开。 Work 思路: 两个词作为一段来计算,末尾不够截掉 Jaccard相关系数大于...
  • 计算字符串相似度的一些方法

    千次阅读 2018-09-30 12:10:11
    产品出了一个奇怪的需求,想通过字符串相似度取匹配城市= =(当然,最后证实通过字符串相似度取判断两个字符串是不是一个城市是不对的!!!) 这里就记录一下我计算字符串(英文字符串)相似度的方法吧~ 参考文档: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,955
精华内容 1,582
关键字:

字符串相似度算法python

python 订阅