Python 比较文本相似性的方法(difflib,Levenshtein)
作者:晓东邪 发布时间:2022-01-29 00:19:17
标签:Python,difflib,Levenshtein
最近工作需要用到序列匹配,检测相似性,不过有点复杂的是输入长度是不固定的,举例为:
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则需要输入为字符串,匹配时是整体匹配(也可能跟把所有元素集中成一个字符串有关,具体待继续使用再摸索)
来源:https://blog.csdn.net/xiaodongxiexie/article/details/78221271
0
投稿
猜你喜欢
- 本文实例为大家分享了Python Unittest自动化单元测试框架的具体代码,供大家参考,具体内容如下1、python 测试框架(本文只涉
- 这是一种相对比较复杂的图表,但是仍然遵循上篇中提出的最基本的思路。本例中使用的定义列表标签dl可能平常我们见得不多,一般我们在做列表的时候通
- 读写 JSON 数据问题你想读写 JSON(JavaScript Object Notation) 编码格式的数据。解决方案json模块提供
- 如下所示:'''Created on 2018-4-20例子:每天凌晨3点执行func方法''
- 今天在 经纬 同学blog看到的。有这么一段代码:<ul id="demo"><li>
- 前言:WebDriver提供了两个关闭浏览器的方法,一个是前边使用quit()方法,另一个是close()方法close():关闭当前窗口q
- Django 为未来的开发人员提供了许多功能:一个成熟的标准库,一个活跃的用户社区,以及 Python 语言的所有好处。虽然其他
- 在使用ASP来进行后端的数据合法性校验的时候,有些人为满足不同环境下面的数据校验,编写了很多的函数来实现,比如,我们想要校验用户输入的URL
- 1、路径https://www.lfd.uci.edu/~gohlke/pythonlibs/PS:网上说有时候报404,解决办法是换浏览器
- 每个PHP脚本都限制了执行时间,所以我们需要通过 set_time_limit 来设置一个脚本的执行时间为无限长;然后使用 flush()
- 在编写一些小程序时,我需要比较两个字符串是否相同。一开始的思路是使用ord()函数获取字符的整数表示,但是调试过后发现,ord()函数传入的
- 下半年毕业季,各种毕业设计纷涌而至,虽然学校教了Python,但是我相信各位肯定没有认真学,做作业就懵逼的那种~所以我都给大家准备好了!各种
- 概述从今天开始, 小白我将带领大家一起来补充一下 数据库的知识.MySQL 安装下载地址:https://dev.mysql.com/dow
- 一.WITH AS的含义 WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片
- 序言:php错误就是会使脚本运行不正常的情况。php的错误有很多种,包括warning、notice、deprecated、fetal er
- int 数字类型class int(object): """ int(x=0) -&g
- alert table 表名 add column 列名 alter table 表名 drop column 列名 eg: alter t
- 父层: <div class="col-xs-12"> <div class
- 前言今天我看到线性规划模型开头的介绍,特别不错,因此,我把它记录下来了,分享给大家在工程技术、经济管理、科学研究、军事作战训练及日常生活等众
- 在我前一阵子刚刚写了“HTML5与Flash,不得不说的话题”的评论后,如各位所料,由于牵扯到多方利益和未来标准制定的角色份量,这不,有可能