fuzzywuzzy是一个Python库,用于模糊字符串匹配。它基于Levenshtein距离算法,该算法用于比较两个字符串之间的差异程度。
要使用fuzzywuzzy库,你需要先安装它。可以使用以下命令在终端或命令提示符下安装:
pip install fuzzywuzzy
安装完成后,你可以使用以下步骤进行模糊字符串匹配:
导入fuzzywuzzy库
from fuzzywuzzy import fuzz
from fuzzywuzzy import process
fuzz.ratio方法
使用fuzz模块进行字符串相似度计算。例如,要计算两个字符串的相似度得分,可以使用fuzz.ratio()方法:
string1 = "apple"
string2 = "apples"
similarity_score = fuzz.ratio(string1, string2)
print(similarity_score)
输出:91
fuzz.partial_ratio方法
部分字符串匹配:如果你想从一个长字符串中提取与目标字符串部分匹配的子字符串,你可以使用fuzz.partial_ratio()方法。计算目标字符串与给定字符串的部分匹配相似度得分。
string1 = "apple"
string2 = "apples and oranges are fruits"
partial_similarity_score = fuzz.partial_ratio(string1, string2)
print(partial_similarity_score)
输出:100
fuzz.token_sort_ratio方法
token_sort_ratio是一种基于排序的字符串匹配算法,它首先将两个字符串拆分成标记(token),然后将这些标记排序,最后比较两个排序后的标记列表的差异。
这个方法的基本思想是,如果两个字符串的标记排序后完全相同,那么这两个字符串就是相似的。
string1 = "apple orange banana"
string2 = "banana apple orange"
similarity_score = fuzz.token_sort_ratio(string1, string2)
print(similarity_score)
输出:100
fuzz.token_set_ratio方法
token_set_ratio是另一种基于集合的字符串匹配算法。它首先将两个字符串拆分成标记(token),然后将这些标记视为集合,最后比较这两个集合的差异。
这个方法的基本思想是,如果两个字符串的标记集合完全相同,那么这两个字符串就是相似的。
string1 = "apple orange banana"
string2 = "banana apple"
similarity_score = fuzz.token_set_ratio(string1, string2)
print(similarity_score)
输出:100
process.extract 方法
多个字符串之间的匹配:如果你要在多个字符串中找到与目标字符串最相似的字符串,可以使用process.extract()方法。它将返回按相似度得分排序的匹配结果列表。
query = "apple"
choices = ["apples", "banana", "orange", "pineapple"]
best_matches = process.extract(query, choices)
print(best_matches)
输出:[('apples', 91), ('pineapple', 90), ('orange', 36), ('banana', 18)]
process.extractOne方法
使用process模块进行最佳匹配查找。例如,你可以使用process.extractOne()方法查找给定字符串与一组字符串之间的最佳匹配结果:
query = "apple"
choices = ["apples", "banana", "orange"]
best_match = process.extractOne(query, choices)
print(best_match)
输出:('apples', 91)
process.extractBests方法
process.extractBests()方法返回一个按相似度得分排序的匹配结果列表,列表中包含多个匹配项。可通过score_cutoff控制匹配分数阈值,默认为 0
query = "apple"
choices = ["apples", "banana", "orange", "pineapple"]
best_matches = process.extractBests(query, choices,score_cutoff=90)
print(best_matches)
输出:[('apples', 91), ('pineapple', 90)]
本文暂时没有评论,来添加一个吧(●'◡'●)