字符串的相似性比较应用场合很多,像拼写纠错、文本去重、上下文相似性等。

评价字符串相似度最常见的办法就是:把一个字符串通过插入、删除或替换这样的编辑操作,变成另外一个字符串,所需要的最少编辑次数,这种就是编辑距离(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 字符串相似性的几种度量方法相关推荐

  1. 用于生成随机数的python标准库模块是_详解Python基础random模块随机数的生成

    详解Python基础random模块随机数的生成 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  详解Python基础random模块随机数的生成.txt ] ( ...

  2. [转载] python中for语句用法_详解Python中for循环的使用_python

    参考链接: 在Python中将else条件语句与for循环一起使用 这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 &q ...

  3. python函数的使用场景_详解python中strip函数的使用场景

    python strip()函数 介绍,需要的朋友可以参考一下 函数原型 声明:s为字符串,rm为要删除的字符序列 s.strip(rm) 删除s字符串中开头.结尾处,位于 rm删除序列的字符 s.l ...

  4. python中break怎么用_详解Python中break语句的用法

    详解Python中break语句的用法 在Python中的break语句终止当前循环,继续执行下一个语句,就像C语言中的break一样. break最常见的用途是当一些外部条件被触发,需要从一个循环中 ...

  5. python中for语句用法_详解Python中for循环的使用_python

    这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 "探索 Python,第 5 部分:用 Python 编程&q ...

  6. python可以播放音乐吗_详解python播放音频的三种方法

    第一种 使用pygame模块 pygame.mixer.init() pygame.mixer.music.load(self.wav_file) pygame.mixer.music.set_vol ...

  7. python命令提示符窗口在哪里_详解python命令提示符窗口下如何运行python脚本

    以arcgispro的python脚本为例在arcgispro自带的python窗口下运行python脚本 需求: 将arcgispro的.aprx项目包中gdb的数据源路径更换为sde数据源路径. ...

  8. python中pandas安装视频教程_详解Python中pandas的安装操作说明(傻瓜版)

    很多人来问我pandas的安装(python数据分析里面的必修课) 步骤如下: 安装python的时候,把路径加到系统里,这样,随时可以用pip 路径添加方法: 查找路径: 路径1: 2.例如: 即: ...

  9. python从random生成列表_详解Python利用random生成一个列表内的随机数

    详解Python利用random生成一个列表内的随机数 首先,需要导入random模块: import random 随机取1-33之间的1个随机数,可能重复: random.choice(range ...

最新文章

  1. 查看此docker网络连接模式_Docker:网络模式详解
  2. Date动态获取时间
  3. jquery实现:返回顶部(动画·代码精简版)- 代码篇
  4. Winform开发框架之通用高级查询模块--SNF快速开发平台3.3-Spring.Net.Framework
  5. 笔记本电脑下载python视频-学Python买什么笔记本电脑?
  6. MySQL实现SQL Server排名函数
  7. 【C++】 C++入门和基础
  8. 迈高图手机版_迈高图(地图数据下载器)
  9. java面试之Servlet/JSP面试题
  10. MySQL 读写分离原理
  11. android 饿了么 布局,Android仿饿了么详情页可以跟随手指移动 viewpager变详情页
  12. 14443-A 与14443-B区别
  13. 火狐浏览器设置无图模式
  14. Java笔记——08.面向对象(中级)
  15. 中国移动发布物联网操作系统 OneOS
  16. 物联网信息安全复习笔记
  17. 杜比dss200服务器系统升级包434,杜比数字影院系统DSS200软件升级指南(初稿).pdf
  18. 西南交大计算机学校地址,西南交通大学有几个校区及校区地址
  19. iOS-关于M1芯片可以下载APP使用问题
  20. 全国首例 | 国产ECMO在阜外医院成功救治一名患者

热门文章

  1. echarts 折线图 x轴为时间轴
  2. r语言图形怎么保存到c盘,R语言作图保存[保存]
  3. no such file or directory @ realpath_rec xxx.xib
  4. 《杂记》- 之- 使用window下使用HFS服务器终端
  5. openEuler社区开源项目:CPDS(容器故障检测系统)介绍
  6. CAD标注样式修改后为什么图中标注不变?
  7. ​舆情监控的核心是什么,舆情监控系统的主要功能有哪些?
  8. mysql左交联_Expasy数据库与基因数据库交联比对法初步分析SELDI蛋白质荷峰
  9. 写给程序员的 MySQL 面试高频 100 问,看完吊打面试官!
  10. 鸟哥linux摘要-Linux复习必备(Linux命令)