Python 库- FuzzyWuzzy使用介绍

1. FuzzyWuzzy简介

FuzzyWuzzy 是一个 Python 库,旨在提供模糊字符串匹配的功能。它能够比较两个字符串之间的相似度,即使它们在拼写或格式上略有不同。通过使用各种算法和方法,如基于字符、基于单词的匹配,以及部分匹配和排序匹配等技术,FuzzyWuzzy 能够有效地处理文本数据中的拼写错误、近义词和重复项。这使得它在数据清洗、搜索功能、自动完成和信息抽取等场景中非常实用。FuzzyWuzzy 提供了简单易用的 API,使得开发者可以轻松地将其集成到自己的项目中,并快速实现字符串匹配和相似度比较的功能。

FuzzyWuzzy对大型数据集性能比较低,一般都会结合使用 Pandas、numpy 等数据科学模块实现模糊匹配,可以更方便地处理大量数据和进行数据分析。Pandas 提供了灵活的数据结构和功能,可以帮助简化模糊匹配的过程,并且可以轻松地与其他数据处理和分析工具集成。

 

核心特点使用方法对比分析最大优势
FuzzyWuzzy- 提供模糊字符串匹配功能 - 简单易用的 API - 多种匹配方法- fuzz.ratio - fuzz.partial_ratio - fuzz.token_sort_ratio - fuzz.token_set_ratio- 提供了多种方法来处理模糊匹配问题 - 简单易用,适合快速开发 - 速度可能较慢,对于大型数据集可能不够高效,可安装python-Levenshtein库进行辅助提速灵活的匹配方法
difflib- Python 标准库中的模块 - 提供序列比较和相似度计算功能- SequenceMatcher- 包含在 Python 标准库中,无需额外安装 - 功能相对较少,只提供了一种比较方法包含在 Python 标准库中
rapidfuzz- 快速、高效的字符串匹配库- fuzz.ratio - fuzz.partial_ratio - fuzz.token_sort_ratio - fuzz.token_set_ratio- 速度更快,性能更好 - 提供了与 FuzzyWuzzy 类似的功能,但速度更快高效的字符串匹配
pyspellchecker- 检查和纠正拼写错误的 Python 库- SpellChecker- 主要用于拼写检查和纠正,不是专注于模糊字符串匹配 - 可以用于纠正用户输入中的拼写错误拼写检查和纠正功能
textdistance- 计算文本之间距离的 Python 库- 各种距离度量方法- 提供了一些字符串相似度度量方法,如 Levenshtein 距离、Jaro-Winkler 距离等 - 功能丰富,适合进行各种文本距离计算 - 与 FuzzyWuzzy 相比,可能更适合需要特定距离度量方法的场景,但可能不如 FuzzyWuzzy 灵活和简单提供了多种字符串相似度度量方法

 

2. 安装 FuzzyWuzzy 库

 

3. FuzzyWuzzy使用方法

 

3-1. FuzzyWuzzy - fuzz

主要函数作用示例
ratio计算完整匹配相似度比较完全相似度,不考虑单词的顺序或重复。
partial_ratio计算部分匹配相似度不考虑单词的顺序,只匹配部分内容,可以找出两个字符串中的相似部分。
token_sort_ratio计算排序后相似度对两个字符串中的单词进行排序,然后计算排序后的字符串的相似度。不考虑单词的顺序。
token_set_ratio计算集合相似度将两个字符串视为单词集合,不考虑单词的顺序和重复。可以处理单词的添加或删除。

 

3-1-1. ratio

比较两个字符串的相似程度,返回一个介于 0 和 100 之间的相似度分数。分数越高表示字符串越相似。

 

大部分环境运行代码会提示如下提示

 

3-1-2. partial_ratio

比较两个字符串的相似度,不考虑字符串的顺序,而是仅匹配部分。返回一个介于 0 和 100 之间的相似度分数。

可以看出来相比ratiopartial_ratio是只要字符串能完全匹配上,即使有多余字符,依旧给出100%的相似度

 

3-1-3. token_sort_ratio

先对两个字符串中的单词进行排序,然后计算排序后的字符串的相似度。它不考虑单词的顺序。

以 空格 为分隔符,小写 化所有字母,无视空格外的其它标点符号

 

3-1-4. token_set_ratio

计算两个字符串的相似度,将它们视为单词集合。它不考虑单词的顺序和重复。process: 在一组字符串中查找与给定字符串最相似的字符串,并返回包含匹配项及其相似度的列表。

可理解为该方法是在token_sort_ratio方法的基础上添加了集合去重的功能

 

3-2. FuzzyWuzzy - process

3-2-1. extract

在一组字符串中查找与给定字符串最相似的字符串,并返回包含匹配项及其相似度的列表

 

3-2-2. extractOne

从一组选择中提取与给定查询字符串最相似的单个项,并返回包含匹配项及其相似度的元组。

 

3-2-3. dedupe

去除重复项并保留最相似的项。

 

3-2-4. extractBests

从一组选择中提取最相似的项,并返回包含匹配项及其相似度的列表,可指定返回的项数。

 

3-3. 业务应用场景示例

3-3-1. 工商数据处理示例

根据公司名称进行模糊匹配,找出相似的公司名称。

 

3-3-2. 舆情数据处理示例

根据新闻标题或内容,找出与给定关键词相似的新闻。

 

3-3-3. 处理用户输入示例

推测纠正用户输入的内容错误给出相近选项

 

3-3-4. 结合Pandas模块示例

假设我们有一个包含公司名称的数据框,我们想要对其中的公司名称进行模糊匹配。我们可以使用 Pandas 和 FuzzyWuzzy 库来实现

pip install pandas