一、前言

Github传送门：https://github.com/seatgeek/fuzzywuzzy

pip install fuzzywuzzy -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

二、fuzz模块

3. 忽略顺序匹配（Token Sort Ratio）

fuzz.token_sort_ratio（S1，S2）比较S1，S2单词是否相同，不考虑词语之间的顺序。

4. 去重子集匹配（Token Set Ratio）

fuzz的这几个 ratio 函数最后得到的结果都是匹配数值，如果需要获得匹配度最高的字符串结果，还需要依旧自己的数据类型选择不同的函数，然后再进行结果提取，如果但看文本数据的匹配程度使用这种方式是可以量化的，但是对于我们要提取匹配的结果来说就不是很方便了，因此就有了 process 模块。

四、实践

with open("Englishreading.txt", "r", encoding="utf-8") as f1:
dic1 = {}
for i in con1:
data = i.split(":")
dic1[data[0]] = data[1]

print(dic1)
with open("match.txt", "r") as f2:

dic2 = {}
for i in con2:
data = i.split(":")
dic2[data[0]] = data[1]
print(dic2)

test_str = "Marconi was central to our present-day understanding of communication."
# test_str = "As an adult, Marconi had an intuition that he had to be loyal to politicians in order to be influential."
big_lst = []
for k, v in dic1.items():
sentence = [x.strip(" ") for x in v.split(".")]
scores = []
for a in sentence:
score = fuzz.partial_ratio(a, test_str)
scores.append(score)
# print(scores, sum(scores), round(sum(scores) / len(scores), 2))
k_score = sum(scores) * 0.2 + sum(scores) / len(scores)
big_lst.append((k, scores, round(k_score, 2)))

results = sorted(big_lst, key=lambda x: x[2], reverse=True)
print(results)
print(results[0][0])

# -*- coding: UTF-8 -*-
"""
@Author  ： 叶庭云
@CSDN    ： https://yetingyun.blog.csdn.net/
"""
for idx, ans in dic2.items():
big_lst = []
for k, v in dic1.items():
sentence = [x.strip(" ") for x in v.split(".")]
scores = []
for a in sentence:
# score = fuzz.token_sort_ratio(a, ans)
score = fuzz.partial_ratio(a, ans)
if score > 30:
scores.append(score)
scores.sort()
if len(scores) >= 2:
max_ = max(scores) + scores[-2]
else:
max_ = max(scores)
big_lst.append((k, max_, scores))
results = sorted(big_lst, key=lambda x: x[1], reverse=True)
print(results)
print("-" * 66)

0 条评论

• 企业微信万亿级日志检索系统

作者：datonli，腾讯 WXG 后台开发工程师 背景 开发在定位问题时需要查找日志，但企业微信业务模块日志存储在本机磁盘，这会造成以下问题： 日志查找效率低...

• 基于OpenCV的跳一跳外挂实现原理

最近，微信跳一跳小游戏迅速走红并且在朋友圈刷屏，游戏的规则很简单，就是控制一个小矮子再各个墩子上跳来跳去。由于游戏比较简单，一时间大家都玩起来了，这也带动了一些...

• 分享一个强大的英汉词典开源数据库

之前我们通过程序整理过一份 Python 及编程相关的英语高频词汇表：我们用程序整理出了一份Python英语高频词汇表，拿走不谢！（回复 单词 查看代码及单词本...

• Word 神器 python-docx

前两天有个朋友向我求助，她在写毕业论文时，不小心将论文里的中文双引号替换为英文的了，各种原因导致无法回退，8万多字的论文，眼看就要交了，该怎么办？

• 推荐一个生成后端模拟数据的懒人工具：lazy-mock

本文来源：https://juejin.im/post/6871592049485807630

• MySQL模糊搜索的几种姿势

导读：本文对MySQL中几种常用的模糊搜索方式进行了介绍，包括LIKE通配符、RegExp正则匹配、内置字符串函数以及全文索引，最后给出了性能对比。

• 你可以这样写需求文档 第02期：字段取值

我们说产品经理对外输出有三个内容，需求文档、原型图、流程图，其中需求文档承载了整个设计目标、过程及最终结果，所以是笔者认为产品经理最重要的输出点。

• ES查询性能调优实践，亿级数据查询毫秒级返回

1、概述 本文简要描述ES查询性能的优化过程。忽略很多细节，其实整个过程并不顺利，因为并没有一个明确的指引，教你怎么做就能让性能大幅提升。很多时候不同业务有...

• 基于TF-IDF和KNN的模糊字符串匹配优化

模糊字符串匹配（Fuzzy string matching）是一种查找近似模式（而不是完全匹配）的技术。换句话说，模糊字符串匹配是一种搜索类型，即使用户拼错单词...

• 基于深度学习图像特征匹配，用于图像去重

向AI转型的程序员都关注了这个号??? 机器学习AI算法工程   公众号：datayx 基于Flask RESTful api的图像特征检索方案，api传入ur...

• 程序员带你十天快速入门Python,玩转电脑软件开发（四）

本系列文章立志于从一个已经习得一门编程语言的基础之上，全面介绍Python的相关开发过程和相关经验总结。本篇文章主要是基于上一篇的程序员带你十天快速入门Pyth...

• Python后端技术栈(六)--数据库

What makes you different or weird—that’s your strength.

• 由Java正则表达式的灾难性回溯引发的高CPU异常：java.util.regex.Pattern\$Loop.match

某天领导report了一个问题：线上的CPU自从上一个版本迭代后就一直处于居高不下的状况，领导看着这段时间的曲线图判断是有两条线程在不停的死循环。

• 【OCR技术系列一】光学字符识别技术介绍

注：此篇内容主要是综合整理了光学字符识别 和OCR技术系列之一】字符识别技术总览，详情见文末参考文献

• 程序员带你十天快速入门Python,玩转电脑软件开发（四）

本系列文章立志于从一个已经习得一门编程语言的基础之上，全面介绍Python的相关开发过程和相关经验总结。本篇文章主要是基于上一篇的程序员带你十天快速入门Pyth...

• Elasticsearch（四）

对于 ES，当我们了解了 mapping 和 analysis 的相关内容之后，使用者更关心的问题往往是如何构建查询语句从而搜索到自己想要的数据。因此，本文将会...

• 模糊匹配工具2.0

之前发过两篇关于模糊匹配工具的说明，《解决文字模糊匹配的小工具》和《快速模糊匹配——速度提升几千倍！！！》，解决以下这类场景：