Python DiffLib:get_close_matches找不到比率高于截止值的值

时间:2018-02-27 14:58:31

标签: python difflib

我使用difflib.get_close_matches遇到了不连贯的结果。

我试图在列表中找到字符串的最佳匹配(' Adeline,L。Marie')([' L.Marie,Adeline',&# 39; Allain,Martine' Ndiaye,Marie',' AdelaiDe Mori,Maria']

import difflib    
string = 'Adeline,L. Marie'
list = ['L. Marie,Adeline','Allain,Martine', 'Ndiaye,Marie', 'AdelaiDe Mori,Maria']
matches = difflib.get_close_matches(string, list,3, cutoff=0.4)
print ('Matches found: ' + ";".join(matches))
for element in list:
    print (element + ': ' + str(difflib.SequenceMatcher(None, 'Adeline,L. Marie', element).ratio()))

应用difflib:

difflib.get_close_matches(string, list,3, cutoff=0.4)

我得到三个结果,根据可用的documentation应该"按相似性得分排序,最相似的第一个"。

但是当我检查字符串和列表中每个元素之间的相似性得分时:

for element in list:
    print (element + ': ' + str(difflib.SequenceMatcher(None, 'Adeline,L. Marie', element).ratio()))

我不明白我为什么会这样做:

Matches found: Allain,Martine;Ndiaye,Marie;AdelaiDe Mori,Maria

当列表中的第一个元素(' L.Marie,Adeline')得分高于Allain,Martine'

L. Marie,Adeline: 0.5
Allain,Martine: 0.3333333333333333
Ndiaye,Marie: 0.6428571428571429
AdelaiDe Mori,Maria: 0.6285714285714286

我做错了什么?

感谢您的帮助。

0 个答案:

没有答案