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使用Srapy框架爬虫模拟登陆并抓取知乎内容
Jul 02 Python
Python 常用 PEP8 编码规范详解
Jan 22 Python
python 创建一个空dataframe 然后添加行数据的实例
Jun 07 Python
Python-copy()与deepcopy()区别详解
Jul 12 Python
Python3中urlencode和urldecode的用法详解
Jul 23 Python
解析python实现Lasso回归
Sep 11 Python
tensorflow实现对张量数据的切片操作方式
Jan 19 Python
django rest framework 自定义返回方式
Jul 12 Python
python3将变量输入的简单实例
Aug 19 Python
python实现单机五子棋
Aug 28 Python
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
May 17 Python
实战Python爬虫爬取酷我音乐
Apr 11 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获取远程图片体积大小的实例
2013/11/12 PHP
php使用正则表达式进行字符串搜索的方法
2015/03/23 PHP
Jquery倒数计时按钮setTimeout的实例代码
2013/07/04 Javascript
动态的创建一个元素createElement及删除一个元素
2014/01/24 Javascript
yepnope.js使用详解及示例分享
2014/06/23 Javascript
简化版手机端照片预览组件
2015/04/13 Javascript
javascript解析xml实现省市县三级联动的方法
2015/07/25 Javascript
Vue v2.5 调整和更新不完全问题
2017/10/24 Javascript
基于node.js实现微信支付退款功能
2017/12/19 Javascript
微信小程序实时聊天WebSocket
2018/07/05 Javascript
ant-design-vue按需加载的坑的解决
2020/05/14 Javascript
JS字符串和数组如何实现相互转化
2020/07/02 Javascript
nuxt静态部署打包相对路径操作
2020/11/06 Javascript
[57:12]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第一场 10.31
2020/11/02 DOTA
Python实现向QQ群成员自动发邮件的方法
2014/11/19 Python
利用Python的装饰器解决Bottle框架中用户验证问题
2015/04/24 Python
Python使用django框架实现多人在线匿名聊天的小程序
2017/11/29 Python
python直接获取API传递回来的参数方法
2018/12/17 Python
Python之时间和日期使用小结
2019/02/14 Python
pyqt5 使用label控件实时显示时间的实例
2019/06/14 Python
python如何实现视频转代码视频
2019/06/17 Python
Django结合ajax进行页面实时更新的例子
2019/08/12 Python
Python使用configparser库读取配置文件
2020/02/22 Python
如何在python中执行另一个py文件
2020/04/30 Python
Django 解决model 反向引用中的related_name问题
2020/05/19 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
2020/10/22 Python
CSS3实现的文本3D效果附图
2014/09/03 HTML / CSS
全球领先的各类汽车配件零售商:Advance Auto Parts
2016/08/26 全球购物
财务会计专业个人求职信范本
2014/01/08 职场文书
创业计划书的写作技巧及要点
2014/01/31 职场文书
中学生运动会入场词
2014/02/12 职场文书
学习方法演讲稿
2014/05/10 职场文书
学习教师法的心得体会
2014/09/03 职场文书
2014年重阳节老干部座谈会局领导发言稿
2014/09/25 职场文书
文明礼仪主题班会
2015/08/13 职场文书
win10搭建配置ftp服务器的方法
2022/08/05 Servers