首页 > 解决方案 > 在 Python 3 中模糊得分前 N?

问题描述

我正在尝试建立一个dataframe单词和fuzzywuzzy分数,并获得前 5 名。

例如我有测试词test = "kuku"

我的词袋是:

words = ["tutu", "pupu", "lulu", "kuko", "dfvfd", "wwwer"]

到目前为止,我已经完成了以下工作:

import os
import pandas as pd
from fuzzywuzzy import fuzz

test = "kuku"
[print(i, fuzz.ratio(i, test)) for i in words]

但我希望能够按分数排序并获得前 N 个。

请告知解决此类问题的最佳做法是什么?

标签: pythonpandasfuzzy-comparison

解决方案


Fuzzywuzzy 的 process.extract() 以反向排序返回单词列表。第一场比赛将是最好的一场。

from fuzzywuzzy import fuzz 
from fuzzywuzzy import process 

query = 'sat'
choices = ['slate', 'saturn', 'satellite', 'sat', 'shore']  
print(f"top 3: {process.extract(query, choices)[:3]}")

推荐阅读