首页 > 解决方案 > Python FuzzyWuzzy 比率:它是如何工作的?

问题描述

在 FuzzyWuzzy 比率描述中,它说:

FuzzyWuzzy 比率原始分数是字符串相似性的度量,作为 [0, 100] 范围内的 int。对于两个字符串 X 和 Y,分数由 int(round((2.0 * M / T) * 100)) 定义,其中 T 是两个字符串中的字符总数,M 是两个字符串中的匹配数. FuzzyWuzzy 比率 sim 分数是 [0, 1] 范围内的浮点数,通过将原始分数除以 100 获得。

那么,当我改变单词的顺序时,这个分数怎么会不一样呢?

 from fuzzywuzzy import fuzz

 fuzz.ratio('EMRE MERT', 'OMER CAN') / 100 = 0.35

 fuzz.ratio('EMRE MERT', 'CAN OMER') / 100 = 0.47

标签: pythonfuzzywuzzyfuzzy

解决方案


您使用的定义来自模块中的Ratio函数py_stringmatching,但您使用的函数来自使用Levenshtein distance的fuzzywuzzy模块。

Levenshtein 的递归实现中,您可以看到该算法逐个字符地考虑字符串,因此更改字符的顺序将更改输出值。


推荐阅读