在数据科学与机器学习的广阔领域中,处理不精确或模糊的数据是一项至关重要的技能。想象一下,当你面对的是一堆拼写错误、缩写、或是格式不一的文本数据时,如何高效地从中提取有价值的信息?这正是FuzzyWuzzy
——Python中一个强大的模糊字符串匹配库,能够大展身手的地方。
本文将为你全面介绍FuzzyWuzzy
——Python中一个强大的通过算法模糊字符串匹配库,全网最全最新,一看就会,接下来带你走进FuzzyWuzzy
的神奇世界
一、引言
FuzzyWuzzy是一个强大的Python库,专门用于执行模糊字符串匹配和相似度比较。它基于Levenshtein距离(编辑距离)算法,能够处理字符串之间的拼写错误、格式差异以及部分匹配等问题,非常适合在数据清洗、文本匹配、搜索引擎优化等场景中使用。本文将详细介绍FuzzyWuzzy的功能参数、属性以及通过案例代码展示其使用方法。
在处理数据的过程中,难免会遇到下面类似的场景,自己手里头获得的是简化版的数据字段,但是要比对的或者要合并的却是完整版的数据(有时候也会反过来)
最常见的一个例子就是:在进行地理可视化中,自己收集的数据只保留的缩写,比如北京,广西,新疆,西藏等,但是待匹配的字段数据却是北京市,广西壮族自治区,新疆维吾尔自治区,西藏自治区等,如下。因此就需要有没有一种方式可以很快速便捷的直接进行对应字段的匹配并将结果单独生成一列,就可以用到FuzzyWuzzy库。
二、FuzzyWuzzy介绍
FuzzyWuzzy 是一个简单易用的模糊字符串匹配工具包。它依据 Levenshtein Distance 算法,计算两个序列之间的差异。
Levenshtein Distance算法,又叫 Edit Distance算法,是指两个字符串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。一般来说,编辑距离越小,两个串的相似度越大。
这里使用的是Anaconda下的jupyter notebook编程环境,因此在Anaconda的命令行中输入一下指令进行第三方库安装。
pip install FuzzyWuzzy
三、功能参数与属性
FuzzyWuzzy库主要包含两个模块:fuzz
和process
。
1、fuzz模块
fuzz
模块主要用于计算两个字符串之间的相似度。
函数 | 作用 | 描述 |
fuzz.ratio(s1, s2) | 简单匹配 | 计算两个字符串之间的相似度,返回一个介于0到100之间的数值,数值越高表示相似度越高。 |
fuzz.partial_ratio(s1, s2) | 非完全匹配 | 部分匹配,不考虑字符串的顺序,仅匹配部分字符串。如果s1是s2的子串,依然返回100。 |
fuzz.token_sort_ratio(s1, s2) | 忽略顺序匹配 | 忽略单词顺序,比较两个字符串中单词的相似度。以空格为分隔符,小写化所有字母,忽略其他标点符号。 |
fuzz.token_set_ratio(s1, s2) | 去重子集匹配 | 将字符串视为单词集合,计算两个集合的相似度,不考虑单词的顺序和重复。 |
2、process模块
process
模块主要用于在一组字符串中查找与给定字符串最相似的选项。
函数 | 作用 | 描述 |
process.extract(query, choices, limit=None) | 提取多条数据 | 从choices 列表中找出与query 最相似的字符串,并返回 |