我正在使用字符串编辑距离(Levenshtein距离)来比较眼睛跟踪实验中的扫描路径。(现在我正在使用stringdist
R中的包)
基本上,字符串的字母是指6x4矩阵中的(凝视)位置。矩阵配置如下:
[,1] [,2] [,3] [,4]
[1,] 'a' 'g' 'm' 's'
[2,] 'b' 'h' 'n' 't'
[3,] 'c' 'i' 'o' 'u'
[4,] 'd' 'j' 'p' 'v'
[5,] 'e' 'k' 'q' 'w'
[6,] 'f' 'l' 'r' 'x'
如果我使用的基本Levenshtein距离比较字符串,进行比较a
,并g
在一个字符串给出了相同的估计为comparicona
和x
。
例如:
'abc' compared to 'agc' -> 1
'abc' compared to 'axc' -> 1
这意味着字符串相等(不相似)
我希望能够以一种在矩阵中包含邻接关系的方式来对字符串比较进行加权。例如之间的距离a
和x
应该那么之间加权为较大的a
和g
。
一种方法是计算矩阵中从一个字母到另一个字母的“行走”(水平和垂直步长),然后除以最大“行走”距离(即从a
到x
)。例如,从a
到的“步行”距离g
将为1,从a
到的“步行”距离将为x
8,分别导致权重为1/8和1。
有没有办法实现这一点(在R或python中)?
您需要一个Wagner-Fisher算法的版本,该算法在其内部循环中使用非单位成本。即,通常的算法具有+1
,使用+del_cost(a[i])
等等,并定义del_cost
,ins_cost
并且sub_cost
作为带有一个或两个符号的函数(可能只是表查找)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句