【问题标题】:Levenshtein / edit distance for arbitrary sequences [duplicate]任意序列的Levenshtein /编辑距离[重复]
【发布时间】:2017-04-05 13:17:51
【问题描述】:

我想计算两个任意序列之间的 Levenshtein 距离。

a <- 1:100
b <- c(1, 1:100)

edit_distance(a, b) == 1

我知道adist 函数和stringdist 包,但它们仅适用于字符向量。如果序列中的符号数量很少,我可以将它们编码为字符并使用上述函数。

但通常会有大约 1000 个不同的符号。另一种选择是将它们编码为 Unicode 字符(adist 适用于它们:adist("\U00001", "\U00001\U00002")),但我不知道该怎么做。

【问题讨论】:

  • 也许jmotif 包值得一看。不确定它是否正是您正在寻找的,但有一些重叠。

标签: r unicode levenshtein-distance


【解决方案1】:

您可以使用 intToUtf8 将整数映射到 Unicode 字符:

a2 <- intToUtf8(a)
b2 <- intToUtf8(b)

adist(a2, b2)
#      [,1]
# [1,]    1

【讨论】: