Python difflib:序列相似性高于截止点,但 get_close_matches() 没有结果
Python difflib: sequence similarity above cutoff point, but no result on get_close_matches()
所以我正在使用 difflib 查找以不同格式写下的相同街道。这是真正让我烦恼的一对:“1-й Лихачевский переулок”和“Переулок Лихачевский 1-й”。
我这样计算序列相似度:
s = difflib.SequenceMatcher(None, "1-й Лихачевский переулок", "Переулок Лихачевский 1-й")
s.ratio()
给我结果 0.5416666666666666。够好了,嗯?但是好吧,get_close_matches() 的默认截止点是 0.6,所以我这样做:
difflib.get_close_matches('1-й Лихачевский переулок', 'Переулок Лихачевский 1-й', cutoff=0.5)
没有结果!事实上,即使我将 cutoff 设置为 0.1 也没有结果。
我错过了什么?
get_close_matches()
的第二个参数是要匹配的字符串序列,而不是单个字符串。因此,例如,传递一个列表:
>>> difflib.get_close_matches('1-й Лихачевский переулок', ['Переулок Лихачевский 1-й'], cutoff=0.5)
['Переулок Лихачевский 1-й']
照原样,您传递了一个字符串,该字符串被视为一系列单独的字符。
所以我正在使用 difflib 查找以不同格式写下的相同街道。这是真正让我烦恼的一对:“1-й Лихачевский переулок”和“Переулок Лихачевский 1-й”。
我这样计算序列相似度:
s = difflib.SequenceMatcher(None, "1-й Лихачевский переулок", "Переулок Лихачевский 1-й")
s.ratio()
给我结果 0.5416666666666666。够好了,嗯?但是好吧,get_close_matches() 的默认截止点是 0.6,所以我这样做:
difflib.get_close_matches('1-й Лихачевский переулок', 'Переулок Лихачевский 1-й', cutoff=0.5)
没有结果!事实上,即使我将 cutoff 设置为 0.1 也没有结果。
我错过了什么?
get_close_matches()
的第二个参数是要匹配的字符串序列,而不是单个字符串。因此,例如,传递一个列表:
>>> difflib.get_close_matches('1-й Лихачевский переулок', ['Переулок Лихачевский 1-й'], cutoff=0.5)
['Переулок Лихачевский 1-й']
照原样,您传递了一个字符串,该字符串被视为一系列单独的字符。