Edit distance
-
Upload
brennan-howell -
Category
Documents
-
view
87 -
download
7
description
Transcript of Edit distance
Edit distance
Beginning of Edit Distance
Levenshtein distance 는 러시아 과학자인 Vladimir Levenshtein 가 1965 년에 고안하여 그렇게 이름이 지어졌다 .
Levenshtein 이란 단어가 쓰거나 읽기 힘들기 때문에 종종 edit distance 라고도 불린다 .
What is Edit Distance?
"edit distance between two strings of characters is the number of operations re-quired to transform one of them into the other."
두 문자열간의 edit distance 는 하나의 문자열을 다른 하나의 문자열로 변환하기 위해 요구되어지는 연산의 수이다 .
[wikipedia 발췌 ]
String Operation
변환 , 삽입 , 삭제( 그냥 복사하는 것은 0
번의 연산 )
String Operation ex.
1. abc abd : c 를 d 로 변환 (1 번 연산 : 거리 1)
2. park spake :
[ 방법 1] s 를 삽입 r 을 k 로 변환 k 를 e 로 변환 (3 번 연산 : 거리 3)
- p a r ks p a k e
[ 방법 2] p 를 s 로 변환 a 를 p 로 변환 r 를 p 로 변환 e 를 삽입 (4 번 연산 : 거리 4)
p a r k -s p a k e
최적의 거리는 3
Algorithm Process[1]
<1>s 의 문자열 길이를 n 에 넣는다 .t 의 문자열의 길이를 m 에 넣는다 .만약 n = 0 이라면 , m 을 리턴하고 종료한다 .만약 m = 0 이라면 , n 을 리턴하고 종료한다 .0..m 행과 , 0..n 열로 이루어진 행열을 만든다 .
Algorithm Process[2]
<2>첫번째 행인 0..n 을 초기화 한다 .첫번째 열인 0..m 을 초기화 한다 .<3>s 의 각 문자 (i 는 1 부터 n 까지 ) 를 검사한다 .<4>t 의 각 문자 (j 는 1 부터 m 까지 ) 를 검사한다 .
Algorithm Process[3]
<5>s[i] 와 t[j] 가 같다면 , 변경하기 위한 비용은 0 이 된다 .s[i] 와 t[j] 가 같지 않다면 , 비용은 1 이 된다 .<6>행열의 셀 d[i,j] 에 다음의 것들 중 가장 작은 값을 넣는다 .a. 바로 위의 셀이 더하기 1 이 되는 경우 : d[i-1, j] + 1b. 바로 왼쪽 셀이 더하기 일이 되는 경우 : d[i,j-1] + 1c. 대각선으로 연속적인 , 바로 왼 , 위쪽 셀의 비용 : d[i-1,j-1] + cost<7>(3, 4, 5, 6) 단계를 반복하여 완료되면 , d[n, m] 셀에 있는 것이 distance 가 된다 .
Edit Distance Matrix
DST String
SRC
String
c(i-1, j-1)
c(i-1, j)
c(i, j-1) c(i,j) edit dis-tance
삽입
복사 / 변환
src(i) 와 dst(j) 가 같으면 초록색 칸 값 ,
다르면 초록 , 빨강 , 주황 칸 값 중 가장 작은 값 +1
삭제
Edit Distance Matrix< park spake >
(dst) s p a k e
(src) 0 1 2 3 4 5
p 1 1 1 2 3 4
a 2 2 2 1 2 3
r 3 3 3 2 2 3
k 4 4 4 3 3 3
S 삽입 (연산 1) P 복사
(연산 1)
A 복사(연산 1)
R k 변환( 연산 2)
K E 변환( 연산 3)
Edit distance 는 3
Major Application Field
- 철자 검사- 음성 인식- DNA 분석- 표절여부 검사
How do We Use Edit Dis-tance?
사전 DB 와 사용자가 입력한 단어의 비슷한 정도를 알아내기 위해 edit distance 를 사용 .
[Source]
http://danamoni.tistory.com/entry/Edit-Distance-Edit-Operations-using-Dynamic-Programming
http://people.cs.umass.edu/~mccallum/courses/cl2006/lect4-stredit.pdf
http://progh2.tistory.com/195