Python嵌套字典优化:如何去除模糊匹配中重复的单词两两组合
解决方案
核心逻辑调整
原来的双重循环会遍历所有两个不同单词的排列(包含正反两种顺序),所以产生了冗余数据。我们改为仅计算单词索引为前序的匹配结果,即对于索引为i的单词,仅和索引大于i的单词计算相似度,每个两两组合仅保留一次记录。
修改后代码
from fuzzywuzzy import fuzz my_text = "Have you ever wanted" str_list = my_text.split() n = len(str_list) job_dict = {k: {} for k in str_list} # 按索引遍历,仅计算i < j的组合 for i in range(n): key = str_list[i] for j in range(i + 1, n): key2 = str_list[j] job_dict[key][key2] = fuzz.partial_ratio(key, key2) print(job_dict)
输出结果
针对示例输入的输出如下,无重复匹配项:
{'Have': {'you': 0, 'ever': 50, 'wanted': 50}, 'you': {'ever': 0, 'wanted': 0}, 'ever': {'wanted': 33}, 'wanted': {}}
后续如果需要查询两个单词的相似度,只要先判断两个单词的索引顺序,到索引更小的单词对应的字典里查询即可。
内容的提问来源于stack exchange,提问作者KIMIA Ghassemzadeh
相关产品推荐
相关产品推荐

