问题标签 [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.

0 投票
1 回答
856 浏览

python - 返回一个模糊匹配列表的索引

我有一个“ID”列表:

我发现的另一个“id”列表是使用fuzzywuzzy的重复id:

我想再次使用fuzzywuzzy 创建一个列表列表,其中包含重复ID 在列表“ID”中的位置(按索引)。所以输出看起来像这样(因为它们是重复的,所以列表中的每个列表都至少包含两个元素:

我的尝试,目前只返回 id 而不是 id 的位置:

更新,我尝试使用 Moe 的答案来查找/分组完全匹配:

0 投票
1 回答
462 浏览

python - 如何从 conda 的站点包目录中添加 Python 模块到 spark-submit?

我需要运行 PySpark 应用程序 (v1.6.3)。有--py-files添加 .zip、.egg 或 .py 文件的标志。如果我有一个 Python 包/模块/usr/anaconda2/lib/python2.7/site-packages/fuzzywuzzy,我将如何包含整个模块?

在这个目录中,我确实注意到了一些 *.py 和 *.pyc 文件。

  • fuzz.py
  • 进程.py
  • 字符串匹配器.py
  • 字符串处理.py
  • 实用程序.py

我是否必须一一包括这些?例如。

有没有更简单的方法?

  • 我应该尝试找到 .egg 或 .zip 并使用它(例如pypi)吗?
  • 我可以压缩这个目录并把它传进去吗?

任何提示或指示将不胜感激。实际上,我需要更多由 conda 管理的 Python 模块。

0 投票
1 回答
1045 浏览

scala - 使用带有scala的apache spark在两个hive列​​之间进行模糊比较

我正在从 2 个配置单元表中读取数据。令牌表中有需要与输入数据匹配的令牌。输入数据将具有描述列以及其他列。我需要拆分输入数据,并且需要将每个拆分的元素与令牌表中的所有元素进行比较。目前我正在使用 me.xdrop.fuzzywuzzy.FuzzySearch 库进行模糊匹配。

下面是我的代码片段-

现在我需要迭代 desc_tokens 并且 desc_tokens 的每个元素都应该与令牌的每个元素进行模糊匹配,并且它超过 85% 的匹配我需要用令牌中的元素替换 desc_tokens 中的元素。

例子 -

我的令牌列表是

我的输入描述是

代码应该返回

因为hellohelo模糊匹配 > 85%,所以 helo 将被 hello 替换。样品也是如此。

0 投票
2 回答
1133 浏览

python - 姜戈。如何返回模糊模糊方法的 QuerySet order_by 结果?

这是我的模型:

我想查询集合项目,所以它返回按模糊模糊排序的 X 个项目。 基本上,我需要找到匹配的项目并将它们合并。

我试图创建一个字典,但它非常慢。我有大约 80 000 件物品,而且还在增加。

我尝试过类似的事情:

谁能给我一些关于这个话题的信息?谢谢

0 投票
2 回答
3622 浏览

pyspark - PySpark 抛出 ImportError,但 Module 确实存在并且运行良好

我正在使用 Cloudera,Spark 版本是 2.1.0。

我试图交叉加入两个表并创建一个具有模糊匹配率的列(因此我需要导入fuzzywuzzy)。这是代码:

它抛出

但是fuzzy.token_set_ratio当我在交互式外壳中输入它时可以工作。所以我真的不知道这里发生了什么。

有人可以帮忙解决我的问题吗?太感谢了!

0 投票
0 回答
556 浏览

python - 高效的模糊字符串匹配

我正在努力寻找一种有效的方法来将音素字符串(有一些错误)与模糊逻辑的正字法句子匹配。我的问题是,由于搜索空间非常大,即使在我的 64GB 机器上,我似乎也内存不足。

例如我有一个输入:

我想给我一个句子(或至少尽可能接近):

目前我正在使用fuzzywuzzy,我首先尝试整个匹配,如果不是最好的部分匹配,我会多次运行以获得更大的块,这样我就不会超载内存并最终让我的部分(par_sents)进入通过 best_sents。到目前为止,这是我的代码:

我成为下一轮候选人的部分比赛是这样的:

我想知道是否有人可以帮助我提高效率。有没有比fuzzywuzzy 更好的包,还是只是我的代码需要工作?

0 投票
2 回答
556 浏览

python - python3fuzzywuzzy不返回数组的索引值

我正在尝试修改fuzzywuzzy库。模块进程返回score和 数组元素。但我希望它返回元素的索引以及分数、项目、索引组。
这是我尝试过的:

当我尝试实现它时,结果是之前fuzzywuzzy显示的结果。

但我期望它返回的是:

请让我知道这个建议。

0 投票
1 回答
2327 浏览

python - Python Pandas 列和模糊匹配+替换

介绍

您好,我正在开展一个项目,该项目需要我将 pandas 文本列中的字典键替换为值 - 但可能存在拼写错误。具体来说,我在 pandas 文本列中匹配名称,并将它们替换为“名字”。例如,我会将“tommy”替换为“First Name”。

但是,我意识到字符串列中存在拼写错误的名称和文本的问题,这些字符串不会被我的字典替换。例如,“tommmmy”有额外的 m,不是我字典中的名字。

所以“tommmy”与 -> 中的“tommy”不匹配,我需要处理拼写错误。我考虑过在实际的字典键和值替换之前尝试执行此操作,例如扫描熊猫数据框并用适当的名称替换字符串列(“消息”)中的单词。我已经看到了一种类似的方法,它在像这样的特定字符串上使用索引

但是如何使用正确拼写列表匹配和替换 pandas df 中句子中的单词?我可以在 df.series replace 参数中执行此操作吗?我应该坚持使用正则表达式字符串替换吗?*

任何建议表示赞赏。

更新,尝试 Yannis 的回答

我正在尝试 Yannis 的答案,但我需要使用来自外部来源的列表,特别是美国的名字普查进行匹配。但它与我下载的字符串的全名不匹配。

结果是:

但是,如果我使用这样的较小列表,它会起作用:

是否有较长的名称列表导致了问题?

0 投票
1 回答
2052 浏览

python - 使用fuzzywuzzy和python3.6根据评分适当匹配字符串

我正在尝试使用fuzzywuzzy我的 python 应用程序中的模糊逻辑库来匹配字符串。我发现,即使得分相等,fuzzywuzzy 也没有给出适当的结果,它在第一个位置列出了错误的结果。
这是示例:

可以看到,字符串 is jwalsh,最合适的结果是Jonathan Walsh,它应该在结果中的第一个位置,因为它是第二个。
请建议我如何更正结果并显示最合适的结果。由于这是相同得分的情况,因此存在可以以较少得分获得适当结果的情况。
我该怎么做才能获得最佳输出?除了 有什么建议fuzzywuzzy吗?请让我知道。

0 投票
0 回答
68 浏览

python - 清理半冗余文本

首先是一点背景: 链接到附件

我有很多由一些语音转文本应用程序生成的文本(老实说,我不知道应用程序的名称,因为我没有物理访问权限,但是我可以访问实时输出)。我正在实时挖掘这些数据,输出文本看起来像第一个附件,有些部分非常干净,有些非常冗余。

我现在已经用 Python 编写了一个清理文本的软件(附件二)。问题是,我一次只能处理很多文本,例如。我的备份有数百兆字节的纯文本,当它实时出现时,很难只处理几个字符串,因为半冗余持续 15-25 行(如附件 1 所示)。

该软件适用于更大的文件,我现在正在尝试重写代码,使其适用于实时输出。

但由于我是一名自学成才的程序员,我想知道是否有人可以分享他们的工作方法。

我的方法是(另见附件二,但我不擅长评论,所以我不知道你是否能从中得到很多):

  1. 打开文件(纯文本)并等待 25 行写入文件
  2. 将 25 行读入一个列表,我们称之为 MasterList
  3. 在 MasterList 上运行清理功能(1-7)(见下文)
  4. 打印第 10-14 行以清理文件(第一次打印第 0-14 行)
  5. 将 MasterList 的第 5-24 行推到 MasterList 的开头,使它们现在具有索引 0-19
  6. 将 5 个新行读入 Masterlist 或等到 5 个新行准备好
  7. 回到#3

--> 关于 #3 的注意事项:清理函数执行以下操作: *通过使用模糊字符串匹配、fuzzywuzzy 比较行,并删除重复或半重复的行

*检查一个句子中的第一个单词是否与上一个句子中的最后一个单词相同,在这种情况下删除上一个句子中的最后一个单词 *较小的东西,使文本看起来干净。

我的问题是:你会以完全不同的方式去做吗?也许机器学习?另一种语言可能更适合?任何图书馆甚至软件已经可以做到这一点?

如果您确实阅读了我的代码,我也渴望了解我的错误,如果您看到我正在做的一些愚蠢的事情,非常欢迎批评(如果您想抨击我,甚至是严厉的批评)是非常受欢迎的。

非常感谢您的宝贵时间。