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中的字典详细介绍
Sep 18 Python
python装饰器与递归算法详解
Feb 18 Python
python logging日志模块以及多进程日志详解
Apr 18 Python
Selenium的使用详解
Oct 19 Python
python利用ffmpeg进行录制屏幕的方法
Jan 10 Python
python字符串和常用数据结构知识总结
May 21 Python
Python使用configparser读取ini配置文件
May 25 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
Jul 15 Python
浅谈对python中if、elif、else的误解
Aug 20 Python
python爬取天气数据的实例详解
Nov 20 Python
利用Python实现学生信息管理系统的完整实例
Dec 30 Python
Python操作Excel的学习笔记
Feb 18 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中memcache的应用
2013/06/18 PHP
使用array_map简单搞定PHP删除文件、删除目录
2014/10/29 PHP
yii实现使用CUploadedFile上传文件的方法
2015/12/28 PHP
在JavaScript里防止事件函数高频触发和高频调用的方法
2014/09/06 Javascript
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
2015/01/01 NodeJs
javascript原生ajax写法分享
2016/04/10 Javascript
Javascript this 函数深入详解
2016/12/13 Javascript
touch.js 拖动、缩放、旋转 (鼠标手势)功能代码
2017/02/04 Javascript
ES6新特性六:promise对象实例详解
2017/04/21 Javascript
jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页)
2017/05/19 jQuery
详解Chai.js断言库API中文文档
2018/01/31 Javascript
jQuery基于闭包实现的显示与隐藏div功能示例
2018/06/09 jQuery
浅谈Angular 观察者模式理解
2018/11/01 Javascript
分享一个vue项目“脚手架”项目的实现步骤
2019/05/26 Javascript
解决使用layui的时候form表单中的select等不能渲染的问题
2019/09/18 Javascript
layer 关闭指定弹出层的例子
2019/09/25 Javascript
你知道JavaScript Symbol类型怎么用吗
2020/01/08 Javascript
ES2020 已定稿,真实场景案例分析
2020/05/25 Javascript
微信小程序onShareTimeline()实现分享朋友圈
2021/01/07 Javascript
Python json模块使用实例
2015/04/11 Python
用Python中的wxPython实现最基本的浏览器功能
2015/04/14 Python
TensorFlow实现卷积神经网络CNN
2018/03/09 Python
对python csv模块配置分隔符和引用符详解
2018/12/12 Python
详解用python写一个抽奖程序
2019/05/10 Python
python将类似json的数据存储到MySQL中的实例
2019/07/12 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
2019/07/15 Python
使用OpenCV实现仿射变换—平移功能
2019/08/29 Python
使用CSS Grid布局实现网格的流动
2014/12/30 HTML / CSS
Tenstickers法国:墙贴和装饰贴纸
2019/08/26 全球购物
美国和加拿大计算机和电子产品购物网站:TigerDirect.com
2019/09/13 全球购物
经贸日语专业个人求职信范文
2014/04/29 职场文书
综合实践活动总结
2014/05/05 职场文书
标准大学生职业生涯规划书写作指南
2014/09/18 职场文书
优秀教师申报材料
2014/12/16 职场文书
党委工作总结2015
2015/04/27 职场文书
500字作文之周记
2019/12/13 职场文书