位置: 编程技术 - 正文

Python文本相似性计算之编辑距离详解

编辑:rootadmin

推荐整理分享Python文本相似性计算之编辑距离详解,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

编辑距离

编辑距离(Edit Distance),又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。一般来说,编辑距离越小,两个串的相似度越大。

例如将kitten一字转成sitting:('kitten' 和 ‘sitting' 的编辑距离为3)

sitten (k→s)

sittin (e→i)

sitting (→g)

Python中的Levenshtein包可以方便的计算编辑距离

包的安装: pip install python-Levenshtein

我们来使用下:

上面的程序执行结果为3,但是只改了一个字符,为什么会发生这样的情况?

原因是Python将这两个字符串看成string类型,而在 string 类型中,默认的 utf-8 编码下,一个中文字符是用三个字节来表示的。

解决办法是将字符串转换成unicode格式,即可返回正确的结果1。

接下来重点介绍下保重几个方法的作用:

计算编辑距离(也称Levenshtein距离)。是描述由一个字串转化成另一个字串最少的操作次数,在其中的操作包括插入、删除、替换。算法实现:动态规划。

计算汉明距离。要求str1和str2必须长度一致。是描述两个等长字串之间对应位置上不同字符的个数。

计算莱文斯坦比。计算公式 r = (sum ? ldist) / sum, 其中sum是指str1 和 str2 字串的长度总和,ldist是类编辑距离。注意这里是类编辑距离,在类编辑距离中删除、插入依然+1,但是替换+2。

Python文本相似性计算之编辑距离详解

计算jaro距离,Jaro Distance据说是用来判定健康记录上两个名字是否相同,也有说是是用于人口普查,我们先来看一下Jaro Distance的定义。

两个给定字符串S1和S2的Jaro Distance为:

其中的m为s1, s2匹配的字符数,t是换位的数目。

两个分别来自S1和S2的字符如果相距不超过

时,我们就认为这两个字符串是匹配的;而这些相互匹配的字符则决定了换位的数目t,简单来说就是不同顺序的匹配字符的数目的一半即为换位的数目t。举例来说,MARTHA与MARHTA的字符都是匹配的,但是这些匹配的字符中,T和H要换位才能把MARTHA变为MARHTA,那么T和H就是不同的顺序的匹配字符,t=2/2=1。

两个字符串的Jaro Distance即为:

计算Jaro?Winkler距离,而Jaro-Winkler则给予了起始部分就相同的字符串更高的分数,他定义了一个前缀p,给予两个字符串,如果前缀部分有长度为ι的部分相同,则Jaro-Winkler Distance为:

dj是两个字符串的Jaro Distance

ι是前缀的相同的长度,但是规定最大为4

p则是调整分数的常数,规定不能超过,不然可能出现dw大于1的情况,Winkler将这个常数定义为0.1

这样,上面提及的MARTHA和MARHTA的Jaro-Winkler Distance为:

个人觉得算法可以完善的点:

去除停用词(主要是标点符号的影响)

针对中文进行分析,按照词比较是不是要比按照字比较效果更好?

总结

标签: Python文本相似性计算之编辑距离详解

本文链接地址:https://www.jiuchutong.com/biancheng/383405.html 转载请保留说明!

上一篇:Python实现全角半角字符互转的方法(python全角半角)

下一篇:Python抓取手机号归属地信息示例代码(python抓取手机号软件)

  • 创业投资企业可以按照其对中小高新技术企业投资额的
  • 注册税务师考试科目
  • 公司投资股票亏损,要交企业所得税和个人所得税吗
  • 信息技术服务可以简易征收吗
  • 甲方给的工程奖项有哪些
  • 预缴纳税和年度汇缴
  • 免征增值税还要交印花税么
  • 成本收入不配比的风险有哪些
  • 填写银行结算凭证的有关印鉴,应集中由谁保管
  • 预提费用下月要冲回吗
  • 净水设备配件计算方法
  • 融资租赁分摊差额扣除会计处理?
  • 发给一个人的说说
  • 境外单位向境内单位提供咨询
  • 哪些情况下不就地分摊缴纳企业所得税?
  • 哪些行业可以加计抵扣进项税
  • 原材料损失计入
  • 企业为职工缴纳的五险一金占工资总额的多少
  • 样品寄送时运费支付的对策
  • 收到购买商品发票怎么做账
  • 电脑c盘变红了怎么回事
  • 没收到电费账单怎么办
  • 购入的车辆入账包括哪些费用
  • 如何设置让电脑运行更快
  • php命名空间
  • php的核心
  • php防止再次刷新
  • macOS Big Sur 11.2 RC 3(版本号20D64)预览版正式发布(附更新内容)
  • 补缴的土地出让金契税
  • kavsvc.exe - kavsvc是什么进程 有什么作用
  • cuda torch
  • php多进程开发
  • 微信php开发教程
  • PHP:mcrypt_list_modes()的用法_Mcrypt函数
  • 核定征收的企业所得税怎么算
  • cookies方法
  • Win11系统自带输入法怎么卸载
  • php如何使用
  • nsloopup命令
  • 确认递延所得税资产时,应估计相关可抵扣
  • 公司购进软件的账务处理
  • python {:s}
  • 公司向法人借款需要多久还清
  • 出口免税申报流程视频
  • mysql批量查询
  • 受托方代销商品会计分录
  • 企业给员工报销的个人消费支出如何计税
  • 外包食堂如何进货
  • 太阳能发电的开发条件
  • 建筑安装服务的进项税有哪些
  • 未开票收入如何结转成本
  • 去年漏记了收入,可以记今年吗
  • 折旧年限的最新规定2021
  • 企业提取盈余公积的比例
  • mysql里面的数据类型
  • 如何避免在游戏中切输入法
  • win7系统宽带连接
  • win10建行网银盾插上网页弹不出来
  • 解决Windows Server远程断开后自动
  • 怎么禁止p2p下载器
  • windows7开机提示盗版
  • linux中查看文件
  • win10怎么用ios上网
  • linux常见的启动方式
  • Python探索之Metaclass初步了解
  • Tutorial 6:Translation Transformation
  • css命名大全
  • Default style sheet for HTML 4
  • html中href,src区别
  • js区分浏览器页面大小
  • JavaScript事件处理的方式(三种)
  • js数组菜鸟教程
  • JavaScript入门教程
  • jquery怎么给div赋值
  • jquery 判断是否显示
  • 煤炭洗选工艺
  • 武汉税务局官网查询系统
  • 广西定额发票查询入口官网
  • 消防行政执法风险评估
  • 什么是印花税,印花税有哪些特点
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设