python字符串相似度去重_详解Python 字符串相似性的几种度量方法
字符串的相似性比较应用场合很多,像拼写纠错、文本去重、上下文相似性等。
评价字符串相似度最常见的办法就是:把一个字符串通过插入、删除或替换这样的编辑操作,变成另外一个字符串,所需要的最少编辑次数,这种就是编辑距离(edit distance)度量方法,也称为Levenshtein距离。海明距离是编辑距离的一种特殊情况,只计算等长情况下替换操作的编辑次数,只能应用于两个等长字符串间的距离度量。
其他常用的度量方法还有 Jaccard distance、J-W距离(Jaro�CWinkler distance)、余弦相似性(cosine similarity)、欧氏距离(Euclidean distance)等。
python-Levenshtein 使用
使用 pip install python-Levenshtein 指令安装 Levenshtein
# -*- coding: utf-8 -*-
import difflib
# import jieba
import Levenshtein
str1 = "我的骨骼雪白 也长不出青稞"
str2 = "雪的日子 我只想到雪中去si"
# 1. difflib
seq = difflib.SequenceMatcher(None, str1,str2)
ratio = seq.ratio()
print 'difflib similarity1: ', ratio
# difflib 去掉列表中不需要比较的字符
seq = difflib.SequenceMatcher(lambda x: x in ' 我的雪', str1,str2)
ratio = seq.ratio()
print 'difflib similarity2: ', ratio
# 2. hamming距离,str1和str2长度必须一致,描述两个等长字串之间对应位置上不同字符的个数
# sim = Levenshtein.hamming(str1, str2)
# print 'hamming similarity: ', sim
# 3. 编辑距离,描述由一个字串转化成另一个字串最少的操作次数,在其中的操作包括 插入、删除、替换
sim = Levenshtein.distance(str1, str2)
print 'Levenshtein similarity: ', sim
# 4.计算莱文斯坦比
sim = Levenshtein.ratio(str1, str2)
print 'Levenshtein.ratio similarity: ', sim
# 5.计算jaro距离
sim = Levenshtein.jaro(str1, str2 )
print 'Levenshtein.jaro similarity: ', sim
# 6. Jaro�CWinkler距离
sim = Levenshtein.jaro_winkler(str1 , str2 )
print 'Levenshtein.jaro_winkler similarity: ', sim
输出:
difflib similarity1: 0.246575342466
difflib similarity2: 0.0821917808219
Levenshtein similarity: 33
Levenshtein.ratio similarity: 0.27397260274
Levenshtein.jaro similarity: 0.490208958959
Levenshtein.jaro_winkler similarity: 0.490208958959
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
python字符串相似度去重_详解Python 字符串相似性的几种度量方法相关推荐
- 用于生成随机数的python标准库模块是_详解Python基础random模块随机数的生成
详解Python基础random模块随机数的生成 来源:中文源码网 浏览: 次 日期:2019年11月5日 [下载文档: 详解Python基础random模块随机数的生成.txt ] ( ...
- [转载] python中for语句用法_详解Python中for循环的使用_python
参考链接: 在Python中将else条件语句与for循环一起使用 这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 &q ...
- python函数的使用场景_详解python中strip函数的使用场景
python strip()函数 介绍,需要的朋友可以参考一下 函数原型 声明:s为字符串,rm为要删除的字符序列 s.strip(rm) 删除s字符串中开头.结尾处,位于 rm删除序列的字符 s.l ...
- python中break怎么用_详解Python中break语句的用法
详解Python中break语句的用法 在Python中的break语句终止当前循环,继续执行下一个语句,就像C语言中的break一样. break最常见的用途是当一些外部条件被触发,需要从一个循环中 ...
- python中for语句用法_详解Python中for循环的使用_python
这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 "探索 Python,第 5 部分:用 Python 编程&q ...
- python可以播放音乐吗_详解python播放音频的三种方法
第一种 使用pygame模块 pygame.mixer.init() pygame.mixer.music.load(self.wav_file) pygame.mixer.music.set_vol ...
- python命令提示符窗口在哪里_详解python命令提示符窗口下如何运行python脚本
以arcgispro的python脚本为例在arcgispro自带的python窗口下运行python脚本 需求: 将arcgispro的.aprx项目包中gdb的数据源路径更换为sde数据源路径. ...
- python中pandas安装视频教程_详解Python中pandas的安装操作说明(傻瓜版)
很多人来问我pandas的安装(python数据分析里面的必修课) 步骤如下: 安装python的时候,把路径加到系统里,这样,随时可以用pip 路径添加方法: 查找路径: 路径1: 2.例如: 即: ...
- python从random生成列表_详解Python利用random生成一个列表内的随机数
详解Python利用random生成一个列表内的随机数 首先,需要导入random模块: import random 随机取1-33之间的1个随机数,可能重复: random.choice(range ...
最新文章
- 查看此docker网络连接模式_Docker:网络模式详解
- Date动态获取时间
- jquery实现:返回顶部(动画·代码精简版)- 代码篇
- Winform开发框架之通用高级查询模块--SNF快速开发平台3.3-Spring.Net.Framework
- 笔记本电脑下载python视频-学Python买什么笔记本电脑?
- MySQL实现SQL Server排名函数
- 【C++】 C++入门和基础
- 迈高图手机版_迈高图(地图数据下载器)
- java面试之Servlet/JSP面试题
- MySQL 读写分离原理
- android 饿了么 布局,Android仿饿了么详情页可以跟随手指移动 viewpager变详情页
- 14443-A 与14443-B区别
- 火狐浏览器设置无图模式
- Java笔记——08.面向对象(中级)
- 中国移动发布物联网操作系统 OneOS
- 物联网信息安全复习笔记
- 杜比dss200服务器系统升级包434,杜比数字影院系统DSS200软件升级指南(初稿).pdf
- 西南交大计算机学校地址,西南交通大学有几个校区及校区地址
- iOS-关于M1芯片可以下载APP使用问题
- 全国首例 | 国产ECMO在阜外医院成功救治一名患者
热门文章
- echarts 折线图 x轴为时间轴
- r语言图形怎么保存到c盘,R语言作图保存[保存]
- no such file or directory @ realpath_rec xxx.xib
- 《杂记》- 之- 使用window下使用HFS服务器终端
- openEuler社区开源项目:CPDS(容器故障检测系统)介绍
- CAD标注样式修改后为什么图中标注不变?
- ​舆情监控的核心是什么,舆情监控系统的主要功能有哪些?
- mysql左交联_Expasy数据库与基因数据库交联比对法初步分析SELDI蛋白质荷峰
- 写给程序员的 MySQL 面试高频 100 问,看完吊打面试官!
- 鸟哥linux摘要-Linux复习必备(Linux命令)