位置: 编程技术 - 正文

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

  • 应付账款转资本公积
  • 小微企业增值税减免政策
  • 减免税款抵税怎么做分录
  • 网络文化传媒公司名字
  • 减免税额和抵免的区别
  • 单位缴纳的社保在哪里查询
  • 广告费收入是不是非税收入
  • 以库存现金代垫怎么做账
  • 哪些支出可计入成本
  • 个人技术转让所得需要交税吗
  • 无票费用如何做凭证分录
  • 房租的应收必须交吗
  • 物业公司广告位出租怎么入账
  • 已认证发票退货怎么办
  • 跨期发票如何进行会计处理?
  • 非公党费返还
  • 电信apn接入点设置+最快
  • 年末资产减年初资产
  • 电脑不能上网是什么原因?
  • php怎么连接服务器
  • 建筑行业企业所得税怎么征收
  • downloadplus.exe是什么进程 作用是什么 downloadplus进程是安全的吗
  • php表单验证实例
  • PHP:Memcached::getOption()的用法_Memcached类
  • 小本票防伪
  • 制造企业成本计算模型有哪些类型
  • 材料暂估入账
  • PHP:imagecreatefrompng()的用法_GD库图像处理函数
  • php二维数组按某个键值排序
  • vue侧边栏导航,右侧显示对应内容
  • php获取路径和目录的方法
  • 学摄影要交学费吗
  • 企业所得税按季还是按年
  • vue使用计算属性
  • 30岁之后去面试
  • 人才引进的安家费
  • 商品流通企业采用售价法核算条件下
  • mysql有输入输出语句
  • mongodb怎么复制粘贴
  • 其他业务收入与营业外收入
  • 股权司法冻结及司法划转解释
  • 企业向个人借款合同模板
  • mysql常见故障
  • 消费税如何计量
  • 影响债券投资收益率的因素有
  • 计划成本法有什么差异
  • 公司奖励员工制度
  • 转出未交增值税最终怎么转平
  • 股东分红的会计分录怎么做
  • 赠送的商品如何入账
  • 没进项发票开销项发票可以吗?
  • 年末本年利润没有结转影响报税吗
  • sql server.
  • 基本的select命令及作用
  • mysql里的数据库在哪个位置
  • sql查询界面怎么做
  • windows server 2003 sp2密钥
  • 联想lenovo小新pro16 2023版
  • u盘一键启动安装系统,电脑只有两个盘
  • ubuntu15.04安装教程
  • mac清理所有数据
  • linuxssh免密码登录
  • linux系统ftp服务
  • 腾讯tp驱动
  • 如何配置centos7下的apache服务
  • load its core dll
  • surface准备就绪
  • python3 栈
  • perl-v
  • 用css滤镜实现的代码
  • python中ridge
  • jquery获取单选按钮的值
  • 酒吧要交国税还是省税
  • 陕西省12366纳税服务热线
  • 职工周转房需要缴纳房产税吗
  • 四川省地方税务局公告2018年第1号
  • 园区地税局在哪里
  • 河南濮阳市供电公司何文中个人简历
  • 印花税属于什么业务类型
  • 个人所得税法全文完整版2023个人工薪规定
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设