问题标签 [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 - Windows 与 linux 上的 stringdist 性能(红帽)
我最近在 R 中的 Windows 机器上开发了一个模糊字符串匹配例程。我对速度感到非常满意。现在我尝试在虚拟红帽服务器上运行相同的程序,但速度要慢得多,即大约一个因素。100.整个过程在Windows机器上耗时1小时(6核,Intel,3.4Ghz)
我基本上做的是这样的:
在 redhat 机器(14 核,AMD,2.6 GHz)上,我在启用了 openblas 的情况下运行 R。r-package stringdist 在版本 0.9.4.1 的两台机器上都运行 上面的命令运行了几百万次。奇怪的是,它甚至似乎放慢了速度。启动该过程时,我的日志告诉我:
几个小时后它告诉我:
在 Windows 机器上,这看起来像这样(6 个进程正在写入日志):
在 Windows 机器上,我们不使用 RevolutionR(或其 R-open-MS 变体)。不知道它是否使用 mkl,但实际上在使用 R 中的字符类时并不重要。可能是某种编码问题吗?当使用 Rprof 进行分析时,它所花费的绝对时间在 windows 和 linux 上的报告不同。关于相对时间,只有 enc2utf8 似乎在 linux 上更为突出。
还有其他想法吗?谢谢马丁
python - Levenshtein 实现能够处理大字符串和向量
R 中有一个名为的包stringdist
,其中包含用于计算 Levenshtein 字符串距离的函数。这个包有两个问题:
第一个它不适用于大字符串,例如:
向量中的第二距离是按向量元素的字符而不是按整个向量计算的:
我想得到最后一个命令 4 的结果:因为需要 4 次替换(对应位置上的 4 个向量元素不同)。在这种情况下,我可以获取非 0 的值并计算它们,例如:r <- stringdist(a.vec, b.vec, method = "lv"); length(r[r!=0])
. 但它在以下示例中不起作用:
我想得到最后一个命令 1 的结果(在第一个向量的第一个位置插入 2)。
PS还有内置的实现,但它也不适用于大字符串(老实说,我不知道它是如何处理向量的,因为我不明白它的输出):
是否有任何实现(最好在 python、perl 或 R 中)满足我的要求?非常感谢。
PPS我有多个文件,其中每行包含 1 ~ 500 的数字(这就是为什么我需要将例如 347 视为一个元素而不是由 3、4、7 组成的字符串,因为 3、4、7 是另一个单独的数字)。这些文件有 ~ 250000 行。我想知道这些文件彼此之间有多相似。我想 10k*10k 大小是问题所在。但这里提到的 Levenshtein 算法只使用 2*10k 大小(如果两个字符串都是 10k 长)。我想诀窍是它只计算结果而忘记了结果是如何计算的,但这对我来说没问题。汉明距离对我来说还不够,因为我需要考虑插入、删除、替换,在汉明中这两个字符串1234567890
0123456789
是完全不同的,但在 Levenshtein 中它们是相似的。
r - Compare item in one row against all other rows and loop through all rows using data.table - R
I'm combining similar names using stringdist()
, and have it working using lapply
, but it's taking 11 hours to run through 500k rows and I'd like to see if a data.table solution would work faster. Here's an example and my attempted solution so far built from readings here, here, here, here, and here, but I'm not quite pulling it off:
I'm currently using lapply()
to cycle through the strings in the cartype
column and bring together those rows whose cartype
names are closer than a specified value (.08).
Data Table Attempt:
#xA;An intermediate step: This code pulls similar names based on the row's value that I manually plug into myfun()
, but it repeats that value for all the rows.
I'm now trying to cycle through all the rows using set()
. I'm close, but although the code appears to be correctly matching the text from the 12th column (cartype
) it's returning the values from the first column, mpg
:
Now, this is pretty hacky, but I found that if I create a copy of the cartype
column and place it in the first column it pretty much works, but there must be a cleaner way to do this. Also, it would be nice to keep the output in a list form like the lapply()
output above as I have other post-processing steps set up for that format.
r - stringdist 包中的 Jaccard 相似度以匹配字符串中的单词
我想在 stringdist 函数中使用 Jaccard 相似度来确定词袋的相似度。据我所知,使用 Jaccard 仅匹配字符串中的字母。
所以我们在这里看到它计算了'cat'和'cat','dog'和'dog'和'person'和'ufo'的相似度。
我还尝试将单词转换为 1 个长文本字符串。以下方法是我需要的,但它仍在计算 1 - (共享 2-gram 的数量/唯一 2-gram 的总数):
我如何让它通过单词计算相似度?
r - 如何以编程方式查找句子中特定单词的变体?
有时,您获得的数据并不干净,并且使用的单词、拼写错误或被操纵的单词会有所不同。我们能找到与句子中的单词最相似的例子吗?
例如,如果我正在寻找单词“Awesome”,它已被用作句子中的变体,例如
r - 为什么 R stringdist 以 q-gram 距离返回 Inf,其中一个字符串比 q 短?
我知道 q-gram 距离是两个字符串的 q-gram 向量之间的绝对差之和。但是当其中一个字符串比所选的 q 短时,我看到了一些奇怪的行为。
所以对于这两个字符串,虽然qgrams
函数是正确的:
stringdist
函数返回:
而不是返回:
我错过了什么还是这是一个错误?谢谢。
stringdist 版本:0.9.4.1 和 0.9.4.2
r - 计算 2 个向量中每个单词之间的 Jaccard 相似度
我需要计算 2 个向量中每个单词之间的 Jaccard 相似度。一个字一个字。并提取最相似的词。
这是我糟糕的慢代码:
请帮我改进和美化这个大数据框的代码。
r - R中的adist以匹配模糊字符串
我有两个 Excel 表格,其中包含来自两个不同保险提供商的保险索赔数据。我需要找到在两个提供商下提出索赔的个人案例。
如果它们看起来可能是相同的名称,我希望有一些配对名称的东西,但如果它在另一张表中找不到足够相似的名称,则什么也不做。从我读过的内容来看,我认为我需要为此使用模糊字符串(也许还有 DL 距离)。我知道 R 有一个字符串距离函数 adist,但我正在努力学习如何正确使用它。
例如:
所以在这里它应该认识到 Emily S. Lo 和 Emily Lo 是同一个人,并且 Clara Smith 和 Ms.Smith 是同一个人,并给我一个包含他们的姓名和信息的列表。我该怎么做呢?
我尝试复制此人所做的事情:http: //bigdata-doctor.com/fuzzy-string-matching-survival-skill-tackle-unstructured-information-r/ 我尝试使用他们的数据,复制/粘贴他们的代码并保留得到 0x0 结果。
r - 从 R 中的数据框中删除包含相同或单词排列句子的行
我有一个带有文本的数据框
我想过滤掉所有重复的内容,以及所有具有相同单词但顺序不同的内容。这样我得到:
我知道如何用 stringdist 获得两个单词的距离。
但由于我有很长的数据框,我不想遍历所有条目。
如何过滤掉相似的术语?
谢谢乔尔格
r - 保持编辑距离内的标题
我正在使用stringdist
. 输出将输入替换为编号列表,而不是正在比较的实际字符串。这是我目前拥有的:
我希望输出如下所示,以便我可以看到编辑距离的来源。