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程序员开发中常犯的10个错误
Jul 07 Python
Perl中著名的Schwartzian转换问题解决实现
Jun 02 Python
Python简单实现安全开关文件的两种方式
Sep 19 Python
python中判断文件编码的chardet(实例讲解)
Dec 21 Python
解决Python运行文件出现out of memory框的问题
Dec 03 Python
jupyter notebook 中输出pyecharts图实例
Apr 23 Python
Python一键安装全部依赖包的方法
Aug 12 Python
Django如何使用jwt获取用户信息
Apr 21 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
Oct 15 Python
python实现计算图形面积
Feb 22 Python
pytorch 运行一段时间后出现GPU OOM的问题
Jun 02 Python
python中的sys模块和os模块
Mar 20 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
兼容PHP5的PHP目录管理函数库
2008/07/10 PHP
PHP学习之字符串比较和查找
2011/04/17 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
ECMAScript 基础知识
2007/06/29 Javascript
Extjs ajax同步请求时post方式参数发送方式
2009/08/05 Javascript
50个比较实用jQuery代码段
2011/09/18 Javascript
js判断背景图片是否加载成功使用img的width实现
2013/05/29 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
2014/03/06 Javascript
上传文件返回的json数据会被提示下载问题解决方案
2014/12/03 Javascript
JS中检测数据类型的几种方式及优缺点小结
2016/12/12 Javascript
Node.js学习之地址解析模块URL的使用详解
2017/09/28 Javascript
关于JavaScript语句后面的分号问题
2017/12/07 Javascript
layui-laydate时间日历控件使用方法详解
2018/11/15 Javascript
es6 super关键字的理解与应用实例分析
2020/02/15 Javascript
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
Python线程详解
2015/06/24 Python
如何为Python终端提供持久性历史记录
2019/09/03 Python
在pandas中遍历DataFrame行的实现方法
2019/10/23 Python
Python extract及contains方法代码实例
2020/09/11 Python
pytorch简介
2020/11/11 Python
python中numpy.empty()函数实例讲解
2021/02/05 Python
英国领先的珍珠首饰品牌:Orchira
2016/09/11 全球购物
味多美官网:蛋糕订购,100%使用天然奶油
2017/11/10 全球购物
香港彩色隐形眼镜在线商店:Stunninglens(全球免费送货)
2019/05/10 全球购物
可贵的沉默教学反思
2014/02/06 职场文书
建筑设计专业求职自我评价
2014/03/02 职场文书
婚礼司仪主持词
2014/03/14 职场文书
广场舞大赛策划方案
2014/05/31 职场文书
公司行政专员岗位职责
2014/08/24 职场文书
老公婚前保证书
2015/02/28 职场文书
上诉答辩状范文
2015/05/22 职场文书
泰坦尼克号观后感
2015/06/04 职场文书
十七岁的单车观后感
2015/06/12 职场文书
小学数学教师研修日志
2015/11/13 职场文书
Python下载商品数据并连接数据库且保存数据
2022/03/31 Python
Golang原生rpc(rpc服务端源码解读)
2022/04/07 Golang