问题标签 [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 - Python中的模糊字符串匹配
我有 2 个超过一百万个名称的列表,命名约定略有不同。这里的目标是匹配那些相似的记录,具有 95% 的置信度的逻辑。
我知道有些库可以利用,例如 Python 中的 FuzzyWuzzy 模块。
但是,在处理方面,将一个列表中的每个字符串与另一个进行比较似乎会占用太多资源,在这种情况下,这似乎需要 100 万次乘以另外 100 万次迭代。
对于这个问题还有其他更有效的方法吗?
更新:
所以我创建了一个桶函数并应用了一个简单的规范化删除空格、符号并将值转换为小写等......
通过使用 pythons pandas,将数据加载到按年份分组的较小存储桶中,然后使用 FuzzyWuzzy 模块process.extractOne
来获得最佳匹配。
结果仍然有些令人失望。在测试期间,上面的代码用于仅包含 5000 个名称的测试数据帧,并且占用了将近一个小时。
测试数据被分割。
- 姓名
- 年份 出生日期 月份
我正在通过它们的 YM 在同一个存储桶中的存储桶来比较它们。
问题可能是因为我使用的 FuzzyWuzzy 模块吗?感谢任何帮助。
python - 使用fuzzywuzzy时cx_Freeze给出错误
我已经为 python3.4 中的调查条目构建了一个 tkinter GUI,它使用了许多包。然后我需要将它编译成一个可执行文件,这样我就可以把它放在同事的机器上(我们都在 windows7 平台上)我已经将 setup.py 构建成如下所示:
这对于大量版本来说都非常有效。但后来我添加了一个使用fuzzywuzzy 来比较字符串的功能。当我包含它并添加fuzzywuzzy
到选项字典中的包列表并编译它时,当我尝试运行以结尾的 exe 时出现大错误ImportError: No module named 'Levenshtein'
我不明白,因为在我的开发中该模块工作正常。我试图包含Levenshtein
在设置中,但它不作为模块存在。我没有安装 python-Levenshtein,因为我无法在我的 Windows 机器上安装 .whl。
有没有人遇到过这个?当通过python运行良好时,为什么fuzzywuzzy会导致这个错误?有什么我想念的吗?
完整的错误可以在这里看到:http: //imgur.com/a/rSKsS
编辑:我能够弄清楚 - 我需要安装 python-Levenshtein 模块,必须继续努力才能安装 .whl (显然我并不像我想相信的那样精通命令提示符) . 之后,我将Levenshtein
和包含fuzzywuzzy
在包列表中,并且编译没有错误。
我要留下这个,因为我在谷歌搜索中找不到这个,所以希望没有其他人成为受害者!
python - Python FuzzyWuzzy fuzz.ratio 和 process.extractOne 结果之间的意外不匹配
我正在编写一个代码,该代码使用模糊字符串匹配将用户输入的数据帧(经过一些清理后的字符串列表的数据帧)与感兴趣的特定单词进行匹配。我使用Python Pandas来处理数据帧,使用FuzzyWuzzy包来匹配字符串。我在 Anaconda 的Jupyter中做所有事情 notebook 中做所有事情。
代码工作得很好(它有大约 90% 的匹配准确度),我正处于试图找出为什么代码在某些情况下给出误报或误报的阶段。该代码仅标记 FuzzyWuzzyprocess.extractOne()
函数得分高于 80 分的匹配项。
然而,我偶然发现了一个奇怪的问题:在一个单元格中,测试人员输入的只是一个['x']
,而且它仍然被标记为'minimax'
一个感兴趣的词,这意味着它的分数一定在 80 以上,但它绝对不应该是。
似乎模块fuzzywuzzy.fuzz
并fuzzywuzzy.process
产生不同的结果。
这是预期的,分数fuzz.ratio()
足够低:
这是我实际使用的代码,其结果与上一个不匹配:
我检查并测试了代码的许多变体,无论process.extractOne
函数的哪个参数包含“x”,问题仍然存在。同样更改字符串中x的位置(例如, )也不会改变分数。当我使用不同的过程函数(例如)时也是如此。'minimax'
'xminima'
'mixnima'
process.Bests()
可能是什么问题呢?是我用错了功能还是包错了?不要忘记,在大多数情况下,我的代码都能正常工作。
python - Python中两个列表的全面比较
我正在努力解决一些性能问题。手头的任务是提取两个字符串之间的相似度值。为此,我正在使用fuzzywuzzy
:
但是,这没关系。我面临的问题是我有两个列表,一个有 1500 行,另一个有几千行。我需要将第一个的所有元素与第二个的所有元素进行比较。for 循环中的简单 for 将花费大量时间来计算。
如果有人建议我如何加快速度,将不胜感激。
python - 使用 Python 的 jellyfish 模块获得最佳匹配(部分字符串匹配)
我正在尝试创建某种字典来附加我的结果并使用 jaro 距离函数获得最佳匹配。
这是我尝试匹配 2 个列表并在两者中获得最佳匹配名称的一部分。
例子:
我想做的是:
在这种情况下,我希望它返回得分最高的 2:
对于 FuzzyWuzzy 用户,我正在尝试模拟process.extractOne
您可以将列表传递到其中的功能,process.extractOne(<value you want to compare>,<list of items you want to compare>)
您将获得最佳匹配。
我不使用 FuzzyWuzzy 的原因只是因为处理速度太慢而且我不确定后面发生了什么,与另一个 5000 个字符串列表相比,匹配 5000 个字符串最多需要 40 分钟。
python - Python:Fuzzywuzzy 不适用于外来字符
当我尝试使用外来字符的简单模糊模糊表达式时,使用 process.extractOne 方法得到错误结果(我尝试过使用和不使用 u):
然而,对于 fuzz.ratio,它运行平稳:
相同的代码适用于常规字符:
可能是什么问题?
python - FuzzyWuzzy 使用两个熊猫数据框 python
我想找到两个数据帧中字符串的 fuzz.ratio。假设我有 2 个数据帧 df,其中 A、B 列和 bt_df 列 A1、B1 .. 我想比较列 df['B'] 和 bt_df['B1'] 并返回最佳匹配分数及其对应的 id在 df[A] 和 .
提前致谢。
php - Fuzzywuzzy 显示类 Diff_SequenceMatcher 未找到
当我使用 Phalcon 用 PHP 编写的 Diff_SequenceMatcher 扩展 SequenceMatcher 类时。这表明,在fuzzywuzzy中找不到类?
python - Python的fuzzywuzzy返回不可预测的结果
我在python中使用fuzzy wuzzy,虽然它声称它适用于levenshtein距离,但我发现许多具有单个字符不同的字符串会产生不同的结果。例如。
我想 levenshtein 距离应该与所有示例中的单个字符距离相同,但我知道这不是简单的距离,它是某种“平等百分比”。
我试图了解它是如何工作的,但我似乎无法理解。我很长的字符串给出了 97,而很短的字符串给出了 67。我想这意味着字符串越大,对单个字符的影响就越小。但是对于 "vendor","vendora" 和 "estagiário","estagiária" 示例,情况并非如此,因为后者比前者大。
这是如何运作的?
我目前正在匹配用户输入的职位,尝试将输入错误的名称与正确输入的名称等联系起来。我的任务是否有更好的包?
python - 从模糊模糊 partial_ratio 获得不正确的分数
我对 Python 相当陌生,我正在尝试使用模糊 wuzzy 进行模糊匹配。我相信我使用 partial_ratio 函数得到的匹配分数不正确。这是我的探索性代码:
我相信这应该返回 100 分,因为第二个字符串“Barbil”包含在第一个字符串中。当我尝试在第一个字符串的末尾或开头删除几个字符时,我得到的匹配分数为 100。
当第一个字符串的长度变为 199 时,它似乎从 50 分变为 100 分。有没有人知道可能发生什么?