- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想了解 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.
但是,它没有提供有关如何找到最佳选择的详细信息?是否需要我上面提到的所有 3 种情况才能找到它?
之所以这么问,是因为我在使用这个函数的时候,有时候会出现两个非常相似但不匹配的字符串。
例如在我当前的示例数据集中,对于待匹配字符串
"Total replenishment lead time (in workdays)"
匹配到
"PLANNING_TIME_FENCE_CODE", "BUILD_IN_WIP_FLAG"
但不是(正确答案)
"FULL_LEAD_TIME"
尽管正确答案与待匹配字符串一样具有“准备时间”,但它与待匹配字符串根本不匹配。为什么?不知何故,其他看起来不像待匹配字符串的字符串会被匹配。为什么?我现在很无知。
最佳答案
另一个答案在一个关键方面是错误的 - 在一种情况下 process.extract
的结果与 fuzz.partial_ratio
相同的推断,因此它们是默认情况下做同样的事情。
process.extract
实际上默认使用 WRatio()
,它是四个 fuzz
比率的加权组合。这实际上是一个很酷的功能,根据经验,它在模糊匹配场景中运行良好。
仍然,您可以通过 scorer
参数手动指定字符串比较函数到 extract
process.extract
的来源:https://github.com/seatgeek/fuzzywuzzy/blob/master/fuzzywuzzy/process.py
关于python fuzzywuzzy 的 process.extract() : how does it work?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41171665/
我正在尝试使用 FuzzyWuzzy 来纠正文本中拼写错误的名称。但是,我无法让 process.extract 和 process.extractOne 按照我预期的方式运行。 from fuzzy
首先,请注意我是一个Python新手,所以提前致歉。然而,我在最后一两天对此进行了研究,但没有运气 - 因此我在这里发表第一篇文章。 我需要根据以下格式的 CSV 文件中的“名称”来模糊匹配数据: C
当我尝试使用外来字符进行简单的 fuzzywuzzy 表达式时,使用 process.extractOne 方法得到错误的结果(我尝试过使用和不使用 u): >>> choices= [u"הלכות
我有以下数据框: df = pd.DataFrame( {'id': [1, 2, 3, 4, 5, 6], 'fruits': ['apple', 'apples', 'orang
要么我的进程一个接一个地启动,要么它们启动(同时)但没有调用指向函数。我以某种方式尝试了许多变体,它不会像许多教程所教的那样起作用。 我的目标是模糊模糊字符串匹配 80k 文本句子项目列表,删除不必要
我有一个包含 10 个解析地址的数据帧 df_sample,并将其与另一个包含数十万个解析地址记录 df 的数据帧进行比较。 df_sample 和 df 共享完全相同的结构: zip_code
我正在使用 fuzzywuzzy 在公司名称的 csv 中查找近似匹配项。我正在将手动匹配的字符串与未匹配的字符串进行比较,希望找到一些有用的近似匹配,但是,我在 fuzzywuzzy 中遇到了字符串
我有一个包含 10 个解析地址的数据帧 df_sample,并将其与另一个包含数十万个解析地址记录 df 的数据帧进行比较。 df_sample 和 df 共享完全相同的结构: zip_code
我有一个数据框: alertname custname 0 wlison wilson 1 dais said 2 4dams adams 3 ad4ms adam
我正在 python 中使用模糊 wuzzy,虽然它声称它可以使用编辑距离,但我发现许多具有不同字符的字符串会产生不同的结果。例如。 >>>fuzz.ratio("vendedor","vendedo
我正在使用 fuzzywuzzy 来计算两个句子之间的相似度。以下是一些对我来说毫无意义的结果: from fuzzywuzzy import fuzz s1 = "moist tender pork
我正在使用 FuzzyWuzzy String Matching module from SeatGeek . 我发现在使用 token_set_ratio 搜索算法时,大小写上的微小差异会产生截然不
我用 pip 为 python3 安装了 fuzzywuzzy。当我执行 pip list 时,我看到了 fuzzywuzzy (0.8.1) 但是,当我尝试导入时出现错误。 Python 3.4.0
我有一个包含约 20000 个单词的 CSV 文件,我想按相似性对这些单词进行分组。为了完成这样的任务,我正在使用神奇的 fuzzywuzzy包,它似乎工作得非常好,并且用一个小数据集(~100 字)
我在 fuzzywuzzy 中得到的结果不如预期的那样有效。如果中间多了一个词,由于levenshtein的差异,得分较低。 例子: from fuzzywuzzy import fuzz score
我在 pandas 中有一个数据框,我在 python 中使用 fuzzywuzzy 包来匹配数据框中的第一列和第二列。 我已经定义了一个函数来创建具有第一列、第二列和部分比率分数的输出。但它不起作用
我正在尝试模糊匹配两个 csv 文件,每个文件包含一列名称,它们相似但不相同。 到目前为止我的代码如下: import pandas as pd from pandas import DataFram
我有两个列表需要相互匹配。我需要将每个 str1 单词与每个 str2 单词列表进行匹配。我在 str2 中有一个 40k 单词的列表。我想尝试使用多处理来使其运行得更快。 例如: str1 = ['
假设我有以下 3 个数据框: import numpy as np from fuzzywuzzy import fuzz from fuzzywuzzy import process import
我正在使用 Python fuzzywuzzy 在句子列表中查找匹配项: def getMatches(needle): return process.extract(needle, boo
我是一名优秀的程序员,十分优秀!