编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

python fuzzywuzzy字符串模糊匹配

wxchong 2024-07-16 10:20:29 开源技术 15 ℃ 0 评论


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)]



Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表