一、简介
Fuzzywuzzy是一个Python库,用于字符串模糊匹配。它基于Levenshtein Distance算法来计算两个字符串之间的相似度。Fuzzywuzzy在数据清洗、文本匹配、自然语言处理等场景中有着广泛的应用。
二、安装
你可以使用pip来安装fuzzywuzzy:
pip install fuzzywuzzy
pip install python-Levenshtein # 这个库可以加快fuzzywuzzy的运行速度
三、基本使用
1. 基础匹配
使用fuzz.ratio()函数可以计算两个字符串的相似度,返回一个介于0到100之间的整数,表示相似度百分比。
from fuzzywuzzy import fuzz
s1 = "hello world"
s2 = "hello python"
ratio = fuzz.ratio(s1, s2)
print(f"The similarity ratio is: {ratio}")
2. 部分匹配
fuzz.partial_ratio()函数考虑到了字符串的部分匹配,可以计算两个字符串中部分匹配的相似度。
from fuzzywuzzy import fuzz
s1 = "hello world"
s2 = "hello python world"
partial_ratio = fuzz.partial_ratio(s1, s2)
print(f"The partial similarity ratio is: {partial_ratio}")
3. token排序匹配
fuzz.token_sort_ratio()函数首先对字符串进行分词,然后对分词结果进行排序,最后计算排序后字符串的相似度。这种方法对于词序不重要的场景很有用。
from fuzzywuzzy import fuzz
s1 = "hello world"
s2 = "world hello"
token_sort_ratio = fuzz.token_sort_ratio(s1, s2)
print(f"The token sort similarity ratio is: {token_sort_ratio}")
4. token集合匹配
fuzz.token_set_ratio()函数首先对字符串进行分词,然后计算两个字符串分词结果集合的相似度。这种方法对于词序和重复词不重要的场景很有用。
from fuzzywuzzy import fuzz
s1 = "hello hello world"
s2 = "hello world"
token_set_ratio = fuzz.token_set_ratio(s1, s2)
print(f"The token set similarity ratio is: {token_set_ratio}")
四、高级使用
fuzzywuzzy还提供了一个process模块,用于在字符串列表中进行模糊匹配。例如,你可以使用extract()函数从列表中找出与给定字符串最相似的项。
from fuzzywuzzy import process
choices = ["hello world", "hello python", "goodbye world"]
s = "hello python world"
best_match = process.extractOne(s, choices)
print(f"The best match is: {best_match}")
process.extractOne()函数返回一个元组,包含最佳匹配项、相似度分数和匹配项在列表中的索引。如果你想获取多个匹配项,可以使用process.extract()`函数,它会返回一个包含多个匹配项和它们分数的列表。
五、总结
fuzzywuzzy是一个强大的字符串模糊匹配库,它提供了多种匹配方式以满足不同的需求。无论是基础匹配还是高级匹配,fuzzywuzzy都能帮助你轻松实现字符串的相似度计算。
领取专属 10元无门槛券
私享最新 技术干货