我在R中使用记录链接包中的compare.linkage方法来比较2组字符串的相似性。默认的字符串比较方法是jarowinkler,其3种默认权重设置为1/3、1/3和1/3。
我想覆盖默认的权重,比如4/9,4/9和1/9。我怎么做呢?提前谢谢。
默认脚本是:
rpairs <- compare.linkage(StringSet1, StringSet2, strcmp = TRUE, strcmpfun = jarowinkler)发布于 2015-07-02 08:24:28
您必须创建自己的比较函数,它比较两个字符串。在这个函数中,您可以调用jarowinkler。最简单的方法是创建一个闭锁
jw <- function(W_1, W_2, W_3) {
function(str1, str2) {
jarowinkler(str1, str2, W_1, W_2, W_3)
}
}这是一个传递要使用的权重参数的函数。此函数返回可以在compare.linkage调用中使用的比较函数:
rpairs <- compare.linkage(StringSet1, StringSet2,
strcmp = TRUE, strcmpfun = jw(4/9, 4/9, 1/9))Jaro算法计算匹配(使用一定带宽) m的字符数。对于两个字符串john和johan,有4个字符匹配(j、o、h和n)。只接受选定的字符:
john
jonh然后,它会计算转出t的数量。在这种情况下,有一个换位( h和n是交换的)。
Jaro的相似性是由以下方面提供的:
1/3 * (w1 * m/l1 + w2 * m/l2 + w3 * (m-t)/m)) 用l1和l2表示两个字符串的长度。对于权重都等于1/3的情况,这将导致0到1之间的分数(1=perfect匹配)。
Jaro度量为字符串开头匹配的字符添加了一个“奖励”,因为开头的错误通常较少(该度量是为名称创建的)。有关更多信息,请参见例如M.P.J . van der Loo (2014),用于近似字符串匹配的字符串包。
https://stackoverflow.com/questions/31177913
复制相似问题