python用Levenshtein计算文本相似度
安装 Levenshtein 报错问题点击:解决安装python-Levenshtein时出现“Unable to find vcvarsall.bat”错误
- #! /usr/bin/python
- # -*- coding: utf8 -*-
- # @Time : 2018/8/30 10:11
- # @Author : yukang
- from 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个对比相同返回0
- median() #找到一个列表中所有字符串中相同的元素,并且将这些元素整合,找到最接近这些元素的值,可以不是字符串中的值。
- 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 ...
最新文章
- filter 在CSS用的效果
- Vijos 1197 - 费解的开关
- Spring+Mybatis多数据源配置(四)——AbstractRoutingDataSource实现数据源动态切换
- GoogLeNet系列解读
- laravel 错误与日志
- 2020年Q3笔记本电脑出货量:惠普反超联想居首位 苹果第四
- openwrt+php+not+found,openwrt路由翻车,等高手
- oracle declare语法_基于oracle数据库存储过程的创建及调用
- Word2003及Excel2003打开速度慢,如何解决?
- Exchange2010升级至Exchange2016
- ARCGIS中的子类型(SUBTYPE)认识
- .chm文件是什么怎么打开?
- linux suse11 sp3安装,SUSE Linux Enterprise Server 11 SP3安装教程详解
- 图像处理的相关数学知识
- 计算机装机知识策划案,电脑装机大赛策划案.doc
- 考研时间安排和考研内容
- 四书《孟子》《论语》《中庸》《大学》五经《风》《雅》《颂》全文
- 如何免费下载的全球的矢量边界(WGS84)
- M: Mysterious Conch(哈希表)
- SAP 发票金额容差与供应商容差
热门文章
- android小程序案例_这几个小程序案例告诉你,小程序该怎么做!
- 查看运行状态_查看 Linux 系统服务的 5 大方法
- springboot整合postgresql_SpringBoot+JPA+PostgreSQL整合问题
- python事件处理函数_事件驱动的简明讲解(python实现)
- mysql 主主同步失败_Mysql主主同步失败后的恢复
- html 水平垂直居中,css水平垂直居中有几种实现方式?
- 开源 软件测试自动化工具,开源Web自动化测试工具Selenium IDE
- matlab 多项式的相关运算
- Verilog设计实例(7)基于Verilog的数字电子钟设计
- Quartus 13.1安装心得