问题标签 [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 回答
2272 浏览

python - python - 如何在运行fuzzywuzzy字符串匹配逻辑的2m行上进行多处理?当前代码非常慢

我是 python 新手,我正在一个包含 200 万条记录的列表上运行一个模糊的字符串匹配逻辑。该代码正在运行,并且它也正在提供输出。问题是它非常慢。在 3 小时内它只处理 80 行。我想通过一次处理多行来加快速度。

如果它有帮助 - 我在我的机器上运行它,配备 16Gb RAM 和 1.9 GHz 双核 CPU。

下面是我正在运行的代码。

提前致谢 !

0 投票
0 回答
512 浏览

python - 近似名称匹配以合并两个数据框python

我正在使用两个数据框(df1 和 df2),我想根据名称匹配将 df2 合并到 df1 中,但两者之间的名称不完全匹配(例如:'JS Smith' 可能是“JS Smith ( Jr)") 和 df1 中的名称位于由“|”分隔的列表中 用于各种名称变体。

此外,我在 df2 中还有 1 列包含稍微不同的名称,如果原始列中没有匹配项,我想回退到这些名称。

最后,如果 df1 中有一个唯一匹配项,我只想从 df2 中引入数据,并且我不想覆盖之前引入的条目。

以下是 dfs 的示例:

df1(其中 N1 表示名称变量列表中的第一个名称)

df2

我想先在“Name Type 2”上进行匹配假设匹配是:

  1. 名称 0.1 -> N1|N2 中的名称之一(df1 的第 1 行)
  2. 名称 2.1 -> N1|N2|N3|N4 中的名称之一(df1 的第 0 行)
  3. 名称 1.1 -> 不匹配 df1 中的任何名称,然后我会检查与 N1|N2|N3 匹配的名称 1(df1 的第 2 行)

生成的新 df 如下所示:

我目前的做法是:

  1. 遍历 df2 中的每一行并使用搜索 df1df1[df1['Name Variants'].contains('Name0.1')
  2. 如果存在唯一匹配项(在 df1 中找到 1 行)并且“匹配”未标记为“真”,那么我会提取数据
  3. 如果有多个匹配项,我不会提取数据
  4. 如果没有匹配项,我使用相同的方法搜索“名称 0”并再次运行相同的逻辑(1 个匹配项,当前没有合并数据等)

我的问题是:

  1. 考虑到这是非常耗时的
  2. 我不匹配,因为我可以给出最初描述的轻微拼写差异

这是我当前方法的代码:

0 投票
1 回答
379 浏览

python - 根据fuzzywuzzy比率返回对应的行

我正在使用模糊模糊来比较两个不同数据框中的两列。我想在 df2 中的同一行但不同列中检索相应的值。例如:

如果 df1 A 列中的 i 与 df2 A 列的匹配率超过 50,我想检索 df2 B 列中的相应值。

我当前的代码:

这进入了一个永无止境的输出——我每次都必须停止它。有谁知道如何根据一定的匹配率检索 df2 中的相应行?

谢谢纳扎尔

0 投票
1 回答
2250 浏览

python - 如何在 Python 中使用 FuzzyWuzzy 在两个数据帧之间进行名称匹配?

我有 df1 和 df2。我想使用fuzzywuzzy将df1中的A列与df2中的A列进行字符串匹配,并根据一定的比率匹配在df2的B列中返回一个ID。

例如:

df1 看起来像这样:


姓名

莎莉卖贝壳


df2 看起来像这样:


姓名 | ID

Sally slls 贝壳 | 28904


我要做的是比较 df1 中 A 列中的所有内容,以在 df2 中的 A 列中找到匹配项,并从 df2 中的 B 列返回 ID。

我希望能够设置模糊比率的标准。例如:我只希望它在比率高于 50 时返回一个 ID。

我当前的代码:

0 投票
1 回答
12716 浏览

python - 基于条件的 2 个大型数据集上的模糊模糊字符串匹配 - python

我有 2 个已读入 Pandas DataFrames 的大型数据集(分别约为 20K 行和 ~40K 行)。当我尝试在地址字段上使用 pandas.merge 直接合并这两个 DF 时,与行数相比,我得到的匹配数微不足道。所以我想我会尝试模糊字符串匹配,看看它是否会提高输出匹配的数量。

我通过尝试在 DF1(20K 行)中创建一个新列来解决这个问题,这是将 DF1[addressline] 上的fuzzywuzzy extractone 函数应用于 DF2[addressline] 的结果。我很快意识到这将花费很长时间,因为它将进行近 10 亿次比较。

这两个数据集都有“县”字段,我的问题是:有没有办法根据“县”字段有条件地对两个 DF 中的“地址行”字段进行模糊字符串匹配?在研究类似于我的问题时,我偶然发现了这个讨论:Fuzzy logic on big datasets using Python

但是,对于如何根据县对字段进行分组/阻止,我仍然很模糊(没有双关语的意思)。任何建议将不胜感激!

我添加了 2 个图像,它们是导入 Excel 的 2 个不同 DF 的样本集。并非所有字段都包括在内,因为它们对我的问题并不重要。为了重申我的最终目标,我想要一个 DF 中的一个新列,该列具有将地址行与第二个 DF 中的其他地址行进行模糊匹配的最佳结果,但仅适用于县在两个 DF 之间匹配的那些行。从那里我计划合并两个 df,一个在模糊匹配地址和第二个 DF 中的地址行列上。希望这听起来不会令人困惑。

0 投票
0 回答
51 浏览

python-2.7 - 根据条件查找重复值

以下是样本数据:

第一个是序列号,第二个是发送者,第三个是接收者,第四个是日期,这个数据持续了百万行。

现在,我想找出同一发件人在同一日期将包裹发送到同一收件人。

我为此编写了以下基本代码,但速度非常慢。

0 投票
3 回答
1972 浏览

python - Why does fuzzywuzzy not consider character order

Consider this example:

In the above case, it's confusing for my end-users that account is ranked above update for the given string. In this case account happens to be arbitrarily placed in front due to list order, since all matches share the same score. However, I would have imagined that update would have a higher score simply because the character u shows up earlier in the string.

Is this a conceptual error or am I not using the correct scorer here?

0 投票
2 回答
2757 浏览

python - 多处理模糊模糊字符串搜索 - python

我正在尝试在 python 中使用模糊 wuzzy 进行字符串匹配并带来匹配 id。我的数据集很大,dataset1 = 180 万条记录,dataset2 = 160 万条记录。

到目前为止我尝试过的,

首先我尝试record linkage在python中使用包,不幸的是它在构建时内存不足multi index,所以我以良好的机器能力转移到AWS并成功构建它,但是当我尝试对其进行比较时,它永远运行,我同意其由于比较的数量。

然后,我尝试fuzzy wuzzy使用包进行字符串匹配并并行化该过程dask。并在样本数据上执行它。它工作正常,但我知道这个过程仍然需要时间,因为搜索空间很宽。我正在寻找一种在这段代码上添加阻塞或索引的方法。

在这里,我正在尝试寻找test.Address1test2.Address1带来它的ID.

这很好用,但是我不确定如何通过限制同一城市的搜索空间来对其应用索引。

可以说,我正在根据原始字符串的城市在城市字段和子集上创建一个索引,并将该城市传递给辅助函数,

我不知道该怎么做?请指教。提前致谢。

0 投票
4 回答
88 浏览

python - Extracting numbers from a string using regex in python

I have a list of urls that I would like to parse:

I would like to use a Regex expression to create a new list containing the numbers at the end of the string and any letters before punctuation (some strings contain numbers in two positions, as the first string in the list above shows). So the new list would look like:

This is what I've tried with no luck:

Update:

Running -

I get the following error -

Also, it doesn't seem like this will pick up a letter after the numbers if a letter is there..!

0 投票
0 回答
116 浏览

python - 如何让 SSIS 模糊查找忽略像 python 的 token_sort_ratio 那样的令牌顺序

我的源数据与参考记录具有相同的数据,但顺序不同。eg:0.42345795,测试地址客户端#12订单;token@,token@ 客户端 #12 订单;地址,对于相同的inout和lookup记录,SSIS给出的相似度为0.4,python的置信度值为89。有没有办法让SSIS模糊查找转换忽略token顺序,使相似度值增加?