位置: 编程技术 - 正文

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

  • 税务纳税等级m级是什么等级
  • 税收的作用是什么
  • 收付实现制有应收应付吗
  • 无发票的费用怎样补交所得税
  • 增值税17-16-13的时间
  • 财政拨款收入和财政补助收入的区别
  • 开具红字增值税专用发票的条件
  • 房地产限购过程是什么
  • 付给其他公司的利息怎么做账
  • 未安装使用
  • 企业发生的装修费可以几年摊销
  • 买酒 专票
  • 启用新账簿
  • 如何看发票是否被抵扣
  • 企业股权溢价转让会计分录
  • 非正常损失的购进货物进项税不能抵扣
  • 核定征收企业所得税的小型微利企业不得享受优惠政策
  • 物业费需不需要物价局审批
  • 房产报废手续
  • 呆帐死帐处理
  • windows已禁用
  • 购销合同违约罚款属什么科目
  • win11专业版和家庭版哪个更流畅
  • PHP:pg_field_size()的用法_PostgreSQL函数
  • musirc4.71.exe - musirc4是什么进程文件 有什么作用
  • 禁止input标签输入
  • windows安装无法继续,若要安装请重新启动
  • gridviewcolumn
  • 微信手机充值怎么自定义金额
  • 原材料按实际成本核算需设置的科目包括
  • web搜索与挖掘
  • vue里的for循环
  • 权益法的比例是多少
  • 报销具体流程
  • 进项税转出金额是发票上的哪个
  • 永续债利息可以扣除嘛
  • 批处理命令在windows操作中的典型应用
  • 增值税发票是记账联还是抵扣联
  • 小企业销售商品时,确认收入的标志有
  • 金税盘维护费发票
  • 应收账款在贷方为负数表示什么
  • 公司购买房子如何交税
  • 残疾人个人所得税扣除
  • 企业以现金形式发工资
  • 高速公路过路费怎么算的
  • 计提税金用什么附件
  • 增值税专用发票金额与付款金额是否必须一致
  • 盘亏盘盈的会计处理
  • 工业企业外购存货成本有
  • 暂估入库后发票整单折扣
  • 车辆购置税可以退税吗
  • 绩效工资定义及标准
  • 预收账款怎么处理
  • 包工包料工程如何报价合理
  • 一般会计准则是什么
  • 国内佣金如何入账
  • 资产减值损失属于营业外支出吗
  • 明细账的登记方向与总账的登记方向是一致的
  • 年初建账的期初余额
  • sql的数据操作
  • sql server数据
  • mysql的用户管理与权限管理
  • win2000系统
  • 硬盘磁盘保护
  • vmware8.0.4
  • xp系统硬盘管理
  • Win10系统怎么添加字体
  • windows补丁kb3033929
  • win7电脑磁盘突然不见了怎么办
  • cocos2dx scrollview
  • javascriptdom编程
  • Qt Quick + OpenGL + Bullet初次测试
  • jquery jsonview
  • python中的条件判断和循环语句
  • jquery有自定义选择器吗
  • 装卸搬运费属于
  • 应交增值税减免税款借贷方向
  • 年度纳税申报基础信息表怎么填
  • 税务局高风险人员有啥影响
  • 税务机关纳税检讨书范文
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设