在R

时间:2017-04-22 21:14:43

标签: r levenshtein-distance

我一直在使用R中的“adist”功能,它计算两个字符串之间的Levenshtein距离。这是一个可重复的例子:

>a <- c("bonjour", "bonsoir", "good morning", "hello world")
>b <- c("maman", "bienjoue", "printemps")

>adist(a, b, counts = TRUE)

我得到的结果如下:

     [,1] [,2] [,3]
[1,]    7    3    8
[2,]    7    5    8
[3,]   10   11   12
[4,]   11   10   11

attr(,"counts")

, , ins

     [,1] [,2] [,3]
[1,]    0    1    2
[2,]    0    1    2
[3,]    0    0    1
[4,]    0    1    0

, , del

     [,1] [,2] [,3]
[1,]    2    0    0
[2,]    2    0    0
[3,]    7    4    4
[4,]    6    4    2

, , sub

     [,1] [,2] [,3]
[1,]    5    2    6
[2,]    5    4    6
[3,]    3    7    7
[4,]    5    5    9

attr(,"trafos")

     [,1]            [,2]            [,3]           
[1,] "SSSSSDD"       "MSIMMMMS"      "SSIMSSSSI"    
[2,] "SSSSSDDS"      "MSIMSMSS"      "SSIMSSSSI"    
[3,] "SSDDDMSDDDMDD" "SSSSSDMSSDDDD" "SSSSSIMSSDDDD"
[4,] "SSSSSDDDDDDD"  "SIMSSMSSDDDD"  "SSSSSSSSSDDD"

在单元格[4,1]中,您可以看到它执行了6次删除和5次替换以及0次插入,但是,如果您查看此单元格的“trafos”属性,它将显示5次S和7次当距离为11时,D总计12次编辑(它增加了额外的D)。

这是我们计算“hello world”和“maman”之间的Levenshtein距离的时候。

如果我将“adist”直接应用于这两个而不是两个向量,我会得到以下内容:

>adist("hello world","maman",counts = TRUE)

     [,1]
[1,]   11

attr(,"counts")

, , ins

     [,1]
[1,]    0

, , del

     [,1]
[1,]    6

, , sub

     [,1]
[1,]    5

attr(,"trafos")

     [,1]         
[1,] "SSSSSDDDDDD" 

在这种情况下似乎正确。

将“adist”应用于两个字符串向量并将其应用于两个对象(两个字符串)之间的结果有何不同?

0 个答案:

没有答案