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则需要输入为字符串,匹配时是整体匹配(也可能跟把所有元素集中成一个字符串有关,具体待继续使用再摸索)
以上这篇Python 比较文本相似性的方法(difflib,Levenshtein)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
django的聚合函数和aggregate、annotate方法使用详解
这篇文章主要介绍了django的聚合函数和aggregate、annotate方法使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2019-07-07
Python PyMuPDF实现PDF与图片和PPT相互转换
能够用来对PDF文档进行操作的Python包有好几个,如提取内容的PdfPlumber、PDFMiner,可以用来对PDF文件进行修改操作的PyPDF2等等,如果只是需要简单地对PDF文件实现合并、拆分、书签操作,使用PyPDF2就足以满足。但如果想对PDF文件进行一些底层操作,基本上只有PyMuPDF了2022-12-12
Android+OpenCv4实现边缘检测及轮廓绘制出图像最大边缘
最近工作需求,需要用opencv来先做一个demo,扫描照片进行边缘检测和最大边缘,就整理出来介绍一下,感兴趣的小伙伴们可以参考一下2021-05-05


最新评论