首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

FuzzyWuzzy,文本匹配的完美利器,太智能了!

咱们写代码时经常碰到字符串匹配的场景,比如搜索功能、数据清洗啥的。有时候输入的文本可能有点小错误,或者不太标准,这时候传统的精确匹配就不好使了。今儿咱聊聊FuzzyWuzzy,这玩意儿简直是文本模糊匹配的神器,用它来处理这些问题,那叫一个舒服~

1.

安装这玩意儿

装它特别简单,就一行命令:

pip install fuzzywuzzy

pip install python-Levenshtein  # 这个能让速度快不少

温馨提示:要是安装时报错,多半是 Python 版本不兼容,换个低版本试试看。

2.

基础玩法先上手

FuzzyWuzzy 最基本的用法贼简单:

from fuzzywuzzy import fuzz

# 看看这两句话多像

similarity = fuzz.ratio(“你好呀,老铁”, “你好啊,老铁”)

print(similarity)  # 输出: 94

这数字 94 啥意思?就是相似度分数呗,满分 100。越接近 100 说明越像。这不就跟咱们打游戏的分数似的~

3.

部分匹配才是真好用

有时候咱就想看看一个短文本在长文本里藏没藏着:

from fuzzywuzzy import fuzz, process

text1 = “北京烤鸭”

text2 = “我特别喜欢吃北京烤鸭,太香了”

# 部分比对

score = fuzz.partial_ratio(text1, text2)

print(score)  # 输出: 100

瞧见没?完美匹配!这就是partial_ratio的威力,它不在乎文本长短,只认咱要找的那部分。

4.

批量找相似就用 process

写程序的时候老碰到要在一堆文本里找相似的情况:

from fuzzywuzzy import process

choices = [“Python编程”, “Python入门”, “Java教程”, “C++基础”]

result = process.extract(“Pthon编程”, choices, limit=2)

print(result)  # 输出: [('Python编程', 90), ('Python入门', 67)]

看到没?就算把 Python 写错了,它也能猜出来咱想找啥!返回的结果里还会告诉咱相似度分数。

5.

按自己喜好调教它

有时候默认的匹配方式不够用,咱能自己设置规则:

from fuzzywuzzy import fuzz

# 忽略大小写和空格

text1 = “hello  world”

text2 = “HELLO WORLD”

score = fuzz.ratio(text1.lower(), text2.lower())

print(score)  # 输出: 100

温馨提示:处理中文时,最好先把标点符号和空格处理掉,不然可能会影响结果。

6.

实战小案例

来个实际点的例子:

from fuzzywuzzy import process

# 假设这是用户输入的搜索关键词

search = “流浪地球”

# 电影数据库

movies = [

“流浪地球2”,

“流浪地球:飞跃2023”,

“三体”,

“星际穿越”,

“流弹地球” # 故意打错的

]

# 找相似的电影名

matches = process.extract(search, movies, limit=3)

for movie, score in matches:

这代码一跑,立马就能看出哪些电影名跟咱搜的最像,连打错字的都能找出来,简直太智能了。

建议把相似度阈值设在 80 分以上,这样筛出来的结果才更靠谱。要是分数设太低,可能会匹配出一些不相关的结果,那就尴尬了。

写代码时遇到文本匹配的场景,FuzzyWuzzy 绝对是个好帮手。它不光能处理常见的文本匹配,还能自动纠错,特别适合搜索功能和数据清洗。赶紧去试试吧!

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OGfP5ykhmYAkMbM-3lBM4AaQ0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券