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的循环体中使用else语句的方法
Mar 30 Python
python处理大数字的方法
May 27 Python
Python聊天室程序(基础版)
Apr 01 Python
Flask和Django框架中自定义模型类的表名、父类相关问题分析
Jul 19 Python
详解python while 函数及while和for的区别
Sep 07 Python
Python定义函数功能与用法实例详解
Apr 08 Python
python中bs4.BeautifulSoup的基本用法
Jul 27 Python
Python 操作 ElasticSearch的完整代码
Aug 04 Python
linux下python中文乱码解决方案详解
Aug 28 Python
windows10环境下用anaconda和VScode配置的图文教程
Mar 30 Python
Pytorch 图像变换函数集合小结
Feb 01 Python
Python中Qslider控件实操详解
Feb 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
PHP中的MYSQL常用函数(php下操作数据库必备)
2010/09/12 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
2013/06/24 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
2016/01/04 PHP
PHP基于mssql扩展远程连接MSSQL的简单实现方法
2016/10/08 PHP
php使用Jpgraph创建折线图效果示例
2017/02/15 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
JavaScript获得选中文本内容的方法
2008/12/02 Javascript
div当滚动到页面顶部的时候固定在顶部实例代码
2013/05/27 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
2013/06/24 Javascript
jQuery+PHP打造滑动开关效果
2014/12/16 Javascript
jQuery编程中的一些核心方法简介
2015/08/14 Javascript
浅谈js中调用函数时加不加括号的问题
2016/07/28 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
2016/08/19 Javascript
基于javascript实现按圆形排列DIV元素(二)
2016/12/02 Javascript
纯JS实现轮播图
2017/02/22 Javascript
Angular2库初探
2017/03/01 Javascript
Javascript实现登录记住用户名和密码功能
2017/03/22 Javascript
vue-router 权限控制的示例代码
2017/09/21 Javascript
详解vue-cli 脚手架 安装
2019/04/16 Javascript
基于layui的table插件进行复选框联动功能的实现方法
2019/09/19 Javascript
vue实现倒计时获取验证码效果
2020/04/17 Javascript
小程序接口的promise化的实现方法
2019/12/11 Javascript
node.js中process进程的概念和child_process子进程模块的使用方法示例
2020/02/11 Javascript
[05:31]DOTA2英雄梦之声_第04期_光之守卫
2014/06/23 DOTA
python实现的解析crontab配置文件代码
2014/06/30 Python
Python算术运算符实例详解
2017/05/31 Python
Python3匿名函数用法示例
2018/07/25 Python
python如何获取apk的packagename和activity
2020/01/10 Python
Python自动采集微信联系人的实现示例
2020/02/28 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
2020/04/07 Python
CSS3线性渐变简单实现以及该属性在浏览器中的不同
2012/12/12 HTML / CSS
美国花布包包品牌:Vera Bradley
2017/08/11 全球购物
港湾网络笔试题
2014/04/19 面试题
汽车检测与维修应届毕业生求职信
2013/10/19 职场文书
《第一朵杏花》教学反思
2014/04/16 职场文书
在前女友婚礼上,用Python破解了现场的WIFI还把名称改成了
2021/05/28 Python