当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R adist 近似弦距


R语言 adist 位于 utils 包(package)。

说明

计算字符向量之间的近似字符串距离。该距离是广义的 Levenshtein(编辑)距离,给出将一个字符串转换为另一个字符串所需的插入、删除和替换的最小可能加权数量。

用法

adist(x, y = NULL, costs = NULL, counts = FALSE, fixed = TRUE,
      partial = !fixed, ignore.case = FALSE, useBytes = FALSE)

参数

x

一个字符向量。不支持Long vectors

y

字符向量,或 NULL (默认)指示将 x 视为 y

costs

名称部分匹配 ‘ 的数字向量或列表⁠插入⁠', '⁠删除⁠' 和 '⁠替代品⁠’ 给出计算 Levenshtein 距离的相应成本,或者NULL(默认)指示对所有三种可能的转换使用单位成本。

counts

一个逻辑,指示是否选择性地返回转换计数(插入、删除和替换的数量)作为返回值的 "counts" 属性。

fixed

一个合乎逻辑的。如果TRUE(默认),则x 元素用作字符串文字。否则,它们被视为正则表达式,并隐含 partial = TRUE (对应于 agrepfixed = FALSE 使用的近似字符串距离)。

partial

一个逻辑,指示转换后的 x 元素是否必须与完整的 y 元素完全匹配,或者仅匹配这些元素的子字符串。后者对应于 agrep 使用的近似字符串距离(默认情况下)。

ignore.case

一个合乎逻辑的。如果是 TRUE ,则在计算距离时忽略大小写。

useBytes

一个合乎逻辑的。如果TRUE距离计算是逐字节而不是逐字符完成的。

细节

两个字符串之间的(广义)编辑(或编辑)距离st是转换所需的插入、删除和替换的最小可能加权数量s进入t(以便变换完全匹配t)。该距离的计算公式为partial = FALSE,目前使用动态规划算法(参见,例如,https://en.wikipedia.org/wiki/Levenshtein_distance) 具有空间和时间复杂度 ,其中 的长度是st, 分别。另外计算转换序列和计数是 .

广义编辑距离也可用于近似(模糊)字符串匹配,在这种情况下,可以找到t与图案的距离最小s(可以将其视为正则表达式,在这种情况下,适用使用最左边和最长匹配的原则),请参见,例如https://en.wikipedia.org/wiki/Approximate_string_matching。该距离的计算公式为partial = TRUE使用 '⁠tre⁠” 作者:Ville Laurikari(https://github.com/laurikari/tre) 并对应于所使用的距离agrep。在这种情况下,给定的成本值被强制为整数。

请注意,插入和删除的成本可能不同,在这种情况下,插入和删除之间的距离st之间的距离可能不同ts.

具有 xy 元素的近似字符串距离的矩阵,其行和列分别对应于 xy

如果countsTRUE,转换计数返回为"counts"该矩阵的属性,作为一个 3 维数组,其维度对应于以下元素x, 的元素y,以及转换类型(插入、删除和替换)。另外,如果partial = FALSE,变换序列返回为"trafos"返回值的属性,作为带有元素‘的字符串⁠M⁠', '⁠我⁠', '⁠D⁠' 和 '⁠S⁠’分别表示匹配、插入、删除和替换。如果partial = TRUE,匹配子字符串的偏移量(第一个和最后一个元素的位置)作为"offsets"返回值的属性(两个偏移量 如果不匹配)。

例子

## Cf. https://en.wikipedia.org/wiki/Levenshtein_distance
adist("kitten", "sitting")
## To see the transformation counts for the Levenshtein distance:
drop(attr(adist("kitten", "sitting", counts = TRUE), "counts"))
## To see the transformation sequences:
attr(adist(c("kitten", "sitting"), counts = TRUE), "trafos")

## Cf. the examples for agrep:
adist("lasy", "1 lazy 2")
## For a "partial approximate match" (as used for agrep):
adist("lasy", "1 lazy 2", partial = TRUE)

也可以看看

agrep 使用广义编辑距离进行近似字符串匹配(模糊匹配)。

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Approximate String Distances。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。