Python 比较文本相似性的方法(difflib,Levenshtein)


Posted in Python onOctober 15, 2018

最近工作需要用到序列匹配,检测相似性,不过有点复杂的是输入长度是不固定的,举例为:

input_and_output = [1, 2, '你好', 世界', 12.34, 45.6, -21, '中国', '美丽']

其中,需要从input_and_output 中选取不固定长度的一段作为输入,且顺序不定,然后去与总体进行比较,找出最符合的,开始是对汉字进行数值化编码,不过后来由于出现汉字越来越多,遂放弃该方法,转向别的方式,查找资料发现了两个python包广被推荐,从下面来看各有优缺点,记录之~

1、difflib

import difflib #python 自带库,不需额外安装

In [49]: test1
Out[49]: ['你好', '我是谁']

In [50]: test2
Out[50]: ['你好啊', '我谁']

In [51]: test3
Out[51]: [12, 'nihao']

In [52]: test4
Out[52]: ['你好', 'woshi']

In [53]: difflib.SequenceMatcher(a=test1, b=test2).quick_ratio()
Out[53]: 0.0

In [54]: difflib.SequenceMatcher(a=test1, b=test4).ratio()
Out[54]: 0.5

2、Levenshtein

#pip install python-Levenshtein

import Levenshtein


In [56]: Levenshtein.distance(','.join(test1), ','.join(test2))
Out[56]: 2

In [57]: Levenshtein.distance(','.join(test1), ','.join(test4))
Out[57]: 5

简单来说,difflib使用时不一定为字符串,但匹配时只有单个元素完全匹配才计入,

而Levenshtein则需要输入为字符串,匹配时是整体匹配(也可能跟把所有元素集中成一个字符串有关,具体待继续使用再摸索)

以上这篇Python 比较文本相似性的方法(difflib,Levenshtein)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python使用htpasswd实现基本认证授权的例子
Jun 10 Python
跟老齐学Python之编写类之四再论继承
Oct 11 Python
编写自定义的Django模板加载器的简单示例
Jul 21 Python
numpy中实现二维数组按照某列、某行排序的方法
Apr 04 Python
Python3 使用cookiejar管理cookie的方法
Dec 28 Python
python实现小球弹跳效果
May 10 Python
Python+OpenCV实现将图像转换为二进制格式
Jan 09 Python
使用pygame编写Flappy bird小游戏
Mar 14 Python
Python bisect模块原理及常见实例
Jun 17 Python
详解python中的闭包
Sep 07 Python
如何向scrapy中的spider传递参数的几种方法
Nov 18 Python
Python装饰器的练习题
Nov 23 Python
便捷提取python导入包的属性方法
Oct 15 #Python
Django安装配置mysql的方法步骤
Oct 15 #Python
深入理解Django自定义信号(signals)
Oct 15 #Python
使用numba对Python运算加速的方法
Oct 15 #Python
浅谈解除装饰器作用(python3新增)
Oct 15 #Python
python  创建一个保留重复值的列表的补码
Oct 15 #Python
python 美化输出信息的实例
Oct 15 #Python
You might like
php 生成唯一id的几种解决方法
2013/03/08 PHP
php第一次无法获取cookie问题处理
2014/12/15 PHP
PHP实现留言板功能的详细代码
2017/03/25 PHP
Laravel框架实现的使用smtp发送邮件功能示例
2019/03/12 PHP
Laravel 5.5 异常处理 & 错误日志的解决
2019/10/17 PHP
Array.prototype.slice 使用扩展
2010/06/09 Javascript
jQuery回车实现登录简单实现
2013/08/20 Javascript
js 获取页面高度和宽度兼容 ie firefox chrome等
2014/05/14 Javascript
60行js代码实现俄罗斯方块
2015/03/31 Javascript
基于ajax实现文件上传并显示进度条
2015/08/03 Javascript
javascript中获取元素标签中间的内容的实现方法
2016/10/08 Javascript
移动端刮刮乐的实现方式(js+HTML5)
2017/03/23 Javascript
nodejs爬虫初试superagent和cheerio
2018/03/05 NodeJs
Vue CLI3中使用compass normalize的方法
2019/05/30 Javascript
如何用webpack4.0撸单页/多页脚手架 (jquery, react, vue, typescript)
2019/06/18 jQuery
详解小程序云开发攻略(解决最棘手的问题)
2019/09/30 Javascript
Vue 实现html中根据类型显示内容
2019/10/28 Javascript
详解vue中v-model和v-bind绑定数据的异同
2020/08/10 Javascript
[01:03:42]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python+selenium实现自动抢票功能实例代码
2018/11/23 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
python 日志模块 日志等级设置失效的解决方案
2020/05/26 Python
Python 实现自动登录+点击+滑动验证功能
2020/06/10 Python
Python基于Faker假数据构造库
2020/11/30 Python
英国内衣连锁店:Boux Avenue
2018/01/24 全球购物
FILA德国官方网站:来自意大利的体育和街头服饰品牌
2019/07/19 全球购物
小学生作文评语大全
2014/04/21 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
校本教研活动总结
2014/07/01 职场文书
社区清明节活动总结
2014/07/04 职场文书
2014年招商引资工作总结
2014/11/22 职场文书
2014年个人教学工作总结
2014/12/09 职场文书
2015年学生会个人工作总结
2015/04/09 职场文书
大学生学生会工作总结2015
2015/05/26 职场文书
跳高加油稿
2015/07/21 职场文书
经典祝酒词大全
2015/08/12 职场文书