python - 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
解决方案
您使用的定义来自模块中的Ratio函数py_stringmatching
,但您使用的函数来自使用Levenshtein distance的fuzzywuzzy模块。
从Levenshtein 的递归实现中,您可以看到该算法逐个字符地考虑字符串,因此更改字符的顺序将更改输出值。
推荐阅读
- python - 如何解决 TypeError:“NoneType”类型的对象没有 len()
- python - 使用 QTableView 和 QSelectionModel 选择日历样式
- html - 尝试使用 css 隐藏弹出窗口
- python - wget 不是内部或外部命令、可运行程序或批处理文件
- mongodb - MongoDB 触发器重新驱动
- swift - 使用工具栏向上移动工具栏
- python - 难以理解“分配前引用的局部变量”
- .net-core - 如何使用 brew 分发 .NET Core 控制台应用程序
- ruby-on-rails - 使用 rails generate 创建一个控制器会导致一个奇怪的错误
- c# - 从另一个 lambda 调用 Lambda 函数不起作用