我想了解python模块fuzzywuzzy的函数process.extract()是如何工作的?
我主要在这里阅读了有关fuzzywuzzy 包的信息:http://chairnerd.seatgeek.com/fuzzywuzzy-fuzzy-string-matching-in-python/ ,这是一篇很好的文章,解释了尝试进行模糊匹配时的不同场景。他们讨论了部分字符串相似性的几种场景:
1) 乱序
2) 令牌排序
3) 令牌集
然后,从这篇文章:https ://pathindependence.wordpress.com/2015/10/31/tutorial-fuzzywuzzy-string-matching-in-python-improving-merge-accuracy-across-data-products-and-naming -conventions/我学会了如何使用fuzzywuzzy 的process.extract() 函数来基本上选择前k 个匹配项。
我找不到太多关于 process.extract() 函数如何工作的信息。这是我在他们的 GitHub 页面(https://github.com/seatgeek/fuzzywuzzy/blob/master/fuzzywuzzy/process.py)上找到的定义/信息,这个函数:
在选择列表或字典中查找最佳匹配项,返回包含匹配项的元组列表及其分数。如果使用字典,则还返回每个匹配项的键。
但是,它没有提供有关如何找到最佳的详细信息?是否需要我上面提到的所有 3 个场景才能找到这个?
之所以这么问,是因为我在使用这个函数的时候,有时候会出现两个非常相似但不匹配的字符串。
例如在我当前的样本数据集中,对于待匹配字符串
“总补货提前期(工作日)”
它匹配到
“PLANNING_TIME_FENCE_CODE”、“BUILD_IN_WIP_FLAG”
但不是(正确答案)
“FULL_LEAD_TIME”
即使正确答案与待匹配字符串一样具有“提前期”,但它根本不匹配待匹配字符串。为什么?不知何故,其他看起来不像待匹配字符串的字符串会被匹配。为什么?我现在很无知。