如何计算r中的编辑距离(附示例)


两个字符串之间的编辑距离是将一个单词转换为另一个单词所需的最小单字符更改次数。

“修改”一词包括替换、插入和删除。

例如,假设我们有以下两个单词:

  • 参加派对
  • 公园

两个单词之间的编辑距离(即将一个单词转换为另一个单词所需的更改数量)将为2

编辑距离示例

在实践中,编辑距离用于许多不同的应用,包括模糊字符串匹配、拼写检查和自然语言处理。

本教程介绍如何使用 R 中stringdist包的stringdist()函数计算 R 中字符串之间的编辑距离。

该函数使用以下基本语法:

 #load stringdist package
library(stringdist)

#calculate Levenshtein distance between two strings
stringdist(" string1 ", " string2 ", method = " lv ")

请注意,此函数可以计算许多不同的距离测量值。通过指定 method = “lv”,我们告诉函数计算编辑距离。

示例 1:两个字符串之间的编辑距离

以下代码显示如何使用stringdist()函数计算两个字符串“party”和“park”之间的编辑距离:

 #load stringdist package
library(stringdist)

#calculate Levenshtein distance between two strings
stringdist(' party ', ' park ', method = ' lv ')

[1] 2

编辑距离结果为2

示例 2:两个向量之间的编辑距离

以下代码演示了如何计算两个不同向量中字符串的每个成对组合之间的编辑距离:

 #load stringdist package
library(stringdist)

#definevectors
a <- c('Mavs', 'Spurs', 'Lakers', 'Cavs')
b <- c('Rockets', 'Pacers', 'Warriors', 'Celtics')

#calculate Levenshtein distance between two vectors
stringdist(a, b, method=' lv ')

[1] 6 4 5 5

结果解释方式如下:

  • “小牛”和“火箭”之间的编辑距离是6
  • “马刺”和“步行者”之间的编辑距离是4
  • “湖人队”和“勇士队”之间的编辑距离是5
  • “骑士队”和“凯尔特人队”之间的编辑距离是5

示例 3:数据框列之间的编辑距离

以下代码显示如何计算数据帧的两个不同列中每个字符串成对组合之间的编辑距离:

 #load stringdist package
library(stringdist)

#define data
data <- data.frame(a = c('Mavs', 'Spurs', 'Lakers', 'Cavs'),
                   b = c('Rockets', 'Pacers', 'Warriors', 'Celtics'))

#calculate Levenshtein distance
stringdist(data$a, data$b, method=' lv ')

[1] 6 4 5 5

如果需要,我们可以将编辑距离添加为数据框中的新列:

 #save Levenshtein distance as vector
lev <- stringdist(data$a, data$b, method=' lv ')

#append Levenshtein distance as new column
data$lev <- lev

#view data frame
data

       ab lev
1 Mavs Rockets 6
2 Spurs Pacers 4
3 Lakers Warriors 5
4 Cavs Celtics 5

其他资源

如何计算R中的汉明距离
如何计算R中的欧几里德距离
如何用R计算到曼哈顿的距离

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注