问题标签 [stringdist]

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 投票
4 回答
951 浏览

r - 一个向量上的 stringdist

我正在尝试使用 stringdist 来识别同一向量中最大距离为 1 的所有字符串,然后发布匹配项。以下是数据示例:

起始数据框:

期望的结果:

我可以将 stringdist 用于两个向量,但在将它用于一个向量时遇到了麻烦。感谢您的帮助,R 社区。

0 投票
0 回答
72 浏览

r - 使用stringdist R查找最大值的函数

我正在尝试编写一个函数,该函数使用stringdist.

我有一行这样的代码来查找第一行的最大值,但需要帮助来获取每一行。

我将如何编写一个函数来查找 Column1 中每一行的最大值?

0 投票
1 回答
2195 浏览

r - In R - fastest way pairwise comparing character strings on similarity

I'm looking for a way to speed up the following approach. Any pointers are very welcome. Where are the bottlenecks?

Say I have the following data.frame:

I want to compare each pair of rows in df on their JaroWinkler similarity.

With some help of others (see this post), I've been able to construct this code:

This generates the correct output:

However, my real data.frame has 8 million observations and I make 17 comparisons. To run this code takes days...

I am looking for ways to speed up this process:

  • Should I use matrices instead of data.frames?
  • How to parallelize this process?
  • Vectorize?
0 投票
0 回答
391 浏览

r - 计算大数据的成对字符串距离

我正在比较 17 列上 800 万个观测值的成对字符串距离。

因为我遇到了内存问题,所以我想寻求有关子设置技术或其他方法的帮助来克服这个问题。

在这个网站上的另一个问题中,我寻求帮助以加快我编写的原始代码(基于另一个问题)。得到的答案(感谢@alistaire)提供了非常有用的帮助并极大地提高了速度。但是,在真实数据上,我使用这种方法很快就会耗尽内存。

考虑以下测试数据,只有三个变量进行比较:

当我运行以下代码时,我得到了所需的输出并且速度非常快。

但是当我运行原始数据时,这种方法会导致内存问题。然而,我想使用这种方法,因为它真的很快。

是否有任何可用的技术/方法将此代码应用于 800 万个 data.frame 的子集,以便将每一行与 data.frame 中的每一行进行比较?

我正在使用的系统有:

  • 12核

  • 128GB 内存

0 投票
1 回答
1775 浏览

r - R字符串匹配地址使用stringdist,stringdistmatrix

我有两个大型数据集,一个大约一百万条记录,另一个大约 70K。这些数据集有地址。如果较小数据集中的任何地址存在于较大数据集中,我想匹配。正如您所想象的那样,地址可以以不同的方式和不同的情况编写,因此看到应该匹配时没有匹配而不应该匹配时却出现匹配是非常烦人的。我做了一些研究,并找出了可以使用的包 stringdist。但是我被卡住了,我觉得我没有充分利用它的功能,对此提出一些建议会有所帮助。

下面是一个示例虚拟数据以及我为解释这种情况而创建的代码

如果你看到输出,它会给我 df1 中 address_match 下的匹配项。如果我在我的主要数据上应用相同的代码,则代码从最近 30 小时开始仍在运行。虽然我已经转换为 data.table。不知道如何加快速度。

我正在进一步阅读并遇到 stringdist 矩阵。这似乎更有帮助,我可以根据空间拆分地址并检查每个地址列表中是否存在每个单词,并且根据最大匹配,可以创建匹配摘要。但是我不太擅长循环。如何循环遍历每个单词的较小文件中的每个地址并检查较大文件中的单个地址并创建匹配矩阵?任何帮助!

0 投票
2 回答
2073 浏览

r - R模糊字符串匹配以根据匹配的字符串返回特定列

我有两个大型数据集,一个大约一百万条记录,另一个大约 70K。这些数据集有地址。如果较小数据集中的任何地址存在于较大数据集中,我想匹配。正如您想象的那样,地址可以以不同的方式和不同的情况/拼写等方式编写。除此之外,如果只写到建筑物级别,则可以复制此地址。所以不同的公寓有相同的地址。我做了一些研究,并找出了可以使用的包 stringdist。

我做了一些工作,并设法根据距离获得最接近的匹配。但是,我无法返回地址匹配的相应列。

下面是一个示例虚拟数据以及我为解释这种情况而创建的代码

这将返回基于距离 3 的封闭字符串匹配,但是我希望在 df1 中也有来自 df2 的“Year”和“unique_id”列。这将帮助我知道字符串与 df2 中的哪一行数据匹配。所以最后我想知道df1 中的每一行,根据指定的距离,与 df2 最接近的匹配是什么,并且对于匹配的行,来自 df2 的特定“Year”“unique_id”

我想这与合并(左连接)有关,但我不确定如何合并以保留重复项并确保我具有与 df1(小型数据集)中相同的行数。

任何一种解决方案都会有所帮助!

0 投票
1 回答
121 浏览

r - 'R' 在矩阵中搜索值

我用 stringdistmatrix(c() 打印了一个矩阵。效果很好,但现在我需要 R 向我展示所有值 <=3 的情况。如何在矩阵中搜索这些值?

提前致谢!

0 投票
1 回答
4503 浏览

r - 将参数传递给R中的多个match_fun函数fuzzyjoin::fuzzy_join

我正在回答这两个 问题并得到了足够的解决方案,但是我无法将使用的参数传递fuzzy_join到我从中提取的 match_fun 中fuzzyjoin::stringdist_join。在这种情况下,我使用了多个 match_fun 的组合,包括这个自定义的match_fun_stringdist,也用于精确==<=标准匹配。

我收到的错误消息是:


0 投票
1 回答
122 浏览

r - 计算 data.table 的每个元素与参考表的每个值的 Levenshtein 比率,并以最大比率合并

我有一个包含 3 列的 data.table dt:

  • ID
  • 名称为字符串
  • 阈值为 num

一个样本是:

我有第二个表 dt.ref 有 2 列:

  • ID
  • 名称为字符串

一个样本是:

对于dt的每个rname,我想用dt.ref的每个cname计算Levenshtein 比率:

然后,我想在dt的每个rnamecname上找到 max(Lr)并获得以下 data.table 作为输出:

基本上,我们取 dt 并添加 2 列,即最大 Levenshtein 比率和相应的 cid,知道都添加了 tie,每行 1 个,对于 n2。

我使用data.table但解决方案可以使用dplyr或任何其他包。

0 投票
0 回答
176 浏览

r - 使用 stringdistmatrix 减少内存使用

我有 9k 行的data.table dt(请参见下面的示例)。我需要将dt的每个rname与参考dt.ref的每个cname进行比较。通过比较,我的意思是计算 Levenshtein 比率。data.table

然后,我取最大值并得到我的输出(见下文)。

dt

dt.ref

输出

为了计算这个输出,我stringdistmatrix在以这种方式编码的函数中使用函数(请参阅Computing the Levenshtein ratio of each element of a data.table with each value of a reference table and merge with maximum ratio):

但是,对于 9k x 75k 矩阵,我遇到了导致 R 会话中止的内存问题。除了拆分 9k 表之外,它是否是一种方法:

  1. data.table仅使用而不使用矩阵进行不同的编码?
  2. 排序和拆分参考表以仅在 75k 字符串的子集上计算 Levenshtein 比率?