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脚本实现分析dns日志并对受访域名排行
Sep 18 Python
为Python的web框架编写前端模版的教程
Apr 30 Python
python在指定目录下查找gif文件的方法
May 04 Python
在Python的struct模块中进行数据格式转换的方法
Jun 17 Python
Python用字典构建多级菜单功能
Jul 11 Python
Django 模型类(models.py)的定义详解
Jul 19 Python
详细介绍pandas的DataFrame的append方法使用
Jul 31 Python
python如何使用socketserver模块实现并发聊天
Dec 14 Python
django日志默认打印request请求信息的方法示例
May 17 Python
Django视图、传参和forms验证操作
Jul 15 Python
手把手教你将Flask应用封装成Docker服务的实现
Aug 19 Python
利用Python读取微信朋友圈的多种方法总结
Aug 23 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中利用XML技术构造远程服务(上)
2006/10/09 PHP
php中用于检测一个地理IP地址是否可用的代码
2012/02/19 PHP
PHP COOKIE及时生效的方法介绍
2014/02/14 PHP
Docker 如何布置PHP开发环境
2016/06/21 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
2017/02/16 PHP
List the UTC Time on a Computer
2007/06/11 Javascript
jquery 学习之二 属性(类)
2010/11/25 Javascript
javascript学习基础笔记之DOM对象操作
2011/11/03 Javascript
jQuery中DOM树操作之使用反向插入方法实例分析
2015/01/23 Javascript
jQuery使用prepend()方法在元素前添加内容用法实例
2015/03/26 Javascript
JavaScript实现控制打开文件另存为对话框的方法
2015/04/17 Javascript
JavaScript获取当前cpu使用率的方法
2015/12/15 Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
2016/01/18 Javascript
easyui window refresh 刷新两次的解决方法(推荐)
2016/05/18 Javascript
微信公众号  提示:Unauthorized API function 问题解决方法
2016/12/05 Javascript
express框架中使用jwt实现验证的方法
2019/08/25 Javascript
Google开源的Python格式化工具YAPF的安装和使用教程
2016/05/31 Python
Python操作Excel插入删除行的方法
2018/12/10 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
利用python在excel中画图的实现方法
2020/03/17 Python
python对输出的奇数偶数排序实例代码
2020/12/04 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
详解CSS3中强大的filter(滤镜)属性
2017/06/29 HTML / CSS
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
2021/01/20 HTML / CSS
TIME时代杂志台湾总代理:台时亚洲
2018/10/22 全球购物
省文明单位申报材料
2014/05/08 职场文书
幼儿园六一活动总结
2014/08/27 职场文书
售房协议书范本2014
2014/10/23 职场文书
乡镇领导班子四风整顿行动工作汇报
2014/10/25 职场文书
物流仓管员岗位职责
2015/04/01 职场文书
2015教师年度工作总结范文
2015/04/07 职场文书
离婚案件被告代理词
2015/05/23 职场文书
毕业论文答辩稿范文
2015/06/23 职场文书
护士心得体会范文
2016/01/25 职场文书
公证书
2019/04/17 职场文书
pytorch中的torch.nn.Conv2d()函数图文详解
2022/02/28 Python