问题标签 [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.
r - 快速计算所有行之间给定字符的位置匹配数的快速方法
我有一个矩阵,我想确定每个字符在所有成对之间出现在同一位置的次数。
下面是我正在做的一个示例,但是我的矩阵有 10,000 行,而且花费的时间太长。
r - R - 带加权词的字符串距离
有没有办法使用stringdist
包或其他字符串距离包来加权特定单词?
通常我的字符串共享一个常见的单词,例如“city”或“university”,结果得到相对接近的字符串距离匹配,但非常不同(即:“犹他大学”和“俄亥俄大学”,或“ XYZ 市”和“ABC 市”)。
我知道操作(删除、插入、替换)的权重可能因算法而异,但我还没有看到一种方法来包含与权重配对的单词列表。有什么想法吗?
当然,一种选择是str_remove
在匹配之前使用那些常用词,但这有一个问题,即“XYZ 县”和“XYZ 市”看起来相同。
例子:
“犹他大学”和“俄亥俄大学”
标准化字符串距离为 0.22222。这是相对较低的。但实际上,“Utah”和“Ohio”之间的标准化 OSA 字符串距离为 1:
4 / 18 = 0.222222
但是,事先删除“University of”和“State”等其他常见字符串会导致“University of Ohio”和“Ohio State”之间匹配。
对像“University of”这样的字符串进行加权计算,例如规范化分母中使用的实际字符数的 0.25 将减少这些常见子字符串的影响,即:
4 / (18 * 0.25) = 0.888888。
当我们考虑对州与大学的例子做同样的事情时,这里就变得模糊了:
产生 16。但取分母的 0.25:
16 / (18 * .25) = 3.55555。
也许更好的选择是使用 LCS,但降低匹配常见字符串列表的子字符串。因此,即使“University of Utah”和“University of Ohio”有一个 14 个字符的公共子字符串,如果“University of”出现在此列表中,它的 LCS 值也会降低。
编辑:另一个想法
我有另一个想法 - 使用tidytext
package and unnest_tokens
,可以生成所有匹配字符串中最常见单词的列表。考虑相对于它们在数据集中的共性来降低这些词的权重可能会很有趣,因为它们越常见,它们的区分能力就越小……
r - 如何在 dbplyr 中使用自定义 SQL 函数?
我想计算数据库中的 Jaro-Winkler 字符串距离。如果我将数据带入 R (with collect
),我可以轻松地使用包中的stringdist
函数stringdist
。
但是我的数据非常大,我想在将数据拉入 R之前过滤 Jaro-Winkler 距离。
Jaro-Winkler 有 SQL 代码(https://androidaddicted.wordpress.com/2010/06/01/jaro-winkler-sql-code/和T-SQL版本)但我想我不知道如何最好让该 SQL 代码与dbplyr
. 我很高兴尝试将该stringdist
函数映射到 Jaro-Winklersql
代码,但我不知道从哪里开始。但即使是像直接从 R 对远程数据执行 SQL 代码这样更简单的事情也会很棒。
我曾希望文档中的SQL 翻译dbplyr
可能会有所帮助,但我不这么认为。
r - 在 R 中交换两位数字的子集数据帧
我在下面提到了数据框:
利用上面提到的数据框,我想获得那些行的子集,对于相同的Num
和mail
,我们有不同的标识符,连续的 2 位数差异。
例如,在下面提到的输出中,标识符ar145j
更改为Ra145J
.
所需输出:
r - 没有“主表”的模糊匹配
是否可以在没有所需结果表的情况下执行某种类型的模糊匹配?
例如,标准化这些行:
进入第一个值,最后一个值或类似'Philip Harris'的东西 - 哪个并不重要。
我已经使用 R 中的 stringdist 包将一列附加到包含与测试的最小距离的值的数据框中,但要做到这一点,我有一个“正确”数据列表。
谢谢
r - Jaro-Winkler 的包之间的区别
我正在使用模糊匹配来清理用户输入的药物数据,并且我正在使用 Jaro-Winkler 的距离。当我注意到默认设置没有给出相同的值时,我正在测试哪个包与 Jaro-Winkler 的距离更快。谁能帮我理解差异来自哪里?例子:
我假设它与权重有关,我知道我在两者上都使用了默认值。但是,如果有更多经验的人可以阐明正在发生的事情,我将不胜感激。谢谢!
文档:
https://cran.r-project.org/web/packages/stringdist/stringdist.pdf https://cran.r-project.org/web/packages/RecordLinkage/RecordLinkage.pdf
r - 在 R 中对两个具有交叉连接的数据集使用 stringdist
stringdist 使用矢量
但我想先匹配两个数据集
第二个
所有这些字符串必须通过交叉连接 IE 输出匹配
如何获得想要的结果?这里矩阵 7x6 字符串。在 Real data 20 000, 20 000 中。它是乌克兰字符串。这里的商品名称,内容无所谓。问题是如何匹配这些字符串。
r - R - 通过 levenshtein 距离返回 n 个匹配项
我想通过 levenshtein 距离找到给定字符串的 n 个最佳匹配项。我知道adist
R 中的函数给出了最小距离,但我试图将结果的数量缩放到 10。我在下面有一些代码。
所需的结果是一个数据框,其中包含source1$name
、 和基于 lev 距离的最佳 5 个匹配列,adist
以及source1$address
它的最佳 5 个匹配项。也许使用top_n
from 的东西dplyr
?如果有任何不清楚的地方,请告诉我。任何帮助深表感谢。谢谢。
r - 在 r 中使用 stringdist 进行字符串匹配?
我想匹配,然后将字符串替换为最接近的匹配。我正在使用 stringdist 库。下面是我的代码
它给出如下输出:
这意味着“solar thyme 30g”更接近“2 ltr thums up”,但实际上“Thums Up 2 L”应该更接近。我应该将 levenshtein 方法更改为其他方法吗?
r - R中的顺序无关字符串匹配
我正在尝试将表 A 中的名称与主表中存在的名称相匹配。表 A 中出现的姓名顺序并非完全一致的格式,这意味着姓名不一定以名字开头,在某些情况下它也可能以姓氏开头,这都是随机的。
插图:
执行以下代码:
返回以下匹配:
由于字符串匹配中的顺序依赖性,而不是与“NOLAN PILLAY”和“NICHOLAS PILLAY”匹配。
有什么方法可以在 R 中获得所需的结果,基本上是顺序独立的字符串匹配?非常感谢您的帮助...