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实现保存网页到本地示例
Mar 16 Python
python SSH模块登录,远程机执行shell命令实例解析
Jan 12 Python
Django unittest 设置跳过某些case的方法
Dec 26 Python
python爬虫 批量下载zabbix文档代码实例
Aug 21 Python
python kafka 多线程消费者&手动提交实例
Dec 21 Python
Pytorch实现各种2d卷积示例
Dec 30 Python
TensorFlow命名空间和TensorBoard图节点实例
Jan 23 Python
Python3中的f-Strings增强版字符串格式化方法
Mar 04 Python
关于Python解包知识点总结
May 05 Python
Python bisect模块原理及常见实例
Jun 17 Python
Python中猜拳游戏与猜筛子游戏的实现方法
Sep 04 Python
解决Python 写文件报错TypeError的问题
Oct 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实现插入排序
2015/03/29 PHP
php实现简单的语法高亮函数实例分析
2015/04/27 PHP
php无限级分类实现方法分析
2016/10/19 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
利用javascript移动div层-javascript 拖动层
2009/03/22 Javascript
Mootools 1.2教程 同时进行多个形变动画
2009/09/15 Javascript
IE iframe的onload方法分析小结
2010/01/07 Javascript
Dom在ajax技术中的作用说明
2010/10/25 Javascript
js编码之encodeURIComponent使用介绍(asp,php)
2012/03/01 Javascript
javascript几个易错点记录
2014/11/26 Javascript
详解Document.Cookie
2015/12/25 Javascript
ES6 系列之 WeakMap的使用示例
2018/08/06 Javascript
说说如何在Vue.js中实现数字输入组件的方法
2019/01/08 Javascript
Vue源码学习之关于对Array的数据侦听实现
2019/04/23 Javascript
关于vue3默认把所有onSomething当作v-on事件绑定的思考
2020/05/15 Javascript
js禁止查看源文件屏蔽Ctrl+u/s、F12、右键等兼容IE火狐chrome
2020/10/01 Javascript
JQuery+drag.js上传图片并且实现图片拖曳
2020/11/18 jQuery
[55:04]海涛DOTA2死魂复燃6.82版本介绍
2014/09/28 DOTA
[03:03]DOTA2 2017国际邀请赛开幕战队入场仪式
2017/08/09 DOTA
[47:52]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第二场 11.26
2020/11/30 DOTA
[49:11]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第二场 12.20
2020/12/23 DOTA
python实现域名系统(DNS)正向查询的方法
2016/04/19 Python
基于python的Tkinter编写登陆注册界面
2017/06/30 Python
Python如何使用turtle库绘制图形
2020/02/26 Python
10张动图学会python循环与递归问题
2021/02/06 Python
欧缇丽美国官网:Caudalie美国
2016/12/31 全球购物
法国最大的在线眼镜店:EasyLunettes
2019/08/26 全球购物
考博自荐信
2013/10/25 职场文书
班组长岗位职责范本
2014/01/05 职场文书
2015年办公室个人工作总结
2015/04/20 职场文书
教师廉政准则心得体会
2016/01/20 职场文书
《分数乘法》教学反思
2016/02/24 职场文书
英镑符号 £
2022/02/17 杂记
Python读写yaml文件
2022/03/20 Python
漫画「古见同学有交流障碍症」第25卷封面公开
2022/03/21 日漫
【海涛dota解说】一房久违的影魔魂守二连发
2022/04/01 DOTA