当前位置: 移动技术网 > IT编程>脚本编程>Python > Python 比较文本相似性的方法(difflib,Levenshtein)

Python 比较文本相似性的方法(difflib,Levenshtein)

2018年11月09日  | 移动技术网IT编程  | 我要评论

冬枣品种,最好的我们迅雷下载,斗破拳皇

最近工作需要用到序列匹配,检测相似性,不过有点复杂的是输入长度是不固定的,举例为:

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)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网