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()函数和reduce()函数的用法
Apr 27 Python
合并百度影音的离线数据( with python 2.3)
Aug 04 Python
关于Python中异常(Exception)的汇总
Jan 18 Python
python selenium自动上传有赞单号的操作方法
Jul 05 Python
python排序函数sort()与sorted()的区别
Sep 18 Python
Python3实现从排序数组中删除重复项算法分析
Apr 03 Python
Python实现的银行系统模拟程序完整案例
Apr 12 Python
python 用户交互输入input的4种用法详解
Sep 24 Python
Python多线程threading join和守护线程setDeamon原理详解
Mar 18 Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
Apr 08 Python
python属于软件吗
Jun 18 Python
python time()的实例用法
Nov 03 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
用文本文件制作留言板提示(下)
2006/10/09 PHP
解析thinkphp的左右值无限分类
2013/06/20 PHP
ThinkPHP之M方法实例详解
2014/06/20 PHP
PHP清除数组中所有字符串两端空格的方法
2014/10/20 PHP
PHP模板解析类实例
2015/07/09 PHP
ThinkPHP中调用PHPExcel的实现代码
2017/04/08 PHP
利用php-cli和任务计划实现刷新token功能的方法
2017/05/03 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
不使用浏览器运行javascript代码的方法
2013/07/24 Javascript
玩转方法:call和apply
2014/05/08 Javascript
使用javascript实现判断当前浏览器
2015/04/14 Javascript
基于jquery实现复选框全选,反选,全不选等功能
2015/10/16 Javascript
利用Jquery队列实现根据输入数量显示的动画
2016/09/01 Javascript
使用DeviceOne实现微信小程序功能
2016/12/29 Javascript
JS抛物线动画实例制作
2018/02/24 Javascript
JS中自定义事件的使用与触发操作实例分析
2019/11/01 Javascript
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
[01:13]2015国际邀请赛线下观战现场
2015/08/08 DOTA
Python的SimpleHTTPServer模块用处及使用方法简介
2018/01/22 Python
python爬取足球直播吧五大联赛积分榜
2018/06/13 Python
Django框架用户注销功能实现方法分析
2019/05/28 Python
使用Python实现文字转语音并生成wav文件的例子
2019/08/08 Python
python实现通过flask和前端进行数据收发
2019/08/22 Python
使用python matplotlib 画图导入到word中如何保证分辨率
2020/04/16 Python
解决pytorch多GPU训练保存的模型,在单GPU环境下加载出错问题
2020/06/23 Python
使用Python下载抖音各大V视频的思路详解
2021/02/06 Python
css3通过scale()、rotate()实现放大、旋转
2020/03/19 HTML / CSS
意大利在线药房:Saninforma
2021/02/11 全球购物
网络、C以及其他硬件方面的面试题
2016/08/23 面试题
什么是Assembly(程序集)
2014/09/14 面试题
Linux的文件类型
2016/07/05 面试题
2014年中班元旦活动方案
2014/02/14 职场文书
2016公司中秋节寄语
2015/12/07 职场文书
2016应届大学生自荐信模板
2016/01/28 职场文书
javascript数组includes、reduce的基本使用
2021/07/02 Javascript
详解OpenCV获取高动态范围(HDR)成像
2022/04/29 Python