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 01 Python
python获取酷狗音乐top500的下载地址 MP3格式
Apr 17 Python
python实现泊松图像融合
Jul 26 Python
对python中的six.moves模块的下载函数urlretrieve详解
Dec 19 Python
Python告诉你木马程序的键盘记录原理
Feb 02 Python
Python求均值,方差,标准差的实例
Jun 29 Python
用Python实现二叉树、二叉树非递归遍历及绘制的例子
Aug 09 Python
python实现高斯判别分析算法的例子
Dec 09 Python
Python读取配置文件(config.ini)以及写入配置文件
Apr 08 Python
使用Keras画神经网络准确性图教程
Jun 15 Python
举例讲解Python装饰器
Dec 24 Python
Python实现视频中添加音频工具详解
Dec 06 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 MSSQL 存储过程的方法
2008/12/24 PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
2017/06/02 PHP
PHP的curl函数的用法总结
2019/02/14 PHP
用jquery统计子菜单的条数示例代码
2013/10/18 Javascript
javascript里绝对用的上的字符分割函数总结
2014/07/31 Javascript
Egret引擎开发指南之编译项目
2014/09/03 Javascript
解决Jquery向页面append新元素之后事件的绑定问题
2015/03/16 Javascript
JS数字抽奖游戏实现方法
2015/05/04 Javascript
jquery实现页面常用的返回顶部效果
2016/03/04 Javascript
Javascript中for循环语句的几种写法总结对比
2017/01/23 Javascript
使用Math.max,Math.min获取数组中的最值实例
2017/04/25 Javascript
详解javascript中的变量提升和函数提升
2018/05/24 Javascript
详解express使用vue-router的history踩坑
2019/06/05 Javascript
python脚本实现分析dns日志并对受访域名排行
2014/09/18 Python
使用Python制作获取网站目录的图形化程序
2015/05/04 Python
Python argv用法详解
2016/01/08 Python
深入理解 Python 中的多线程 新手必看
2016/11/20 Python
Python搭建FTP服务器的方法示例
2018/01/19 Python
python如何实现int函数的方法示例
2018/02/19 Python
postman模拟访问具有Session的post请求方法
2019/07/15 Python
flask/django 动态查询表结构相同表名不同数据的Model实现方法
2019/08/29 Python
基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解
2020/06/08 Python
解析Python 偏函数用法全方位实现
2020/06/26 Python
python实现模拟器爬取抖音评论数据的示例代码
2021/01/06 Python
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
佳能德国网上商店:Canon德国
2017/03/18 全球购物
法国二手手袋、手表和奢侈珠宝购物网站:Collector Square
2018/07/05 全球购物
军训鉴定表自我鉴定
2014/02/13 职场文书
房产协议书范本
2014/10/18 职场文书
故宫导游词
2015/01/31 职场文书
幼师中班个人总结
2015/02/12 职场文书
2015暑假实习报告范文
2015/07/13 职场文书
学生检讨书范文
2019/06/24 职场文书
详解nodejs内置模块
2021/05/06 NodeJs
教你一步步实现一个简易promise
2021/11/02 Javascript
代码复现python目标检测yolo3详解预测
2022/05/06 Python