问题标签 [fuzzywuzzy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何使用模糊匹配语句提高 apply() 的性能
我编写了一个名为 muzz 的函数,它利用fuzzywuzzy 模块来“合并”两个pandas 数据帧。效果很好,但在较大的帧上性能很差。请查看我的 apply() 进行提取/评分,如果您有任何可以加快速度的想法,请告诉我。
创建一帧原始数据
哪个产量
然后是一个代表我们要查找的好数据的框架
哪个产量
现在是 muzz 功能。编辑:添加了选项= right[match_col_name] 行并在应用中根据 Brenbarn 建议使用了选项。根据 Brenbarn 的建议,我还使用 extractOne() 运行了一些没有应用的测试,这似乎是瓶颈。也许有一种更快的方法来进行模糊匹配?
呼唤哑巴
哪个产量
python - 使用 Python 对大数据集进行模糊逻辑
我的团队一直坚持在两个大型数据集上运行模糊逻辑算法。第一个(子集)大约有 180K 行,其中包含我们需要在第二个(超集)中匹配的人员的姓名、地址和电子邮件。超集包含 250 万条记录。两者具有相同的结构,并且数据已经被清理,即解析地址,标准化名称等。
- 联系人 ID 整数,
- 全名 varchar(150),
- 地址 varchar(100),
- 电子邮件 varchar(100)
目标是将一行子集中的值与超集中的相应值匹配,因此输出将结合子集和超集以及每个字段(令牌)的相应相似性百分比。
- 联系人ID,
- 查找联系人 ID,
- 全名,
- 查找全名,
- 全名_相似度,
- 地址,
- 查找地址,
- 地址_相似度,
- 电子邮件,
- 查找电子邮件,
- 电子邮件_相似度
为了首先简化和测试代码,我们连接了字符串,并且我们知道代码可以在非常小的超集上工作;但是,一旦我们增加记录的数量,它就会卡住。我们尝试了不同的算法,Levenshtein、FuzzyWuzzy 等,但均无济于事。在我看来,问题在于 Python 是逐行执行的。但是,我不确定。我们甚至尝试使用流在我们的 Hadoop 集群上运行它;然而,它并没有产生任何积极的结果。
python - 模糊比较两列
我有一个包含搜索词(数字和文本)的 CSV 文件,我想将其与其他词(数字和文本)的列表进行比较,以确定是否有任何匹配项或潜在匹配项。然后我想将所有结果写入一个新的 CSV 以供手动审查。我正在使用fuzzywuzzy 插件来创建一个“分数”,以确定术语之间的匹配程度。理想情况下,我将能够过滤比率。
我当前的代码将文件行一对一而不是第一个文件中的一行与第二个文件中的所有行进行比较;这就是我需要的。
如何针对 file2 中的所有行对 file1 中的每一行进行模糊查找?
下面是上述代码的一个更简洁的版本,但它仍然存在问题。代码给出了错误
IndexError:列表索引超出范围
知道如何使列表在范围内并且代码工作吗?
string - Python的fuzzywuzzy错误字符串或缓冲区期望
我正在使用fuzzywuzzy 在公司名称的csv 中查找近似匹配项。我正在将手动匹配的字符串与不匹配的字符串进行比较,希望能找到一些有用的邻近匹配,但是,我在fuzzywuzzy 中遇到了字符串或缓冲区错误。我的代码是:
这会产生以下错误:
这与导入指定编码的熊猫的效果有关,我添加了它以防止UnicodeDecodeErrors
但具有导致此错误的连锁反应。我试图强制使用对象,str(sssf)
但这不起作用。
因此,我在这里隔离了导致错误的一行:(#N/A,,,,,,
下面粘贴的代码中的第 29 行)。我认为#
是导致错误的原因,但奇怪的是,它不是A
导致问题的字符,因为文件在被删除时有效。对我来说奇怪的是,下面两行的字符串N/A
可以很好地解析,但是,当我删除符号时,第 29 行不会解析#
,即使该字段看起来与下面的字段相同。
python - 检查大型数据框是否存在在 python 中合并/组合期间出现的错误
我希望这是一个合适的问题。如果没有,请告诉我,我会立即删除它。
问题:
我如何使用 python 来检查(视觉?)一个大型数据集是否存在组合过程中出现的错误?
背景:
我正在处理几个大型(但不是,你知道“大”)数据集,我将它们组合成一个更大的数据集。这个新集合的大小约为 2.5G,因此它不适合大多数电子表格程序,或者至少不适合我尝试过的那些(MS Excel、OpenOffice)。
创建最终数据集的过程使用模糊匹配(通过fuzzywuzzy
),我想检查匹配结果以查看是否引入了任何错误。
截至目前,我已经尝试将整个集合导入pandas
数据框。这个 DF 有 64 列,所以当我简单地做类似df.head()
结果显示信息之类的事情时,显然不会显示所有列;因此,我排除了只是迭代多个.head()
调用。
这里有一个关于可视化数据框特定方面的类似问题。我认为我的问题不同,因为我不需要可视化任何有关底层结构或类型的内容。我只想目视检查我怀疑可能有错误的区域。
python - 何时使用哪个模糊函数来比较 2 个字符串
我正在学习fuzzywuzzy
Python。
我理解fuzz.ratio
,fuzz.partial_ratio
和fuzz.token_sort_ratio
的概念fuzz.token_set_ratio
。我的问题是什么时候使用哪个功能?
- 我是否先检查 2 个字符串的长度,如果不相似,然后排除
fuzz.partial_ratio
? - 如果 2 个字符串的长度相似,我将使用
fuzz.token_sort_ratio
? - 我应该一直使用
fuzz.token_set_ratio
吗?
有人知道 SeatGeek 使用什么标准吗?
我正在尝试建立一个房地产网站,想用它fuzzywuzzy
来比较地址。
python - Python 模糊匹配 (FuzzyWuzzy) - 只保留最佳匹配
我正在尝试模糊匹配两个 csv 文件,每个文件都包含一列名称,它们相似但不相同。
到目前为止,我的代码如下:
输出如下:
该脚本工作正常。输出符合预期。但我正在寻找的只是最好的匹配。
因此,我需要根据第 2 列中的最大值以某种方式删除第 1 列中的重复名称。这应该相当简单,但我似乎无法弄清楚。任何帮助,将不胜感激。
python - 使用fuzzywuzzy建立一个建议列表
我正在从我的数据库中构建一个建议引擎。我正在使用fuzzywuzzy 模块将用户输入字符串与现有数据库进行匹配,如下所示。
所以我需要一些关于其他部分的输入。我无法从数据库中选择我想要的正确单词。
如何改进这个建议?我还可以使用哪些库?另一种最好的(在记忆和时间方面最好的)可能的方法是什么?提前致谢!
python - to_dict 的奇怪行为
我正在构建一个模糊搜索程序,使用 FuzzyWuzzy 在数据集中查找匹配的名称。正如预期的那样,我的数据位于大约 10378 行len(df['Full name'])
的 DataFrame 中,为 10378。但是len(choices)
只有1695。
我在 IPython Notebook 中运行 Python2.7.10
和 pandas 。0.17.0
正如您可能知道的choices
那样,我在 dict 中获得了结果的索引df_ind
,我认为它与主数据框中的索引相同。
我相当确定问题出在to_dict()
函数的第一行,len(df['Full name'].astype(str)
结果为 10378,len(df['Full name'].to_dict())
结果为 1695。
python - 字符串列上两个数据集的 Python Pandas 模糊“连接”
我正在关注这个问题的答案,它使用fuzzywuzzy 在字符串列上“加入”两个数据集。
我收到一个错误,我在排除故障时遇到问题。
该错误消息似乎表明键值问题。假设这是关于空值,我将它们过滤掉,但仍然得到相同的错误消息。
字符串是可能有撇号、连字符、句号等的公司名称。我假设fuzzywuzzy 可以处理这些,所以不要先删除它们。
对我应该寻找什么作为解决此问题的后续步骤有任何见解吗?
这是使用 Pandas 从 Excel 文件中导入数据:
这是其他问题的一部分,它对数据集进行匹配和连接:
错误是:
编辑添加数据框列:
编辑以添加基于 davidshinn 答案的更正匹配修订: