Python 字符串相似性的几种度量方法

2023-05-16

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

评价字符串相似度最常见的办法就是:把一个字符串通过插入、删除或替换这样的编辑操作,变成另外一个字符串,所需要的最少编辑次数,这种就是编辑距离(edit distance)度量方法,也称为Levenshtein距离。海明距离是编辑距离的一种特殊情况,只计算等长情况下替换操作的编辑次数,只能应用于两个等长字符串间的距离度量。

其他常用的度量方法还有 Jaccard distance、J-W距离(Jaro–Winkler distance)、余弦相似性(cosine similarity)、欧氏距离(Euclidean distance)等。

python-Levenshtein 使用

使用 pip install python-Levenshtein 指令安装 Levenshtein

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# -*- 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–Winkler距离
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 字符串相似性的几种度量方法 的相关文章

  • 360安全浏览器右击不显示审查元素 或按F12不弹出开发人员工具的原因和解决方法:设为极速模式

    IE兼容模式 会显示 IE的开发人员工具 极速模式 才会显示谷歌的那种方式
  • 代码质量管控的四个阶段

    前言 xff1a 质量 功能和进度 xff0c 是一个软件项目的三根支柱 xff0c 但在现实项目中 xff0c 当质量和其它两项产生冲突时 xff0c 往往是作为被牺牲的对象 团队对于质量的态度主要停留在口头重视上 xff0c 似乎还没有
  • 训练Tesseract

    训练Tesseract 大多数其他的验证码都是比较简单的 例如 xff0c 流行的 PHP 内容管理系统 Drupal 有一个著 名的验证码模块 https www drupal org project captcha xff0c 可以生成
  • 【python】pip指定路径安装文件

    在网上下载个tar gz的安装包 xff0c 用pip在指定目录安装 pip install target 61 路径 文件名 pip install target 61 E work zicai pd code AutoTest3 7 s
  • pa_offset = offset & ~(sysconf(_SC_PAGE_SIZE) - 1) 详解

    发现很多文章都没有把pa offset 61 offset amp sysconf SC PAGE SIZE 1 详细计算过程写出来 xff0c 自己专门计算了一遍 xff0c 附在文末 本例为man mmap中的原样实例程序 xff0c
  • python环境安装系列-1-Windows10中Anaconda安装及相关问题

    python环境安装系列 1 1 安装Anaconda32 配置环境变量3 condarc文件 xff08 根据 Anaconda3安装参考 1 修改的 xff09 4 激活问题解决方法链接步骤 新电脑要装python环境 xff0c 刚好
  • Win10+Anaconda+Tensorflow2.0安装教程(手把手带你安装tensorflow)

    安装说明 xff1a 平台 xff1a windows 版本 xff1a tensorflow2 0 0 alpha0 xff08 cpu版本 xff09 安装方式 xff1a pip 一 安装环境 Tensorflow2 0 0的CPU版
  • 人工智能能力提升指导总结

    文章目录 基础知识人工智能自学之路1 人工智能 机器学习 深度学习的关系2 数据集 需求3 深度学习平台比较4 训练过程可视化5 经典训练案例训练通用规则1 设置目标2 准备数据集3 模型搭建4 训练网络与测试5 保存模型6 验证模型7 评
  • 网闸和防火墙

    文章目录 网闸和防火墙1 网闸是什么2 防火墙是什么3 网闸和防火墙的区别是什么4 参考资料 网闸和防火墙 1 网闸是什么 介绍 网闸 xff0c 又名安全隔离网闸 xff0c 物理隔离网闸 xff1b 一般用于实现 xff1a 不同安全级
  • 你知道ChatGPT背后的核心技术是什么吗

    你知道ChatGPT背后的核心技术是什么吗 更新 xff1a GPT 4原理 xff1a https yunyaniu blog csdn net article details 129573291 spm 61 1001 2014 300
  • 中国四大骨干网和三大运营商网络是什么关系?

    中国四大骨干网和三大运营商网络是什么关系 xff1f 文章目录 介绍Q1 中国四大骨干网是什么 xff1f Q2 和三大网运营商的关系是什么呢 xff1f Q3 xff1a 另外3个对个人用户开放使用吗 xff1f 如何盈利 xff1f 中
  • 零基础小白如何备考2023年注册会计师

    文章目录 零基础小白如何备考2023年注册会计师一 注册会计师定义1 证书等级 xff1a 2 发展方向 xff1a 3 职责 xff1a 4 证书前景 xff1a 二 考试报名 xff08 一 xff09 报名条件 xff08 二 xff
  • 百度网盘外链采集分析 爬取百度网盘用户分享 自建百度网盘文件链接搜索引擎

    我建的网盘文件搜索引擎 http s supermindsoft com 找一个订阅超多用户的uk xff0c 爬取用户的所有订阅用户uk和粉丝数 xff0c 不断深入 爬取 得到一个按粉丝数从高到低排列的用户uk表 从数据库获取粉丝超多用
  • python 代码命令大全

    以下命令都是我边做项目边学习的 strip命令 知道stripper 吧 xff0c 哈哈 对 xff0c strip就是将某部分内容删除 map命令 一张图搞定 power 命令 可是让我好找 xff0c 一直找不到 xff0c xff0
  • 直接可以用的Python和OpenCV检测及分割图像的目标区域例子

    第一天 老师 xff1a 你知道么 xff0c 今天有人问了我一个问题 我 xff1a 什么 xff1f 老师 xff1a 他说很难 我 xff1a 关于什么的 xff1f 老师 xff1a 图像处理 我 xff1a 喔 xff0c 你说说
  • 数据格式汇总及type, astype, dtype区别

    标签 xff08 空格分隔 xff09 xff1a python 文章目录 uint8 在此输入正文8位的无符号整形数据 xff0c 取值范围从0到255 一 singed与unsigned的区别二 float xff0c 1 改变类型 x
  • 文件权限_前进的火车_新浪博客

    1 文件权限简介 linux文件权限有9个 xff0c 三组表示 xff0c owner group others 每组又包含r xff0c w xff0c x三种状态 2 根据数字修改权限 r xff0c w xff0c x三种权限通过数
  • 猫盘onespace x3p系统使用

    前言 猫盘用了大概快一年了 xff0c 主要的使用的功能以及最长用的功能就是samba服务 xff0c 当做家庭的影音存储中心 xff0c 其他的nas相关下载 xff0c 同步等等功能用的极少 故最终的需求就是 xff0c 将猫盘做成一个
  • Git配置用户名与邮箱

    1 用户名和邮箱地址的作用 用户名和邮箱地址是本地git客户端的一个变量 每次commit都会用用户名和邮箱纪录 github的contributions统计就是按邮箱来统计的 2 查看用户名和邮箱地址 git config user na
  • 网络流量监控工具ntopng安装—redhat7 server

    网络流量监控工具ntopng安装 redhat7 5 版本信息 服务器版本 xff1a redhat 7 5 ntopng版本 xff1a 3 9 190907 Community Edition nDPI版本 xff1a 2 9 0 17

随机推荐