位置: 编程技术 - 正文

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抓取手机号软件)

  • 一般纳税人委托其他单位加工材料收回后直接对外销售的
  • 收到税务局税收返还
  • 小规模普票怎么冲红
  • 失业稳岗补贴怎么记账
  • 递延所得税资产和递延所得税负债
  • 增值税零申报附加税费情况表没发保存
  • 防伪税控业务
  • 记账凭证上的摘要每行都要写吗
  • 合同中的税费需要交税吗
  • 小规模纳税人所得税优惠政策2023
  • 利税总额含企业所得税吗
  • 广告制作费属于现代服务吗
  • 企业所得税弥补亏损明细表怎么看
  • 税控盘怎么进行升级
  • 营改增的重点是什么
  • 金税盘不交费会停用吗
  • 食堂购买的固定资产可以一次性加计扣除吗
  • 集体福利支出包括
  • 往年银行余额和账目不符怎么调整
  • 4s店付款
  • 额外收入如何避税
  • 会计计提和冲回
  • 当无法取得对应报价时,将以即时现价报单
  • 增值税普通发票需要交税吗
  • 委托加工物资合并报表
  • 本月做账下月认证的进项怎么做账?
  • 增值税发票已经认证可以撤销吗?
  • 以太网连接网络
  • 净资产有哪些科目
  • thinkphp d方法
  • 在建工程预付款可以计入费用么
  • PHP:base64_encode()的用法_url函数
  • 公司注销做账
  • win10电脑c盘满了怎么转移到d盘
  • 无限极分类mysql
  • 补充养老保险的特点
  • mongodb4.0安装教程
  • 新准则土地使用权计入固定资产还是无形资产
  • php redis秒杀高并发解决方案
  • etc充值卡发票可以入账吗
  • 出口退税进项税额转出怎么申报
  • 社会团体所得税汇算清缴
  • 发票项目要求
  • jquery vue.js
  • mongodb修改命令
  • 建筑业 成本
  • 临时工工资账务处理该怎么进行
  • 出现什么情况企业不能持续经营
  • 现金存货盘盈盘亏计入什么科目
  • 印花税处罚适用征管法六十四条规定
  • 土地使用权如何取得
  • 库存商品盘盈怎么做账
  • 自产自销免税发票可以抵税吗
  • 餐费补贴是否计入成本
  • 可供出售金融资产是指什么
  • 金税盘系统可以添加2个账号?
  • 债务人以低于债务账面价值的现金清偿某项债务
  • 隔离模块与隔离模块如何连接?
  • 韩国电脑用什么系统
  • xp系统好怪哦
  • win2008ie安全设置
  • 在linux系统中,用来存放系统所需要的配置文件和子目录
  • linux临时目录在哪
  • win7怎么修改开始菜单样式
  • 360对win7支持多久
  • Win10系统里的Smartscreen筛选器的使用以及开启方法
  • win8.1和win10哪个好用
  • win10怎么快一点
  • cocos2dx屏幕适配解决方案
  • cocos2d::Vector
  • python多线程操作
  • node.js详解
  • python爬虫模拟登录亚马逊
  • jquery左右滑动菜单
  • 运输专票怎么开发票
  • 贵阳国家高新技术产业开发区管理委员会
  • 公司年会抽奖发言
  • 房屋契税和维修基金是开发商交还是业主交
  • 长安cs752016款2.0手动
  • 余杭区税务局地址
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设