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中利用生成器实现的并发编程
May 04 Python
Python输出9*9乘法表的方法
May 25 Python
Python聚类算法之DBSACN实例分析
Nov 20 Python
python实现淘宝秒杀聚划算抢购自动提醒源码
Jun 23 Python
谈谈python中GUI的选择
Mar 01 Python
python实现飞机大战微信小游戏
Mar 21 Python
详解Python文件修改的两种方式
Aug 22 Python
Python迭代器iterator生成器generator使用解析
Oct 24 Python
浅谈python中统计计数的几种方法和Counter详解
Nov 07 Python
python多线程爬取西刺代理的示例代码
Jan 30 Python
Python中对象的比较操作==和is区别详析
Feb 12 Python
Python办公自动化之教你如何用Python将任意文件转为PDF格式
Jun 28 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获取远程图片的两种 CURL方式和sockets方式获取远程图片
2011/11/07 PHP
php同时使用session和cookie来保存用户登录信息的实现代码
2016/05/13 PHP
PHP时间类完整代码实例
2021/02/26 PHP
一些老手都不一定知道的JavaScript技巧
2014/05/06 Javascript
显示今天的日期js代码(阳历和农历)
2014/09/30 Javascript
jQuery遍历页面所有CheckBox查看是否被选中的方法
2015/04/14 Javascript
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
javascript特效实现——当前时间和倒计时效果的简单实例
2016/07/20 Javascript
关于动态执行代码(js的Eval)实例详解
2016/08/15 Javascript
微信小程序 教程之注册程序
2016/10/17 Javascript
JavaScript格式化json和xml的方法示例
2019/01/22 Javascript
jquery多级树形下拉菜单的实例代码
2019/07/09 jQuery
vue表单中遍历表单操作按钮的显示隐藏示例
2019/10/30 Javascript
js实现表格数据搜索
2020/08/09 Javascript
vue界面发送表情的实现代码
2020/09/11 Javascript
jQuery实现电梯导航模块
2020/12/22 jQuery
python编程-将Python程序转化为可执行程序[整理]
2007/04/09 Python
python利用paramiko连接远程服务器执行命令的方法
2017/10/16 Python
python中partial()基础用法说明
2018/12/30 Python
Python实现的统计文章单词次数功能示例
2019/07/08 Python
关于多元线性回归分析——Python&SPSS
2020/02/24 Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
2020/03/23 Python
基于OpenCV的网络实时视频流传输的实现
2020/11/15 Python
Optimalprint加拿大:在线打印服务
2020/04/03 全球购物
后备干部考察材料
2014/02/12 职场文书
预备党员的自我评价
2014/03/12 职场文书
文明寄语大全
2014/04/11 职场文书
党日活动总结
2014/05/07 职场文书
个人四风问题原因分析及整改措施
2014/09/28 职场文书
党支部三严三实对照检查材料思想汇报
2014/09/29 职场文书
挂靠协议书
2015/01/27 职场文书
财政局长个人总结
2015/03/04 职场文书
被委托人身份证明
2015/08/07 职场文书
阿里云 Windows server 2019 配置FTP
2022/04/28 Servers
Windows Server 2008配置防火墙策略详解
2022/06/28 Servers
LeetCode189轮转数组python示例
2022/08/05 Python