python用Levenshtein计算文本相似度(附带所有个人对函数的理解)
安装 Levenshtein 报错问题点击:解决安装python-Levenshtein时出现“Unable to find vcvarsall.bat”错误
#! /usr/bin/python
# -*- coding: utf8 -*-
# @Time : 2018/8/30 10:11
# @Author : yukangfrom Levenshtein import *# 个人总结的 关于 Levenshtein 所有函数的用法 和 注释
apply_edit() #根据第一个参数editops()给出的操作权重,对第一个字符串基于第二个字符串进行相对于权重的操作distance() #计算2个字符串之间需要操作的绝对距离editops() #找到将一个字符串转换成另外一个字符串的所有编辑操作序列hamming() #计算2个字符串不同字符的个数,这2个字符串长度必须相同inverse() #用于反转所有的编辑操作序列jaro() #计算2个字符串的相识度,这个给与相同的字符更高的权重指数jaro_winkler() #计算2个字符串的相识度,相对于jaro 他给相识的字符串添加了更高的权重指数,所以得出的结果会相对jaro更大(%百分比比更大)matching_blocks() #找到他们不同的块和相同的块,从第六个开始相同,那么返回截止5-5不相同的1,第8个后面也开始相同所以返回8-8-1,相同后面进行对比不同,最后2个对比相同返回0median() #找到一个列表中所有字符串中相同的元素,并且将这些元素整合,找到最接近这些元素的值,可以不是字符串中的值。median_improve() #通过扰动来改进近似的广义中值字符串。opcodes() #给出所有第一个字符串转换成第二个字符串需要权重的操作和操作详情会给出一个列表,列表的值为元祖,每个元祖中有5个值#[('delete', 0, 1, 0, 0), ('equal', 1, 3, 0, 2), ('insert', 3, 3, 2, 3), ('replace', 3, 4, 3, 4)]#第一个值是需要修改的权重,例如第一个元祖是要删除的操作,2和3是第一个字符串需要改变的切片起始位和结束位,例如第一个元祖是删除第一字符串的0-1这个下标的元素#4和5是第二个字符串需要改变的切片起始位和结束位,例如第一个元祖是删除第一字符串的0-0这个下标的元素,所以第二个不需要删除quickmedian() #最快的速度找到最相近元素出现最多从新匹配出的一个新的字符串ratio() #计算2个字符串的相似度,它是基于最小编辑距离seqratio() #计算两个字符串序列的相似率。setmedian() #找到一个字符串集的中位数(作为序列传递)。 取最接近的一个字符串进行传递,这个字符串必须是最接近所有字符串,并且返回的字符串始终是序列中的字符串之一。setratio() #计算两个字符串集的相似率(作为序列传递)。subtract_edit() #从序列中减去一个编辑子序列。看例子这个比较主要的还是可以将第一个源字符串进行改变,并且是基于第二个字符串的改变,最终目的是改变成和第二个字符串更相似甚至一样# print(hamming('Hello world!', 'Holly world!'))
# print(jaro_winkler("yukangrtyu",'yukangrtyn'))
# fixme = ['Levnhtein', 'Leveshein', 'Leenshten', 'Leveshtei', 'Lenshtein', 'Lvenstein', 'Levenhtin', 'evenshtei']
# print(opcodes('spam', 'park'))
# print(ratio('spam', 'spark'))
# print(jaro_winkler('spam', 'spark'))
# print(jaro('spam', 'spark'))
# print(seqratio('spam', 'spark'))
# print(seqratio(['newspaper', 'litter bin', 'tinny', 'antelope'],['caribou', 'sausage', 'gorn', 'woody']))
# print(setratio(['newspaper', 'litter bin', 'tinny', 'antelope'],['caribou', 'sausage', 'gorn', 'woody']))
# e = editops('man', 'scotsman')
# e1 = e[:3]
# bastard = apply_edit(e1, 'man', 'scotsman')
# print(e)
# print(e1)
# print(bastard)
# print(subtract_edit(e, e1))
# print(apply_edit(subtract_edit(e, e1), bastard, 'scotsman'))def acquaintance(a,b):for i in a:item = {}for j in b:if ratio(u"%s"%i,u"%s"%j):item[ratio(u"%s"%i,u"%s"%j)] = (i,j)d = item[max(list(item.keys()))]c = '"%s"和"%s"-最相似---匹配度为:%f'%(d[0],d[1],max(list(item.keys())))print(c)a = ["你好",'hello,world','计算偏差大不大啊?','文本可以吗','请看这里']
b = ['helloworld',"你好吗?",'可以吗','请这里','计算偏差大不大']
acquaintance(a,b)
python用Levenshtein计算文本相似度(附带所有个人对函数的理解)相关推荐
- python用Levenshtein计算文本相似度
安装 Levenshtein 报错问题点击:解决安装python-Levenshtein时出现"Unable to find vcvarsall.bat"错误 #! /usr/bi ...
- python进行简单的文本相似度分析
python进行简单的文本相似度分析 本文利用gensim包.jieba包和TF-IDF模型进行简单的文本相似度分析.从而能够让我们确定,哪句话和哪句话相似程度是多少.文本相似度分析是自然语言处理中常 ...
- 使用余弦相似度算法计算文本相似度-数学
20211201 也就是效果 皮尔逊>余弦>欧式 余弦相似度的局限 皮尔逊的优势,相当于是改进版余弦相似度 欧式与 余弦 欧式侧重于直线距离 归一化之后的欧式和余弦的效果也不同 比如 0, ...
- 自然语言处理(NLP)之使用TF-IDF模型计算文本相似度
自然语言处理(NLP)之使用TF-IDF模型计算文本相似度 所用数据集:ChnSentiCorp_htl_all.csv 语料库即存放稀疏向量的列表. 要注意的是,搜索文本text与被检索的文档共用一 ...
- 使用simhash计算文本相似度
1. 使用simhash计算文本相似度 2. 使用余弦相似度计算文本相似度 3. 使用编辑距离计算文本相似度 4. jaccard系数计算文本相似度 文本相似度计算常用于网页去重以及NLP里文本分析等 ...
- 使用余弦相似度计算文本相似度
1. 使用simhash计算文本相似度 2. 使用余弦相似度计算文本相似度 3. 使用编辑距离计算文本相似度 4. jaccard系数计算文本相似度 2.向量余弦计算文本相似度 2.1 原理 余弦相似 ...
- 使用gensim计算文本相似度
使用gensim计算文本相似度 计算文本相似度步骤逻辑 1.将文本数据,通过jieba分词进行处理,形成一个二维数组 2.将二维数组生成词典 3.将二维数组通过doc2bow稀疏向量,形成语料库 4. ...
- 使用编辑距离计算文本相似度
1. 使用simhash计算文本相似度 2. 使用余弦相似度计算文本相似度 3. 使用编辑距离计算文本相似度 4. jaccard系数计算文本相似度 3. 最小编辑距离计算文本相似度 3.1 编辑距离 ...
- python 文本相似度计算函数_四种计算文本相似度的方法对比
作者:Yves Peirsman 编译:Bing 编者按:本文作者为Yves Peirsman,是NLP领域的专家.在这篇博文中,作者比较了各种计算句子相似度的方法,并了解它们是如何操作的.词嵌入(w ...
最新文章
- 可复现的图像降噪算法总结——超赞整理
- Import-Module : 未能加载指定的模块“\Neo4j-Management.psd1”
- 文件和目录权限chmod、更改所有者和所属组chown、umask、隐藏权限lsattr/chattr
- 转:Bit-Map思想与2-BitMap思想
- Intellj(IDEA) warning no artifacts configured
- Java调用.NET webservice方法的几种方式
- mysql三高讲解(一):1.1 客户端怎样连接mysql数据库
- 从 Google 的一道面试题说起·
- vc浏览器_自主创业项目推荐,晨兴资本刘芹:我的市场非共识+超配投资原则VC洞见...
- 偏光太阳镜测试图片软件,[专题]真假偏光太阳镜简单、实用辨别方法!
- Quartus-II入门
- 帆软参数设置_报表工具FineReport新版本参数全攻略
- LCD养生之道 液晶显示器清洁保养技巧
- TestCenter测试管理工具功能详解十六(U)
- 如何在CAD中进行修剪命令操作?
- 台式电脑如何使用无线网,wifi怎么连接?
- MCU_如何通过硬件VID 查找生产厂家
- 电子设计硬件知识要点(1) 电阻、电容、电感、二极管、三极管
- python android开发月薪_同事逆袭面进阿里P7 年薪60W+,临别留下一张Android开发重点技术路线图…...
- 怎么去掉粘鼠板上的胶?