天天看点

Python中的一个字符串模糊匹配开源库

作者:迷途小书童的Note

简介

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

基本原理

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

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

安装

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

pip install fuzzywuzzy python-Levenshtein
           

基本使用

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

from fuzzywuzzy import fuzz

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

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

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

Python中的一个字符串模糊匹配开源库

TheFuzz

from fuzzywuzzy import fuzz

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

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

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

Python中的一个字符串模糊匹配开源库

TheFuzz

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%。

Python中的一个字符串模糊匹配开源库

TheFuzz

参考资料 https://github.com/seatgeek/thefuzz https://github.com/seatgeek/fuzzywuzzy