我试图理解python模块fuzzywuzzy的函数process.extract()是如何工作的?
我主要在这里阅读fuzzywuzzy包:http://chairnerd.seatgeek.com/fuzzywuzzy-fuzzy-string-matching-in-python/,这是一篇在尝试进行模糊匹配时解释不同场景的文章。他们讨论了部分字符串相似性的几种情况:
1) Out Of Order
2) Token Sort
3) Token Set
然后,在这篇文章中: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)上找到的定义/信息,这个函数:
Find best matches in a list or dictionary of choices, return a list of tuples containing the match and it's score. If a dictionary is used, also returns the key for each match.
但是,它没有提供如何找到最好的细节?我上面提到的三个场景都找到了吗?
我问这个问题的原因是,当我使用这个函数时,有时有两个字符串非常相似,但不匹配。
例如,在我当前的示例数据集中
"Total replenishment lead time (in workdays)"
它与
"PLANNING_TIME_FENCE_CODE", "BUILD_IN_WIP_FLAG"
但不是(正确答案)
"FULL_LEAD_TIME"
即使正确的答案和待匹配字符串一样有“提前期”,但它与待匹配字符串根本不匹配。为什么?不知怎么的,其他看起来不像是匹配字符串的字符串也会被匹配。为什么?我现在完全糊涂了。
模糊模糊比较有四个比例。
base_ratio
:两个字符串的Levenshtein距离。partial_ratio
:最相似子串的比率。token_sort_ratio
:在比较之前对标记排序的序列相似性度量。token_set_ratio
:查找每个字符串中的所有字母数字标记。有关定量供应的更多详情,请参见http://chairnerd.seatgeek.com/fuzzywuzzy-fuzzy-string-matching-in-python/
默认情况下,
process.extract()
使用Partial_ratio
进行比较,但您也可以使用第三个参数来覆盖它process.extract()
例如
结果将是:
这表明它在默认情况下使用部分比例,您可以随时覆盖。
相关问题 更多 >
编程相关推荐