文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

字符串相似度算法-莱文斯坦距离算法

2023-01-31 08:19

关注

莱文斯坦(Levenshtein)距离

莱文斯坦距离可以解决字符串相似度的问题。
在莱文斯坦距离中,对每一个字符都有三种操作:删除、添加、替换
例如有s1和s2两个字符串,a和b是与之对应的保存s1和s2全部字符的数组,i/j是数组下标。莱文斯坦距离的含义,是求将a变成b(或者将b变成a),所需要做的最小次数的变换。

举个例子,字符串"kitten" 与“sitting” 的莱文斯坦距离是3,因为将kitten变为sitting,最少需要三次变换:
第一步
kitten -> sitten (字符k变成s)

sitten -> sittin (字符e变成i)

sittin -> sitting ( 在末尾插入字符g)

python实现

莱文斯坦距离的python模块在https://github.com/ztane/pyth...,py2和py3都支持。

安装Levenshtein模块

windows安装
    1,pip 安装Levenshtein模块
    pip install python-Levenshtein
    具体安装过程中,需要C++ 14.0 以上版本支持。C++ 下载路径:https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads
    2,源码安装
    首先下载python_Levenshtein的源码:https://www.lfd.uci.edu/~gohlke/pythonlibs/#python-levenshtein
    下载的时候,注意源码包的python版本与本机安装python版本一致;同时需要注意的是,系统的位数。
    拿python_Levenshtein‑0.12.0‑cp36‑cp36m‑win_amd64.whl为例,cp36表示python版本是python3.6,amd64表示支持64位windows系统。
    pip install python_Levenshtein‑0.12.0‑cp36‑cp36m‑win_amd64.whl
linux安装
    pip 安装Levenshtein模块
    pip install python-Levenshtein

计算两个字符串的相似度

import Levenshtein

s3='kitten'
s4='sitting'

result=Levenshtein.ratio(s3,s4)
print('s3:%s,s4:%s:similar:%s' % (s3,s4,str(result)))

#s3:kitten,s4:sitting:similar:0.6153846153846154

案例

计算两个字符串list的相似度


import Levenshtein
import jieba

autohome='2009款 1.6L 自动G特别版'
#current='花冠 2009款 1.6L 自动G特别版'
current='2009款 自动G特别版 1.6L'
autohome_jieba_gene=jieba.cut(autohome)
current_jieba_gene=jieba.cut(current)

l1 = list(autohome_jieba_gene)
l2 = list(current_jieba_gene)

listSimilar=Levenshtein.seqratio(l1,l2)

print('l1:%s,l2:%s,similar:%s' %(repr(l1),repr(l2),str(listSimilar)))

#l1:['2009', '款', ' ', '1.6', 'L', ' ', '自动', 'G', '特别版'],l2:['2009', '款', ' ', '自动', 'G', '特别版', ' ', '1.6', 'L'],similar:0.6666666666666666
阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯