python中文字符串比较模块_Python中的高性能模糊字符串比较,使用Levenshtein或difflib...

如果你对Levenshtein和Difflib相似性的快速视觉比较感兴趣,我计算了大约230万本书的书名:import codecs, difflib, Levenshtein, distance

with codecs.open("titles.tsv","r","utf-8") as f:

title_list = f.read().split("\n")[:-1]

for row in title_list:

sr = row.lower().split("\t")

diffl = difflib.SequenceMatcher(None, sr[3], sr[4]).ratio()

lev = Levenshtein.ratio(sr[3], sr[4])

sor = 1 - distance.sorensen(sr[3], sr[4])

jac = 1 - distance.jaccard(sr[3], sr[4])

print diffl, lev, sor, jac

然后用R绘制结果:

e345f844a717e9dbe0c01d3e878050bb.png

出于好奇,我还比较了Difflib、Levenshtein、Sørensen和Jaccard的相似性值:library(ggplot2)

require(GGally)

difflib

colnames(difflib)

ggpairs(difflib)

结果:

3e6af8453a8076191af25c690df2470c.png

Difflib/Levenshtein的相似性真的很有趣。

2018年编辑:如果你正在识别类似的字符串,你也可以查看minhashing——有一个great overview here。Minhashing在线性时间内发现大型文本集合中的相似性是令人惊奇的。我的实验室组装了一个应用程序,可以使用minhashing在这里检测和可视化文本重用:https://github.com/YaleDHLab/intertext

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值