使用Python的水母模块获得最佳匹配(部分字符串匹配)

2024-09-30 04:35:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个字典来附加我的结果,并使用jaro distance函数获得最佳匹配。在

这是我尝试匹配两个列表并在两个列表中找到最匹配的名称的一部分。在

示例:

import jellyfish
jellyfish.jaro_distance(u'jellyfish', u'sellyfish')

output: 
0.9259259259259259

我想做的是:

^{pr2}$

在本例中,我希望它返回得分最高的2:

jellyfish jellyfihs 0.962962962963
salmonfish salmonfish 1.0

对于fuzzyfuzzy用户,我试图模拟process.extractOne函数,在这个函数中,您可以将一个列表传递到process.extractOne(<value you want to compare>,<list of items you want to compare>)中,您将得到最佳匹配。在

我之所以不使用fuzzyfuzzy只是因为处理速度太慢,而且我不确定后面发生了什么,5000个字符串与另一个5000个字符串列表的匹配需要40分钟。在


Tags: to函数字符串you列表字典processdistance
1条回答
网友
1楼 · 发布于 2024-09-30 04:35:41

这可能会解决您的问题:

def get_closest_match(x, list_random):
    best_match = None
    highest_jaro_wink = 0
    for current_string in list_random:
        current_score = jf.jaro_winkler(x, current_string)
        if(current_score > highest_jaro_wink):
            highest_jaro_wink = current_score
            best_match = current_string
    return best_match
for nickB in listB:
    result = get_closest_match(nickB,listA)
    print nickB, result

相关问题 更多 >

    热门问题