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

作者:晓东邪 时间:2022-01-29 00:19:17 

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


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

标签:Python,difflib,Levenshtein
0
投稿

猜你喜欢

  • ASP实现防止网站被采集代码

    2011-03-25 10:40:00
  • 在Python的Flask框架下使用sqlalchemy库的简单教程

    2021-02-23 23:58:40
  • asp IsValidEmail 验证邮箱地址函数(email)

    2011-03-03 10:42:00
  • SQL Server TEXT、NTEXT字段拆分的问题

    2008-10-26 12:28:00
  • echarts柱状图坐标轴内容显示不全的两种解决办法

    2023-09-06 03:57:34
  • 培养色感的一些经验分享

    2023-11-10 03:47:03
  • 教程:mysql申明变量以及赋值

    2009-10-26 10:31:00
  • php数组索引与键值操作技巧实例分析

    2023-07-01 21:39:10
  • 推荐20家国外的脚本下载网站

    2023-08-23 11:36:02
  • PL/SQL Number数字类型函数

    2010-07-16 13:09:00
  • 浅析设计与内容呈现的关系

    2009-08-06 18:12:00
  • 用sqlalchemy构建Django连接池的实例

    2021-09-22 20:20:30
  • css网页下拉菜单制作方法(4):定位问题

    2007-02-03 11:39:00
  • Python NumPy实用函数笔记之allclose

    2023-08-24 18:09:12
  • Python远程SSH库Paramiko详细操作

    2022-08-14 18:38:09
  • 简单的ASP生成HTML并分页程序

    2009-07-20 12:32:00
  • 关于Ajax在浏览器中产生前进后退的实现方法

    2010-01-29 13:01:00
  • Python selenium页面加载慢超时的解决方案

    2022-10-15 04:37:43
  • adox 的vbs类,提取表名,列名等

    2008-07-02 12:37:00
  • MySQL与PHP的基础与应用专题之创建数据库表

    2023-11-21 04:12:28
  • asp之家 网络编程 m.aspxhome.com