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实现的单向循环链表功能示例
Nov 10 Python
python中闭包Closure函数作为返回值的方法示例
Dec 17 Python
利用 python 对目录下的文件进行过滤删除
Dec 27 Python
Python查找第n个子串的技巧分享
Jun 27 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
Mar 30 Python
记录Python脚本的运行日志的方法
Jun 05 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
Dec 18 Python
使用python客户端访问impala的操作方式
Mar 28 Python
解决django FileFIELD的编码问题
Mar 30 Python
Python调用Redis的示例代码
Nov 24 Python
五种Python转义表示法
Nov 27 Python
Python 中Operator模块的使用
Jan 30 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冒泡算法详解(递归实现)
2014/11/10 PHP
PHP实现验证码校验功能
2017/11/16 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
html下载本地
2006/06/19 Javascript
你的编程语言可以这样做吗?
2006/09/07 Javascript
javascript中bind函数的作用实例介绍
2014/09/28 Javascript
Jquery修改页面标题title其它JS失效的解决方法
2014/10/31 Javascript
在Node.js中使用HTTP上传文件的方法
2015/06/23 Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
2015/10/27 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
2016/01/12 Javascript
jQuery中的一些小技巧
2017/01/18 Javascript
H5图片压缩与上传实例
2017/04/21 Javascript
详解JavaScript数组过滤相同元素的5种方法
2017/05/23 Javascript
Vuejs+vue-router打包+Nginx配置的实例
2018/09/20 Javascript
Vue加载json文件的方法简单示例
2019/01/28 Javascript
vue 验证码界面实现点击后标灰并设置div按钮不可点击状态
2019/10/28 Javascript
nodejs实现的http、https 请求封装操作示例
2020/02/06 NodeJs
vue使用video插件vue-video-player的示例
2020/10/03 Javascript
在Django框架中运行Python应用全攻略
2015/07/17 Python
用Python设计一个经典小游戏
2017/05/15 Python
python下10个简单实例代码
2017/11/15 Python
python实现Adapter模式实例代码
2018/02/09 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
2019/02/13 Python
python在新的图片窗口显示图片(图像)的方法
2019/07/11 Python
pycharm如何实现跨目录调用文件
2020/02/28 Python
用CSS3写的模仿iPhone中的返回按钮
2015/04/04 HTML / CSS
Html5页面在微信端的分享的实现方法
2018/08/30 HTML / CSS
南威尔士家居商店:Leekes
2016/10/25 全球购物
欧洲最大的球衣网上商店:Kitbag
2017/11/11 全球购物
大学毕业生工作的自我评价
2013/10/01 职场文书
机电一体化毕业生自荐信
2014/06/19 职场文书
2014年安全生产责任书
2014/07/22 职场文书
2015年“我们的节日·重阳节”活动总结
2015/07/29 职场文书
优秀的商业计划书,让融资一步到位
2019/05/07 职场文书
python迷宫问题深度优先遍历实例
2021/06/20 Python
JavaWeb 入门:Hello Servlet
2021/07/16 Java/Android