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中map、any、all函数用法分析
Apr 21 Python
python验证码识别教程之滑动验证码
Jun 04 Python
Python实现的json文件读取及中文乱码显示问题解决方法
Aug 06 Python
Python 实现中值滤波、均值滤波的方法
Jan 09 Python
解决python测试opencv时imread导致的错误问题
Jan 26 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
Apr 06 Python
django 控制页面跳转的例子
Aug 06 Python
在Python中画图(基于Jupyter notebook的魔法函数)
Oct 28 Python
Pytorch 数据加载与数据预处理方式
Dec 31 Python
python实现图像外边界跟踪操作
Jul 13 Python
Python偏函数实现原理及应用
Nov 20 Python
python3判断IP地址的方法
Mar 04 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的ASP防火墙
2006/10/09 PHP
PHP访问数据库集群的方法小结
2016/03/14 PHP
php中使用GD库做验证码
2016/03/31 PHP
Yii统计不同类型邮箱数量的方法
2016/10/18 PHP
PHP7 错误处理机制修改
2021/03/09 PHP
Javascript 网页黑白效果实现代码(兼容IE/FF等)
2010/04/23 Javascript
js获取元素在浏览器中的绝对位置
2010/07/24 Javascript
javascript firefox 自动加载iframe 自动调整高宽示例
2013/08/27 Javascript
js实现的点击数量加一可操作数据库
2014/05/09 Javascript
node.js解决获取图片真实文件类型的问题
2014/12/20 Javascript
arguments对象验证函数的参数是否合法
2015/06/26 Javascript
Bootstrap栅格系统简单实现代码
2017/03/06 Javascript
详解webpack异步加载业务模块
2017/06/23 Javascript
基于Bootstrap框架菜鸟入门教程(推荐)
2017/09/17 Javascript
图片加载完成再执行事件的实例
2017/11/16 Javascript
nodejs使用http模块发送get与post请求的方法示例
2018/01/08 NodeJs
js中Object.defineProperty()方法的不详解
2018/07/09 Javascript
uni app仿微信顶部导航条功能
2019/09/17 Javascript
Javascript新手入门之字符串拼接与变量的应用
2020/12/03 Javascript
vue实现登录功能
2020/12/31 Vue.js
[15:20]DOTA2亚洲邀请赛总决赛开幕式表演:羽泉献唱
2017/04/05 DOTA
Python3实现从指定路径查找文件的方法
2015/05/22 Python
python3 shelve模块的详解
2017/07/08 Python
Python 私有函数的实例详解
2017/09/11 Python
Python 实现使用dict 创建二维数据、DataFrame
2018/04/13 Python
PyQt5实现拖放功能
2018/04/25 Python
python学习之hook钩子的原理和使用
2018/10/25 Python
Django启动时找不到mysqlclient问题解决方案
2020/11/11 Python
比利时网上药店: Drogisterij.net
2017/03/17 全球购物
工会优秀工作者事迹
2014/08/17 职场文书
大学生学年个人总结
2015/02/15 职场文书
应届生求职自荐信范文
2015/03/04 职场文书
幼儿园园务工作总结2015
2015/05/18 职场文书
学雷锋活动简报
2015/07/20 职场文书
患者身份识别制度
2015/08/06 职场文书
护士年终工作总结不会写?各科护士模板总结
2020/01/02 职场文书