gpt4 book ai didi

r - 如何在 adist 和 agrep 函数中设置成本参数?

转载 作者:行者123 更新时间:2023-12-04 10:07:37 29 4
gpt4 key购买 nike

我需要一些帮助来理解这些函数的参数。我从帮助中拿了例子。

## To see the transformation counts for the Levenshtein distance:
drop(attr(adist("kitten", "sitting", counts = TRUE), "counts"))
# ins del sub
# 1 0 2

ins,代表插入; del 用于删除;和 sub 替换。

## To see the transformation sequences:
attr(adist(c("kitten", "sitting"), counts = TRUE), "trafos")
# [,1] [,2]
# [1,] "MMMMMM" "SMMMSMI"
# [2,] "SMMMSMD" "MMMMMMM"

由此不难看出,在比较字符串一和字符串二时,发现SMMMSMI; 2 次换人和 1 次插入,总共距离应为 3。

adist("kitten", "sitting", costs = list(ins=1, del=0, sub=1), partial = F)
# [,1]
# [1,] 3

这是我不明白的,为什么当我将插入成本设置为零时,总距离的结果为零。由于替换次数,我预计是 2。

adist("kitten", "sitting", costs = list(ins=0, del=0, sub=1), partial = F)
# [,1]
# [1,] 0

非常感谢。

最佳答案

如果您在指定每个操作的成本的同时查看实际计数,这将更容易解释:

drop(attr(adist("kitten", "sitting", costs = list(ins=0, del=0, sub=1), 
partial = F, counts = T), "counts"))

# ins del sub
# 6 5 0

所以你看到的不是:

# ins del sub 
# 1 0 2

当您指定一组与默认值不同的成本参数时,插入、删除和替换的操作数发生了变化。这是有道理的,因为有不止一种方法可以将一个字符串转换为另一个字符串,并且根据 ?adist,与 adist 的距离是:

a generalized Levenshtein (edit) distance, giving the minimal possibly weighted number of insertions, deletions and substitutions needed to transform one string into another.

根据这个声明,应该有一个底层优化来最小化由 cost 参数加权的操作数,所以如果我们指定 insertions deletions 成本参数为零,那么它不会再使用 substitution 操作,因为前两个操作显然成本更低,并且确实使用了 6 插入和 5 删除来完成转换最终距离为零,因为这两个操作的成本为零。

关于r - 如何在 adist 和 agrep 函数中设置成本参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39430059/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com