时间:2021-05-22
最近工作需要用到序列匹配,检测相似性,不过有点复杂的是输入长度是不固定的,举例为:
input_and_output = [1, 2, '你好', 世界', 12.34, 45.6, -21, '中国', '美丽']其中,需要从input_and_output 中选取不固定长度的一段作为输入,且顺序不定,然后去与总体进行比较,找出最符合的,开始是对汉字进行数值化编码,不过后来由于出现汉字越来越多,遂放弃该方法,转向别的方式,查找资料发现了两个python包广被推荐,从下面来看各有优缺点,记录之~
1、difflib
import difflib #python 自带库,不需额外安装In [49]: test1Out[49]: ['你好', '我是谁']In [50]: test2Out[50]: ['你好啊', '我谁']In [51]: test3Out[51]: [12, 'nihao']In [52]: test4Out[52]: ['你好', 'woshi']In [53]: difflib.SequenceMatcher(a=test1, b=test2).quick_ratio()Out[53]: 0.0In [54]: difflib.SequenceMatcher(a=test1, b=test4).ratio()Out[54]: 0.52、Levenshtein
#pip install python-Levenshteinimport LevenshteinIn [56]: Levenshtein.distance(','.join(test1), ','.join(test2))Out[56]: 2In [57]: Levenshtein.distance(','.join(test1), ','.join(test4))Out[57]: 5简单来说,difflib使用时不一定为字符串,但匹配时只有单个元素完全匹配才计入,
而Levenshtein则需要输入为字符串,匹配时是整体匹配(也可能跟把所有元素集中成一个字符串有关,具体待继续使用再摸索)
以上这篇Python 比较文本相似性的方法(difflib,Levenshtein)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
字符串的相似性比较应用场合很多,像拼写纠错、文本去重、上下文相似性等。评价字符串相似度最常见的办法就是:把一个字符串通过插入、删除或替换这样的编辑操作,变成另外
模块:difflib安装:Python版本大于等于2.3系统自带功能:对比文本之间的差异,而且支持输出可读性比较强的HTML文档,与Linux中的diff命令比
本文实例讲述了Java基于余弦方法实现的计算相似度算法。分享给大家供大家参考,具体如下:(1)余弦相似性通过测量两个向量之间的角的余弦值来度量它们之间的相似性。
如今各行各业的网站已经充斥整个互联网,这就造成一种非常普遍的现象,就是众多网站之间都存在着一定的相似性,这种相似性的特征在行业网站中尤为的严重。由于相似性的
本文实例讲述了php比较相似字符串的方法。分享给大家供大家参考。具体分析如下:这里通过php的similar_text函数比较两个字符串的相似性。$word2c