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

r - R中的快速Levenshtein距离?

是否有包含以 C 或 Fortran 代码实现的 Levenshtein 距离计数功能的包?我有很多字符串要比较,并且stringMatchfromMiscPsycho太慢了。

0 投票
1 回答
920 浏览

r - 在R中以矩阵形式写出距离测量的for循环结果

假设我有类似以下向量的东西:

我想执行一个循环,对这些字符串的所有可能组合的编辑距离进行成对比较(例如:字符串 1 到字符串 2,字符串 1 到字符串 3,等等)。输出应为矩阵形式,行数等于字符串数,列数等于字符串数。

我有以下代码:

stringdist() 函数来自 stringdist{} 包,但该函数也作为 adist() 捆绑在基本 utils 包中

我的问题是,为什么我的循环没有将结果写为矩阵,以及如何阻止循环覆盖每个单独的距离计算(即:以矩阵形式保存所有结果)?

0 投票
1 回答
3896 浏览

text - 用于拼写检查的机器学习算法

我有一个药物名称列表(regular_list)和一个新名称列表(new_list)。我想检查 new_list 中的名称是否已经存在于 regular_list 中。问题是名称 new_list 可能有一些错字错误,我希望这些名称被视为与常规列表匹配。我知道使用 stringdist 是解决问题的方法,但我需要机器学习算法

0 投票
1 回答
4828 浏览

r - 在R中使用'stringdist'和'amatch'进行字符串匹配

对于熟悉“stringdist”包的任何人来说,这是一个问题。

我正在尝试编写一个执行以下操作的函数:

搜索很长的字符列表,例如(仅显示约 100 万个字符中的 16 个):

对于结构如下的查询序列列表的每个序列的实例。

前任:

我想看看查询序列在我的任何“stripList”中出现了多少次(如果有的话),并允许 1 次插入、1 次删除、1 次替换和 1 次转置,并得到如下输出:

为此,我以下列方式使用“stringdist”包的“amatch”函数:

我有几个问题:

  1. 在'amatch'函数中,当使用method =“osa”时,“weight”参数如何解释?例如,如果我要使用:

    我是说我想要我的“querySeqs”的 90% 匹配吗?意思是,这些分数是否与“querySeqs”或我的表(stripList)有关?

  2. “maxDist”有什么功能?(它也被解释为百分比吗?)

  3. 有没有办法最大化我上面的代码的运行时效率(可能通过使用 data.table 等)?我之所以问,是因为我的实际数据集是通过约 1,000,000 个序列列表搜索的约 2000 个序列查询。

  4. 有没有比 'amatch' 更好的方法来查找整个序列(不仅仅是像 'agrep' 那样的子串)?

如果这些是基本问题,我很抱歉,这方面的文档对我来说很模糊,坦率地说,我还在学习。

提前致谢。

0 投票
3 回答
134 浏览

r - R中的高效编程

我有一个像

现在我必须检查 author_name 和 author_name1(name_dist) 之间的每一行 strindist 以及 author_affiliation 与 author_affiliation1(aff_sit.

我在用

但这需要花费大量时间。如何有效地完成这项工作?

谢谢

0 投票
1 回答
384 浏览

r - 提高 R 中(Levenshtein distance with weights)脚本的性能

我正在使用 Levenshtein 距离度量进行大量字符串比较,但因为我需要能够考虑字符串潜在结构中的空间邻接性,所以我必须制作自己的脚本,包括权重函数。

我现在的问题是我的脚本效率很低。我必须进行大约 600,000 次比较,并且脚本需要几个小时才能完成。因此,我正在寻找一种方法来提高我的脚本效率,但是作为一个自学成才的小伙伴,我不知道如何解决这个问题。

这是功能:

将我的 Levenshtein 度量的性能与 stringdist 包中的性能进行比较,性能要差 83 倍。

有没有人有改进我的脚本的想法?

0 投票
1 回答
258 浏览

r - R 2 个巨大数据集之间的相关匹配。即使有拼写错误

我有输入

“我是一个人旅行,我刚带了一张去新加坡、达尔文、珀斯、阿德莱德、墨尔本、布里斯班、黄金成本、悉尼奥普拉、基督城、黄金海岸里奇兰、奥克兰、澳大利亚和斐济的世界机票。它是一个 10 个月的旅程。我将自己去,我并不害怕,但我的朋友和家人似乎反对这个想法。我已经解释说它是安全的,我可能会在途中遇到人,旅馆是没有你们想象的那么糟糕。至少有 1/3 的旅行我会和朋友和家人住在一起。我很兴奋,但人们的悲观观点让我怀疑安全性。我来自英国所以离家很远,他们害怕我遇到麻烦。我从来没有去过美国”

我有一个多达 5000 行的地点列表。像伦敦、新加坡、悉尼、奥克兰、斐济、黄金海岸、悉尼歌剧院、澳大利亚、英国、美国......

问题通过从地点列表匹配从输入中获取地点。有拼写错误和最接近的匹配。需要优化。

输出 新加坡|达尔文|珀斯|阿德莱德|墨尔本|布里斯班|黄金海岸|悉尼歌剧院|基督城|奥克兰|澳大利亚|斐济|英国|美国

尝试过的方法

######这也不起作用
0 投票
0 回答
185 浏览

r - 应用 Jaro 字符串相似度算法时如何处理常见字符串中的重复字符

在应用 Jaro 字符串相似度算法时,我正在努力定义两个字符串之间的公共字符串。

说我们有

BY Jaro 相似度,半长为floor(11/2) - 1 = 4,由算法定义,s1[i] = s2[j]算作共同的,如果abs(i-j)<=4

那么映射矩阵是

所以:

现在我遇到一个常见的字符字符串长度不相等的情况,如何处理?

如果在 R 'stringdist' 包中应用 'stringdist' 函数,将获得以下结果:

这似乎是:

1/3*(8/9+8/11+(8-2)/8) [1] 0.7887205

上面的结果表明 stringdist 计数的公共字符串长度为 8。根据这个事实,如果我按摩char_ins1_canfound_ins2为 'rojohnde',应该有 6 个转置,这应该产生 1/3*(8/9+8/11+(8- 3)/8) 如果我按摩char_ins1_canfound_ins2为 'rojhndoe',应该有 2 个换位,这应该产生 1/3*(8/9+8/11+(8-1)/8)

Rstringdist函数如何处理上述情况?

百万感谢!

0 投票
1 回答
1749 浏览

r - 基于r中的相似字符串合并data.frame行

我有一个包含多列的 data.frame。第一列包含公司名称。这些已由用户输入,并且许多值包含代表相同实体的相似字符串。例如 Company A Pty. Company A Pty. Ltd. Company A Georgia。

我想用另一列中的单个常见字符串 Company A 替换这些变体。我看过 stringdist 和其他函数——但它们似乎不支持这个用例。

然后,这将允许我基于该公共字符串进行总结/聚合。

诸如 Google Refine 之类的第三方工具可以工作——但我更愿意在 R 中操作。

0 投票
2 回答
1647 浏览

r - R字符串相似度矩阵

我正忙于一个关于大量投诉数据的文本分析项目。数据的一个问题是您会得到同一个词的多个同义词,例如 bill、billing、billed、bills 等。通常我会创建一个词频列表并手动匹配明显的词频列表,然后将主要词应用回每个同义词实例的原始语料库,例如 billing, billed, bills -> bill(因为它都与账单相关)。我有一段漂亮的代码,这里有人帮助我。

最近我一直在尝试使用字符串距离算法通过识别可能的同义词来让我的生活更轻松的想法。我正在使用 stringdist 包,但我不知道如何有效地实施测试。基本上我需要一个所有单词的矩阵,并在交叉处是 stringdist 函数的结果。

我使用 stringdist 函数如下:

给出 0.955 的相似度分数

因此,从 a、b、c 的单词列表中,我想得到(值纯粹是指示性的):

其中交集是 stringdist 函数的结果。

或者,我也可以使用:

后者的唯一问题是重复项,例如 a、b 和 b,a 可以消除,因为它产生相同的结果。

如此聪明的 R 编码器,请帮助我。我想答案在矩阵函数的某个地方,但我不是一个足够好的 R 编码器。

干杯