一个字符串模式匹配开源库

news2024/11/18 16:55:53

1

   

简介

theFuzz 是一个用于模糊字符串匹配和相似度计算的强大工具。它可以帮助我们在处理文本数据时进行模糊匹配和字符串比较,例如拼写纠正、字符串相似度计算和模糊搜索等。

2

   

基本原理

theFuzz 库的基本原理是使用不同的算法来计算字符串之间的相似度。其中最常用的算法是 Levenshtein 距离算法,它衡量了两个字符串之间的编辑操作(插入、删除、替换)的最小数量。通过计算两个字符串之间的 Levenshtein 距离,我们可以得到它们的相似度。

在 TheFuzz 库中,我们可以使用 fuzz.ratio() 函数来计算两个字符串的相似度,它返回一个 0-100 之间的整数,表示两个字符串的相似度百分比。我们还可以使用 fuzz.partial_ratio() 函数来计算两个字符串的部分相似度,它会忽略两个字符串中没有匹配的部分,只计算出现在两个字符串中的相似部分。此外,还有 fuzz.token_sort_ratio() 和 fuzz.token_set_ratio() 函数可以用于计算两个字符串的单词排序相似度和单词集合相似度。

3

   

安装

要安装 theFuzz 库,可以使用 pip 命令。打开终端(命令提示符)并运行以下命令

pip install fuzzywuzzy python-Levenshtein

4

   

基本使用

安装好后,我们来看几个代码示例

from fuzzywuzzy import fuzz


str1 = "hello world"
str2 = "hello python"


similarity = fuzz.ratio(str1, str2)
print(similarity)

运行结果是 61,表示 str1 和 str2 相似度为 61%

2e647de12271bd60d806829aa69820d2.jpeg

from fuzzywuzzy import fuzz


str1 = "hello world"
str2 = "world hello"


partial_similarity = fuzz.partial_ratio(str1, str2)
print(partial_similarity)

运行上述代码,输出结果为 45,表示两个字符串的部分相似度为 45%。

1c5379ae957db7d8c1bd6a66a5cc47d1.jpeg

from fuzzywuzzy import fuzz


str1 = "hello world"
str2 = "world hello"


token_sort_similarity = fuzz.token_sort_ratio(str1, str2)
token_set_similarity = fuzz.token_set_ratio(str1, str2)


print(token_sort_similarity)
print(token_set_similarity)

执行上述代码,输出结果分别为 100 和 100,表示两个字符串的单词排序相似度和单词集合相似度都为 100%。

5df65c04bbaabbb9e72be6f9d1d61567.jpeg

5

   

参考资料

  • https://github.com/seatgeek/thefuzz

  • https://github.com/seatgeek/fuzzywuzzy

382aebbc06cdfb66048ab8e17eaa1954.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1099534.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

医疗机器人技术研究现状

医疗机器人技术是近年来快速发展的领域,它在医疗领域的应用已经取得了显著的成果。本文对医疗机器人技术的研究现状进行了综述,包括机器人手术、康复机器人、辅助诊断和治疗机器人等方面的研究进展。同时,本文还对医疗机器人技术的挑战和未来…

【python高级】设计模式、类工厂、对象工厂

一、说明 最近试着读Design pattern, 不过有些概念实在太抽象了, 整理一下自己所学抽象工厂的精神,就是要有abstract class(not implement),而所有不同种类的对象,都是继承这个abstract class&a…

Ubuntu 环境配置 Minecraft 基岩版服务器

文章目录 Part 1 搭建服务器Part 2 配置服务器Part 3 管理服务器一、手动备份服务器二、手动恢复服务器备份三、升级服务器 Part 1 搭建服务器 更新软件包信息 sudo apt-get update sudo apt-get upgrade安装所需工具 sudo apt-get vim sudo apt-get install zip sudo apt-g…

数字孪生在制造运行管理(MOM)的七大应用场景

数字经济时代,数字孪生作为实现各行各业智能化、数字化的重要手段之一,受到了各方的广泛重视。随着各项关键使能技术的不断发展,数字孪生的应用价值有望得到进一步释放。这些关键使能技术包括建模、渲染、仿真、物联网、虚拟调试、可视化等&a…

《机器人学导论》——探究未来世界的奇妙之旅

你是否感到生活变得越来越便利、智能?是的,这些都与机器人技术的发展密不可分。而想要更深入地了解机器人技术,一本好的书籍是必不可少的。那么,今天作者要向大家推荐的就是这样一本优秀的机器人学大作——《机器人学导论》。 《…

Flutter笔记:发布一个多功能轮播组件 awesome_carousel

Flutter笔记 电商中文货币显示插件 Money Display 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/details/1338…

使用轮廓分数提升时间序列聚类的表现

我们将使用轮廓分数和一些距离指标来执行时间序列聚类实验,并且进行可视化 让我们看看下面的时间序列: 如果沿着y轴移动序列添加随机噪声,并随机化这些序列,那么它们几乎无法分辨,如下图所示-现在很难将时间序列列分组为簇: 上面…

SSM - Springboot - MyBatis-Plus 全栈体系(三十)

第七章 MyBatis-Plus MyBatis-Plus 高级用法:最优化持久层开发 一、MyBatis-Plus 快速入门 1. 简介 版本:3.5.3.1MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window) 的增强工具,在 MyBa…

vscode终端显示多个虚拟环境

问题:某次突然发现vscode前面出现多个虚拟环境,即(.conda)(base),其中(base)是默认自动激活的,但是(.conda)不是,而且我退…

上海亚商投顾:沪指震荡调整跌 减肥药、华为概念股持续活跃

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 市场情绪 沪指上个交易日低开后震荡调整,深成指、创业板指盘中跌超1%,宁德时代一度跌超3%&#xff…

新增Node.js运行环境、新增系统缓存清理功能,1Panel开源面板v1.7.0发布

2023年10月16日,现代化、开源的Linux服务器运维管理面板1Panel正式发布v1.7.0版本。 在这个版本中,1Panel新增Node.js运行环境;新增系统缓存清理功能;应用安装时支持选择远程数据库。此外,我们进行了40多项功能更新和…

GitHub验证的2FA

一、 起因: GitHub需要双重身份验证 (2FA) 是登录网站或应用时使用的额外保护层。启用 2FA 时,必须使用您的用户名和密码登录,并提供另一种只有您知道或可以访问的身份验证形式。 二、解决: 2.1 这里使用chrome的身份验证插件进…

[Tkinter 教程08] Canvas 图形绘制

python - [译][Tkinter 教程08] Canvas 图形绘制 - 个人文章 - SegmentFault 思否 一、简介 Canvas 为 Tkinter 提供了绘图功能. 其提供的图形组件包括 线形, 圆形, 图片, 甚至其他控件. Canvas 控件为绘制图形图表, 编辑图形, 自定义控件提供了可能. 在第一个例子里, …

基于深度优先搜索的图遍历

这里写目录标题 基于深度优先搜索的无向图遍历算法流程图Python实现Java实现 基于深度优先搜索的有向图遍历Python实现 基于深度优先搜索的无向图遍历 使用深度优先搜索遍历无向图,将无向图用邻接表存储: 算法流程图 初始化起点 source,当…

2023_Spark_实验十四:SparkSQL入门操作

1、将emp.csv、dept.csv文件上传到分布式环境,再用 hdfs dfs -put dept.csv /input/ hdfs dfs -put emp.csv /input/ 将本地文件put到hdfs文件系统的input目录下 2、或者调用本地文件也可以。区别:sc.textFile("file:///D:\\temp\\emp.csv&qu…

苹果10月24日推送iOS 17.1:修复iPhone 12辐射超标问题 信号会更差

前段时间在iPhone 15系列发布的当天,法国突然宣布iPhone 12不能在该国销售,理由是iPhone 12超过了当地无线电频率暴露的法定范围。 根据法国监管机构ANFR(国家频率管理局)发布的最新消息,苹果将会在10月24日推送iOS 17.1正式版,届…

Prometheus的Pushgateway快速部署及使用

prometheus-pushgateway安装 一. Pushgateway简介 Pushgateway为Prometheus整体监控方案的功能组件之一,并做于一个独立的工具存在。它主要用于Prometheus无法直接拿到监控指标的场景,如监控源位于防火墙之后,Prometheus无法穿透防火墙&…

自动驾驶:控制算法概述

自动驾驶:控制算法概述 常见控制算法PID算法LQR算法MPC算法 自动驾驶控制算法横向控制纵向控制 参考文献 常见控制算法 PID算法 PID(Proportional-Integral-Derivative)控制是一种经典的反馈控制算法,通常用于稳定性和响应速度要…

MATLAB-文件自动批量读取文件,并按文件名称或时间顺序进行数据处理

我在处理文件数据时,发现一个一个文件处理效率太低,因此学习了下MATLAB中自动读取特定路径下文件信息的程序,并根据读取信息使用循环进行数据处理,提高效率,在此分享给大家这段代码并给予一些说明,希望能为…

.Net Core 6 运行环境手动安装流程

安装.NET Core 6 概述 在开始之前,我们首先需要了解一下整个安装过程的流程。下面的表格将展示安装.NET Core 6的步骤以及每一步需要做的事情。 步骤 动作 说明 1 下载.NET Core 6 SDK 从官方网站下载.NET Core 6 SDK安装包 2 安装.NET Core 6 SDK …