python fuzzywuzzy 的 process.extract():它是如何工作的?

新手上路,请多包涵

我想了解 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 -约定/ 我学会了如何使用 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”

尽管正确答案与待匹配字符串一样具有“准备时间”,但它根本不匹配待匹配字符串。为什么?不知何故,其他看起来不像待匹配字符串的字符串会被匹配。为什么?我现在很无知。

原文由 alwaysaskingquestions 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 12.1k
1 个回答

另一个答案在一个关键方面是错误的——推断 process.extract 的结果与 fuzz.partial_ratio 在一种情况下相同,因此他们默认做同样的事情。

process.extract 实际上默认使用 WRatio() ,这是四个 fuzz 比率的加权组合。这实际上是一个很酷的功能,根据经验,它在模糊匹配场景中运行良好。

不过,您可以通过 scorer 参数手动指定字符串比较函数 extract

来源 process.extracthttps ://github.com/seatgeek/fuzzywuzzy/blob/master/fuzzywuzzy/process.py

原文由 Jack Rowntree 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏