1. 정보검색 제5장.
사전파일
INFORMATION RETRIEVAL
강의: 정창용 (timothy97@gmail.com)
http://www.facebook.com/hhuIR
Korea Maritime University
Navis Control Inc.
1
2. OVERVIEW
탐색을 위한 사전파일의 구조
용어절단 검색을 위한 색인구조
용어열 색인
B-트리 색인
문자 n-그램 색인
철자교정을 위한 색인
편집거리
문자 n-그램 기법
노이즈 채널 모델
단어 n-그램 기법
최장 공통길이 기법
입말표기 수정
검색시스템에서 오타교정 구현방법
2
3. OUTLINE
탐색을 위한 사전파일의 구조
용어절단 검색을 위한 색인구조
용어열 색인
B-트리 색인
문자 n-그램 색인
철자교정을 위한 색인
편집거리
문자 n-그램 기법
노이즈 채널 모델
단어 n-그램 기법
최장 공통길이 기법
입말표기 수정
검색시스템에서 오타교정 구현방법
3
4. 탐색을 위한 사전파일의 구조
역색인파일(색인어) 저장 방법
Hashing
색인어의 저장위치(주소)를 해싱공식으로 계산
충돌(collisions) 문제: 서로 다른 색인어를 같은 위치 값으로 계산
용어절단 검색 불가
색인어가 자주 갱신되는 경우 유용 (크기 한정적)
웹과 같이 사전파일이 지속적으로 증가하는 경우 불리
Sequential
색인어를 순차적으로 저장
용어절단 검색 가능
레코드 추가, 삭제 시 전체 파일을 갱신해야 함
Tree 구조 사용 (Binar y Tree, B-Tree)
4
16. 문자 n-그램 색인 – C O N T.
retrieve 검색
질의어를 n-그램으로 변환 후 AND 조합 검색
$re AND ret AND etr AND tri AND rie AND iev AND eve AND ve$
우측절단 용어 retriev? 검색
$re AND ret AND etr AND tri AND rie AND iev
좌측절단 용어 ?tive 검색
tiv AND ive AND ve$
16
17. 문자 n-그램 색인 – C O N T.
n-그램 색인의 장점
언어학적 처리(형태소분석, 스테밍)가 필요 없음
띄어쓰기가 없는 중국어, 일본어 색인에 유용
특정 언어의 문법에 독립적이기 때문에 다중언어 처리에 적합
한글 복합명사 띄어쓰기 문제 해결
정보검색 : $정, 정보, 보검, 검색, 색$
정보 검색 : $정, 정보, 보$, $검, 검색, 색$
질의어 철자 오류 시에도 검색 가능 (유사도 이용)
색인어 creative ▶ $cr, cre, rea, eat, ati, tiv, ive, ve$ (2/13)
reactive ▶ $re, rea, eac, act, cti, tiv, ive, ve$ (3/12)
retrial ▶ $re, ret, etr, tri, ria, ial, al$ (4/10)
retrieve ▶ $re, ret, etr, tri, rie, iev, eve, ve$ (5/10)
오타단어 retrive ▶ $re, ret, etr, tri, riv, ive, ve$
17
18. 문자 n-그램 색인 – C O N T.
용어절단 검색 가능
용어절단 질의어 변환된 탐색식 불리언 연산 검색된 단어
ret* $re AND ret {2,3,4} AND {3,4} retrial, retrieve
*tive tiv AND ive AND ve $ {1,2} AND {1,2} AND {1,2,4} creative, reactive
re*ive $re AND ive AND ve$ {2,3,4} AND {1,2} AND {1,2,4} reactive
n-그램 색인의 단점
검색시간 비효율적
n-그램 색인어파일을 검색한 후 역색인파일을 검색해야 함
용어열 색인보다
색인의 크기는 1/3
탐색시간(CPU)은 15배 이상 소요 (Zobel and Dart 1995)
18
19. OUTLINE
탐색을 위한 사전파일의 구조
용어절단 검색을 위한 색인구조
용어열 색인
B-트리 색인
문자 n-그램 색인
철자교정을 위한 색인
편집거리
문자 n-그램 기법
노이즈 채널 모델
단어 n-그램 기법
최장 공통길이 기법
입말표기 수정
검색시스템에서 오타교정 구현방법
19
21. 철자교정을 위한 색인
일반적인 철자교정 알고리즘
가장 가까이 있는 것(nearest)을 선정
유사도가 같은 교정철자가 둘 이상일 때, 사용빈도 높은 것을 선택
오타 질의어 : grnt
grunt : $g, gr, ru, un, nt, t$
grant : $g, gr, ra, an, nt, t$
⇒ 유사도가 동일하기 때문에 시스템에 자주 사용된 단어를 선택
철자교정 기법
문맥 독립적 교정(isolated-term correction)
편집거리, 문자 n-그램, 입말 표기 수정(soundex), 노이즈 채널 모델
문맥 의존 교정(context-sensitive correction)
단어 n-그램, 최장공통길이 기법
21
22. OUTLINE
탐색을 위한 사전파일의 구조
용어절단 검색을 위한 색인구조
용어열 색인
B-트리 색인
문자 n-그램 색인
철자교정을 위한 색인
편집거리
문자 n-그램 기법
노이즈 채널 모델
단어 n-그램 기법
최장 공통길이 기법
입말표기 수정
검색시스템에서 오타교정 구현방법
22
23. 편집거리(Edit Distance)
1965년 Levenshtein에 의해 소개
편집거리(edit distance)
한 단어를 다른 단어로 변환하는데 필요한 최소한의 편집연산 수
편집연산의 종류: 삽입(insert), 삭제(omission), 치환(substitution)
예) caste → karst
방법1 (편집거리: 3) 방법2 (편집거리: 4)
caste karst 편집연산 caste karst 편집연산
caste k 교체 c – k caste k 교체 c – k
caste ka caste ka
caste kar 삽입 r caste kar 교체 s – r
caste kars caste kars 교체 t – s
caste karst caste karst 교체 e – t
caste 삭제 e
23
24. 편집거리 – C O N T.
자카드 유사도(Jaccard similarity)
𝑠의 문자수 − 𝑠 와 𝑡 의 최소편집길이
𝑆𝑖𝑚 𝑠, 𝑡 =
𝑠 의 문자 수
2
예) 𝑆𝑖𝑚 𝑐𝑎𝑠𝑡𝑒, 𝑘𝑎𝑟𝑠𝑡 = 5
키보드 내의 위치 가중치
편집거리(kat, lat) > 편집거리(kat, cat)
키보드의 ‘k’ 위치가 ‘c’보다 ‘l’과 가까움
24
25. OUTLINE
탐색을 위한 사전파일의 구조
용어절단 검색을 위한 색인구조
용어열 색인
B-트리 색인
문자 n-그램 색인
철자교정을 위한 색인
편집거리
문자 n-그램 기법
노이즈 채널 모델
단어 n-그램 기법
최장 공통길이 기법
입말표기 수정
검색시스템에서 오타교정 구현방법
25
26. 문자 n-그램 기법
n-그램으로 표시되는 두 단어의 문자열 유사도 계산
유사도가 가장 큰 단어를 수정철자로 제공
유사계수공식
𝑠∩ 𝑡
자카드 상관계수 =
𝑠∪ 𝑡
2(𝑠∩𝑡)
다이스 상관계수 = 𝑠+ 𝑡
예) 특수문자의 추가 여부와 질의어와 색인어의 유사도 관계
질의어와 색인어 유사도
용어 2-그램
$문자 추가 $문자 비추가
질의어 carot ($c), ca, ar, ro, ot, (t$)
carrot ($c), ca, ar, rr, ro, ot, (t$) 6/7 4/5
색인어 cabot ($c), ca, ab, bo, ot, (t$) 4/8 2/6
tarot ($t), ta, ar, ro, ot, (t$) 4/8 3/5
26
27. OUTLINE
탐색을 위한 사전파일의 구조
용어절단 검색을 위한 색인구조
용어열 색인
B-트리 색인
문자 n-그램 색인
철자교정을 위한 색인
편집거리
문자 n-그램 기법
노이즈 채널 모델
단어 n-그램 기법
최장 공통길이 기법
입말표기 수정
검색시스템에서 오타교정 구현방법
27
28. 노이즈 채널 모델
Bayes 확률 모델을 적용
조건부 확률
오타 단어와 후보 단어 사이의 에러확률을 구하는 것
e : 오타 질의어, c : 올바른 질의어
P(c) : c를 사용하여 검색했을 확률
P(c|e) : 오타 질의어 e가 c일 확률
𝑃 𝑒 𝑐 𝑃(𝑐)
𝑃 𝑐 𝑒 =
𝑃(𝑒)
후보 단어 중 오타 질의어와의 P(c|e)가 최대인 단어를 선택
arg 𝑚𝑎𝑥 𝑐 𝑃 𝑒 𝑐 𝑃(𝑐)
28
29. OUTLINE
탐색을 위한 사전파일의 구조
용어절단 검색을 위한 색인구조
용어열 색인
B-트리 색인
문자 n-그램 색인
철자교정을 위한 색인
편집거리
문자 n-그램 기법
노이즈 채널 모델
단어 n-그램 기법
최장 공통길이 기법
입말표기 수정
검색시스템에서 오타교정 구현방법
29
30. 단어 n-그램 기법
문맥의존(Context-sensitive) 철자교정 기법
2개 이상의 단어로 이루어진 어구(phrase)에 n-그램 방식 응용
Google
“flow fore Heathrow” 검색 시, “flow for Heathrow” 질의어 제안함.
2~5-그램 단어로 된 색인어 보고
File sizes : approx. 24 GB compressed (gzip’ed) text files
Numbers of tokens : 1,024,908,267,229
Numbers of sentences : 95,119,665,584
Numbers of unigrams : 13,588,391
Numbers of bigrams : 314,843,401
Numbers of trigrams : 977,069,902
Numbers of four-grams : 1,313,818,354
Numbers of five-grams : 1,176,470,663
30
32. OUTLINE
탐색을 위한 사전파일의 구조
용어절단 검색을 위한 색인구조
용어열 색인
B-트리 색인
문자 n-그램 색인
철자교정을 위한 색인
편집거리
문자 n-그램 기법
노이즈 채널 모델
단어 n-그램 기법
최장 공통길이(Longest Common Subsequence) 기법
입말표기 수정
검색시스템에서 오타교정 구현방법
32
33. 최장 공통길이(LCS) 기법
n-그램 두 문자열의 공통길이를 유사도로 사용하는 기법
출현하는 순서대로 가장 많은 글자가 공통인 경우의 수를 구함
예) ‘the sand over there’와 ‘cat sat on the mat’
→ ‘t sa o the’
→ len(LCS(s1, s2)) = 10
𝑙𝑒𝑛(𝐿𝐶𝑆 𝑠1 ,𝑠2 )
𝐿𝐶𝑆𝑅 𝐿𝐶𝑆 𝑅𝑎𝑡𝑒 = 𝑙𝑒𝑛(𝑚𝑜𝑟𝑒 𝑙𝑜𝑛𝑔𝑒𝑟 𝑠𝑡𝑟𝑖𝑛𝑔)
(Meamed 1999)
𝑙𝑒𝑛(𝐿𝐶𝑆 𝑠1 ,𝑠2 ) 2
𝑁𝐿𝐶𝑆1 = (Islam & Inkpen 2008)
𝑙𝑒𝑛(𝑠1 ) 2 +𝑙𝑒𝑛(𝑠2 ) 2
2×𝑙𝑒𝑛(𝐿𝐶𝑆 𝑠1 ,𝑠2 )
𝑁𝐿𝐶𝑆2 = (Islam & Inkpen 2009)
𝑙𝑒𝑛 𝑠1 +𝑙𝑒𝑛(𝑠2 )
33
34. OUTLINE
탐색을 위한 사전파일의 구조
용어절단 검색을 위한 색인구조
용어열 색인
B-트리 색인
문자 n-그램 색인
철자교정을 위한 색인
편집거리
문자 n-그램 기법
노이즈 채널 모델
단어 n-그램 기법
최장 공통길이(Longest Common Subsequence) 기법
입말표기 수정
검색시스템에서 오타교정 구현방법
34
35. 입말표기 수정
검색어를 발음대로 입력하기 때문에 생기는 문제 수정
서양인명, 고유명사 검색 시 주로 발생
Google에서의 오류 건수 (Britney Spears)
488941 britney spears 옳은 입력
40134 brittany spears
36315 brittney spears
24342 britany spears
7331 britny spears
6633 briteny spears
2696 britteny spears
Soundex 검색 방법
1. soundex 색인 생성
2. 질의어를 같은 soundex 코드로 변환
3. soundex 색인에서 검색
35
36. Soundex 코드 (by Bourne & Ford)
1. 첫 문자는 알파벳으로 그대로
2. 나머지 문자들은 0~9 사이의 숫자로 변환
aeiouhwy → 0
bfpv → 1
cgjkqsxz → 2
dt → 3
l → 4
mn → 5
r → 6
3. 연속된 동일 숫자는 제거 (한 숫자만 사용)
4. 0은 제거하고 첫 4개의 문자만 사용 (첫 알파벳 + 3개 숫자)
Hermann(Herman) → h06605 → h655
Schlieder → s2040306 → s243
36
37. Phonix 코드 (by Phonix)
aeiouhwy → 0
bp → 1
cgjkq → 2
dt → 3
l → 4
mn → 5
r → 6
fv → 7
sxz → 8
37
38. KONIX 코드 (by 김지승, 김광현, 이준호)
영어 단어와 한글 단어를 모두 영어 발음단어로 변환하는 코드
방법
l, r → l
f, p → f
b, v → b
초성 ㄱ, ㄲ → g
종성 ㄱ, ㅋ →g
(색인) (탐색)
retrieval → litlibcl ← 리트리벌
38
39. OUTLINE
탐색을 위한 사전파일의 구조
용어절단 검색을 위한 색인구조
용어열 색인
B-트리 색인
문자 n-그램 색인
철자교정을 위한 색인
편집거리
문자 n-그램 기법
노이즈 채널 모델
단어 n-그램 기법
최장 공통길이(Longest Common Subsequence) 기법
입말표기 수정
검색시스템에서 오타교정 구현방법
39
40. 검색시스템에서 오타교정 구현방법
교정철자로 검색을 수행하는 방법
오타철자(carot)와 교정철자(carrot, tarot)를 모두 검색
오타철자가 용어사전에 없을 때만 교정철자를 검색
오타용어로 검색된 문헌 수가 기준치보다 작을 때만 교정철자로 검색
오타용어로 검색된 문헌 수가 기준치보다 작을 때 교정철자 검색 제시
Do you mean: carrot?
40