R에서 levenshtein 거리를 계산하는 방법(예제 포함)


두 문자열 사이의 Levenshtein 거리는 한 단어를 다른 단어로 변환하는 데 필요한 단일 문자 변경의 최소 수입니다.

“수정”이라는 단어에는 대체, 삽입 및 삭제가 포함됩니다.

예를 들어 다음과 같은 두 단어가 있다고 가정해 보겠습니다.

  • 파티
  • 공원

두 단어 사이의 Levenshtein 거리(즉, 한 단어를 다른 단어로 변환하기 위해 변경해야 하는 변경 수)는 2 입니다.

Levenshtein 거리의 예

실제로 Levenshtein 거리는 퍼지 문자열 일치, 철자 검사, 자연어 처리 등 다양한 응용 분야에서 사용됩니다.

이 튜토리얼에서는 R에서 stringdist 패키지의 stringdist() 함수를 사용하여 R에서 문자열 사이의 Levenshtein 거리를 계산하는 방법을 설명합니다.

이 함수는 다음 기본 구문을 사용합니다.

 #load stringdist package
library(stringdist)

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

이 기능은 다양한 거리 측정값을 계산할 수 있습니다. method = “lv”를 지정함으로써 함수에 Levenshtein 거리를 계산하도록 지시합니다.

예시 1: 두 문자열 사이의 Levenshtein 거리

다음 코드는 stringdist() 함수를 사용하여 두 문자열 “party”와 “park” 사이의 Levenshtein 거리를 계산하는 방법을 보여줍니다.

 #load stringdist package
library(stringdist)

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

[1] 2

Levenshtein 거리는 2 입니다.

예 2: 두 벡터 사이의 Levenshtein 거리

다음 코드는 두 개의 서로 다른 벡터에 있는 문자열의 각 쌍별 조합 간의 Levenshtein 거리를 계산하는 방법을 보여줍니다.

 #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

결과를 해석하는 방법은 다음과 같습니다.

  • “Mavs”와 “Rockets” 사이의 Levenshtein 거리는 6 입니다.
  • “Spurs”와 “Pacers” 사이의 Levenshtein 거리는 4 입니다.
  • “Lakers”와 “Warriors” 사이의 Levenshtein 거리는 5 입니다.
  • “Cavs”와 “Celtics” 사이의 Levenshtein 거리는 5 입니다.

예시 3: 데이터 프레임의 열 간 Levenshtein 거리

다음 코드는 데이터 프레임의 서로 다른 두 열에 있는 각 문자열 쌍 조합 사이의 Levenshtein 거리를 계산하는 방법을 보여줍니다.

 #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

그런 다음 원하는 경우 Levenshtein 거리를 데이터 프레임의 새 열로 추가할 수 있습니다.

 #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에서 맨해튼까지의 거리를 계산하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다