SlideShare a Scribd company logo
1 of 40
정보검색                  제5장.
                                        사전파일
INFORMATION RETRIEVAL




   강의: 정창용 (timothy97@gmail.com)
     http://www.facebook.com/hhuIR
            Korea Maritime University
                   Navis Control Inc.
                                               1
OVERVIEW

 탐색을 위한 사전파일의 구조
 용어절단 검색을 위한 색인구조
  용어열 색인
  B-트리 색인
  문자 n-그램 색인
 철자교정을 위한 색인
    편집거리
    문자 n-그램 기법
    노이즈 채널 모델
    단어 n-그램 기법
    최장 공통길이 기법
    입말표기 수정
    검색시스템에서 오타교정 구현방법

                           2
OUTLINE

 탐색을 위한 사전파일의 구조
 용어절단 검색을 위한 색인구조
  용어열 색인
  B-트리 색인
  문자 n-그램 색인
 철자교정을 위한 색인
    편집거리
    문자 n-그램 기법
    노이즈 채널 모델
    단어 n-그램 기법
    최장 공통길이 기법
    입말표기 수정
    검색시스템에서 오타교정 구현방법

                          3
탐색을 위한 사전파일의 구조

 역색인파일(색인어) 저장 방법
  Hashing
      색인어의 저장위치(주소)를 해싱공식으로 계산
      충돌(collisions) 문제: 서로 다른 색인어를 같은 위치 값으로 계산
      용어절단 검색 불가
      색인어가 자주 갱신되는 경우 유용 (크기 한정적)
      웹과 같이 사전파일이 지속적으로 증가하는 경우 불리
  Sequential
      색인어를 순차적으로 저장
      용어절단 검색 가능
      레코드 추가, 삭제 시 전체 파일을 갱신해야 함
      Tree 구조 사용 (Binar y Tree, B-Tree)




                                                    4
탐색을 위한 사전파일의 구조   – CO N T.




                            B-tree
Binary tree




                                     5
OUTLINE

 탐색을 위한 사전파일의 구조
 용어절단 검색을 위한 색인구조
  용어열 색인
  B-트리 색인
  문자 n-그램 색인
 철자교정을 위한 색인
    편집거리
    문자 n-그램 기법
    노이즈 채널 모델
    단어 n-그램 기법
    최장 공통길이 기법
    입말표기 수정
    검색시스템에서 오타교정 구현방법

                          6
용어절단 검색을 위한 색인구조

 용어절단
  질의용어의 접미(어미), 접두, 중간부분을 생략하여 탐색
  우측절단, 좌측절단, 중간절단, 양측절단
  철자 생략 기호(*)로 표시


 용어절단 방법
  용어열 색인
  n-그램 색인
  B-tree 색인




                                     7
OUTLINE

 탐색을 위한 사전파일의 구조
 용어절단 검색을 위한 색인구조
  용어열 색인
  B-트리 색인
  문자 n-그램 색인
 철자교정을 위한 색인
    편집거리
    문자 n-그램 기법
    노이즈 채널 모델
    단어 n-그램 기법
    최장 공통길이 기법
    입말표기 수정
    검색시스템에서 오타교정 구현방법

                          8
용어열 색인(Permuterm Index)

 색인어의 끝을 알리는 고유의 문자($)를 첨가
 앞 문자를 순서대로 하나씩 뒤로 돌려가며 색인어 생성
  (문자 수 + 1)개
    문헌1           문헌2         문헌3         문헌4         문헌5
   enzyme        enzymes    coenzyme    dienzyme    CoQZyme
   enzyme$       enzymes$   coenzyme$   dienzyme$   coqzyme$
   nzyme$e       nzymes$e   oenzyme$c   ienzyme$d   oqzyme$c
   zyme$en       zymes$en   enzyme$co   enzyme$di   qzyme$co
   yme$enz       ymes$enz   nzyme$coe   nzyme$die   zyme$coq
   me$enzy       mes$enzy   zyme$coen   zyme$dien   yme$coqz
   e$enzym       es$enzym   yme$coenz   yme$dienz   me$coqzy
   $enzyme       s$enzyme   me$coenzy   me$dienzy   e$coqzym
                 $enzymes   e$coenzym   e$dienzym   $coqzyme
                            $coenzyme   $dienzyme




                                                               9
용어열 색인   – C O N T.


            입력 질의      실행 질의      검색 문헌

            enzyme*    $enzyme*     1, 2

            *enzyme    enzyme$*    1, 3, 4

            co*zyme    zyme$co*     3, 5

            *enzyme*   enzyme*    1, 2, 3, 4




                                           10
OUTLINE

 탐색을 위한 사전파일의 구조
 용어절단 검색을 위한 색인구조
  용어열 색인
  B-트리 색인
  문자 n-그램 색인
 철자교정을 위한 색인
    편집거리
    문자 n-그램 기법
    노이즈 채널 모델
    단어 n-그램 기법
    최장 공통길이 기법
    입말표기 수정
    검색시스템에서 오타교정 구현방법

                          11
B-Tree 색인

 용어절단 검색(wildcard quer y)
  후방 절단 질의 : B-Tree 사용
  전방 절단 질의 : Reverse B-Tree 사용
  일반화된 절단 질의 : 후방 & 전방 절단 질의 함께 사용




                                      12
OUTLINE

 탐색을 위한 사전파일의 구조
 용어절단 검색을 위한 색인구조
  용어열 색인
  B-트리 색인
  문자 n-그램 색인
 철자교정을 위한 색인
    편집거리
    문자 n-그램 기법
    노이즈 채널 모델
    단어 n-그램 기법
    최장 공통길이 기법
    입말표기 수정
    검색시스템에서 오타교정 구현방법

                          13
문자 n-그램 색인

 색인어를 n개의 문자로 나누어서 색인
 예) water
  2-gram(bi-gram) : $w, wa, at, te, er, r$
  3-gram(tri-gram) : $$w, $wa, wat, ate, ter, er$, r$$

         용어          용어번호                        3-gram 색인어

        creative        1     $cr, cre, rea, eat, ati, tiv, ive, ve$

        reactive        2     $re, rea, eac, act, cti, tiv, ive, ve$

         retrial        3     $re, ret, etr, tri, ria, ial, al$

        retrieve        4     $re, ret, etr, tri, rie, iev, eve, ve$

        retrieval       5     $re, ret, etr, tri, rie, iev, eva, val, al$




                                                                            14
문자 n-그램 색인   – C O N T.



 3-그램 사전파일




                                  15
문자 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
문자 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
문자 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
OUTLINE

 탐색을 위한 사전파일의 구조
 용어절단 검색을 위한 색인구조
  용어열 색인
  B-트리 색인
  문자 n-그램 색인
 철자교정을 위한 색인
    편집거리
    문자 n-그램 기법
    노이즈 채널 모델
    단어 n-그램 기법
    최장 공통길이 기법
    입말표기 수정
    검색시스템에서 오타교정 구현방법

                          19
철자교정을 위한 색인

 의사소통에서의 오류범주
    어휘적(lexical) 오류
    문법적(syntactic) 오류
    의미적(semantic) 오류
    문맥상(contextual) 오류
 오류 발생원인
  타이핑 실수(mistyping)
  발음의 실수(phonetic error)
  지적인지 부족

 ⇒ 철자교정(spell checker) 필요




                            20
철자교정을 위한 색인

 일반적인 철자교정 알고리즘
  가장 가까이 있는 것(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
OUTLINE

 탐색을 위한 사전파일의 구조
 용어절단 검색을 위한 색인구조
  용어열 색인
  B-트리 색인
  문자 n-그램 색인
 철자교정을 위한 색인
    편집거리
    문자 n-그램 기법
    노이즈 채널 모델
    단어 n-그램 기법
    최장 공통길이 기법
    입말표기 수정
    검색시스템에서 오타교정 구현방법

                          22
편집거리(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
편집거리        – C O N T.



 자카드 유사도(Jaccard similarity)
                 𝑠의   문자수 − 𝑠 와 𝑡 의 최소편집길이
   𝑆𝑖𝑚 𝑠, 𝑡 =
                           𝑠 의 문자 수
                            2
   예) 𝑆𝑖𝑚 𝑐𝑎𝑠𝑡𝑒, 𝑘𝑎𝑟𝑠𝑡 =   5
 키보드 내의 위치 가중치
   편집거리(kat, lat) > 편집거리(kat, cat)
   키보드의 ‘k’ 위치가 ‘c’보다 ‘l’과 가까움




                                                 24
OUTLINE

 탐색을 위한 사전파일의 구조
 용어절단 검색을 위한 색인구조
  용어열 색인
  B-트리 색인
  문자 n-그램 색인
 철자교정을 위한 색인
    편집거리
    문자 n-그램 기법
    노이즈 채널 모델
    단어 n-그램 기법
    최장 공통길이 기법
    입말표기 수정
    검색시스템에서 오타교정 구현방법

                          25
문자 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
OUTLINE

 탐색을 위한 사전파일의 구조
 용어절단 검색을 위한 색인구조
  용어열 색인
  B-트리 색인
  문자 n-그램 색인
 철자교정을 위한 색인
    편집거리
    문자 n-그램 기법
    노이즈 채널 모델
    단어 n-그램 기법
    최장 공통길이 기법
    입말표기 수정
    검색시스템에서 오타교정 구현방법

                          27
노이즈 채널 모델

 Bayes 확률 모델을 적용
  조건부 확률
 오타 단어와 후보 단어 사이의 에러확률을 구하는 것
  e : 오타 질의어, c : 올바른 질의어
  P(c) : c를 사용하여 검색했을 확률
  P(c|e) : 오타 질의어 e가 c일 확률
                𝑃 𝑒 𝑐 𝑃(𝑐)
      𝑃 𝑐 𝑒 =
                   𝑃(𝑒)

  후보 단어 중 오타 질의어와의 P(c|e)가 최대인 단어를 선택
     arg 𝑚𝑎𝑥 𝑐 𝑃 𝑒 𝑐 𝑃(𝑐)




                                         28
OUTLINE

 탐색을 위한 사전파일의 구조
 용어절단 검색을 위한 색인구조
  용어열 색인
  B-트리 색인
  문자 n-그램 색인
 철자교정을 위한 색인
    편집거리
    문자 n-그램 기법
    노이즈 채널 모델
    단어 n-그램 기법
    최장 공통길이 기법
    입말표기 수정
    검색시스템에서 오타교정 구현방법

                          29
단어 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
단어 n-그램 기법 - Example




                       31
OUTLINE

 탐색을 위한 사전파일의 구조
 용어절단 검색을 위한 색인구조
  용어열 색인
  B-트리 색인
  문자 n-그램 색인
 철자교정을 위한 색인
    편집거리
    문자 n-그램 기법
    노이즈 채널 모델
    단어 n-그램 기법
    최장 공통길이(Longest Common Subsequence) 기법
    입말표기 수정
    검색시스템에서 오타교정 구현방법

                                              32
최장 공통길이(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
OUTLINE

 탐색을 위한 사전파일의 구조
 용어절단 검색을 위한 색인구조
  용어열 색인
  B-트리 색인
  문자 n-그램 색인
 철자교정을 위한 색인
    편집거리
    문자 n-그램 기법
    노이즈 채널 모델
    단어 n-그램 기법
    최장 공통길이(Longest Common Subsequence) 기법
    입말표기 수정
    검색시스템에서 오타교정 구현방법

                                              34
입말표기 수정

 검색어를 발음대로 입력하기 때문에 생기는 문제 수정
 서양인명, 고유명사 검색 시 주로 발생
 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
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
Phonix 코드   (by Phonix)


aeiouhwy   →   0
bp         →   1
cgjkq      →   2
dt         →   3
l          →   4
mn         →   5
r          →   6
fv         →   7
sxz        →   8




                                 37
KONIX 코드            (by 김지승, 김광현, 이준호)


 영어 단어와 한글 단어를 모두 영어 발음단어로 변환하는 코드
 방법
    l, r → l
    f, p → f
    b, v → b
    초성 ㄱ, ㄲ → g
    종성 ㄱ, ㅋ →g
              (색인)       (탐색)
     retrieval → litlibcl ← 리트리벌




                                              38
OUTLINE

 탐색을 위한 사전파일의 구조
 용어절단 검색을 위한 색인구조
  용어열 색인
  B-트리 색인
  문자 n-그램 색인
 철자교정을 위한 색인
    편집거리
    문자 n-그램 기법
    노이즈 채널 모델
    단어 n-그램 기법
    최장 공통길이(Longest Common Subsequence) 기법
    입말표기 수정
    검색시스템에서 오타교정 구현방법

                                              39
검색시스템에서 오타교정 구현방법

 교정철자로 검색을 수행하는 방법
    오타철자(carot)와 교정철자(carrot, tarot)를 모두 검색
    오타철자가 용어사전에 없을 때만 교정철자를 검색
    오타용어로 검색된 문헌 수가 기준치보다 작을 때만 교정철자로 검색
    오타용어로 검색된 문헌 수가 기준치보다 작을 때 교정철자 검색 제시
      Do you mean: carrot?




                                           40

More Related Content

What's hot

제4장 불리언 검색
제4장 불리언 검색제4장 불리언 검색
제4장 불리언 검색
Chang-yong Jung
 

What's hot (8)

Open domain dialogue Chatbot(잡담봇 삽질기)
Open domain dialogue Chatbot(잡담봇 삽질기)Open domain dialogue Chatbot(잡담봇 삽질기)
Open domain dialogue Chatbot(잡담봇 삽질기)
 
Pycon2017 koreannlp
Pycon2017 koreannlpPycon2017 koreannlp
Pycon2017 koreannlp
 
제4장 불리언 검색
제4장 불리언 검색제4장 불리언 검색
제4장 불리언 검색
 
[Langcon2020]롯데의 딥러닝 모델은 어떻게 자기소개서를 읽고 있을까?
[Langcon2020]롯데의 딥러닝 모델은 어떻게 자기소개서를 읽고 있을까?[Langcon2020]롯데의 딥러닝 모델은 어떻게 자기소개서를 읽고 있을까?
[Langcon2020]롯데의 딥러닝 모델은 어떻게 자기소개서를 읽고 있을까?
 
파이썬을 활용한 자연어 분석 - 추가분
파이썬을 활용한 자연어 분석 - 추가분파이썬을 활용한 자연어 분석 - 추가분
파이썬을 활용한 자연어 분석 - 추가분
 
CoreDot TechSeminar 2018 - Session3 Doh Seungheon
CoreDot TechSeminar 2018 - Session3 Doh SeungheonCoreDot TechSeminar 2018 - Session3 Doh Seungheon
CoreDot TechSeminar 2018 - Session3 Doh Seungheon
 
[PyCon KR 2018] 땀내를 줄이는 Data와 Feature 다루기
[PyCon KR 2018] 땀내를 줄이는 Data와 Feature 다루기[PyCon KR 2018] 땀내를 줄이는 Data와 Feature 다루기
[PyCon KR 2018] 땀내를 줄이는 Data와 Feature 다루기
 
[싸이그램즈 2018] 텍스트 데이터 전처리로 시작하는 NLP
[싸이그램즈 2018] 텍스트 데이터 전처리로 시작하는 NLP[싸이그램즈 2018] 텍스트 데이터 전처리로 시작하는 NLP
[싸이그램즈 2018] 텍스트 데이터 전처리로 시작하는 NLP
 

Viewers also liked

제1장 정보검색소개
제1장 정보검색소개제1장 정보검색소개
제1장 정보검색소개
Chang-yong Jung
 
Financial Crime Projects
Financial Crime ProjectsFinancial Crime Projects
Financial Crime Projects
David Allsop
 

Viewers also liked (15)

제7장 비불리언 모델
제7장 비불리언 모델제7장 비불리언 모델
제7장 비불리언 모델
 
NMEA0183 Parser 실습과제
NMEA0183 Parser 실습과제NMEA0183 Parser 실습과제
NMEA0183 Parser 실습과제
 
제1장 정보검색소개
제1장 정보검색소개제1장 정보검색소개
제1장 정보검색소개
 
Campus Alcohol Life (Mobile Game)
Campus Alcohol Life (Mobile Game)Campus Alcohol Life (Mobile Game)
Campus Alcohol Life (Mobile Game)
 
제5장 NMEA Parser 구현
제5장 NMEA Parser 구현제5장 NMEA Parser 구현
제5장 NMEA Parser 구현
 
제4장 선박용 장비의 통신규약 / 시리얼통신 / NMEA0183
제4장 선박용 장비의 통신규약 / 시리얼통신 / NMEA0183제4장 선박용 장비의 통신규약 / 시리얼통신 / NMEA0183
제4장 선박용 장비의 통신규약 / 시리얼통신 / NMEA0183
 
제1장 강의소개 / 선박구조 및 기본개념
제1장 강의소개 / 선박구조 및 기본개념제1장 강의소개 / 선박구조 및 기본개념
제1장 강의소개 / 선박구조 및 기본개념
 
[16.05.11] KIST 청년 소프트웨어 프로젝트 @ 경기과학고등학교
[16.05.11] KIST 청년 소프트웨어 프로젝트 @ 경기과학고등학교[16.05.11] KIST 청년 소프트웨어 프로젝트 @ 경기과학고등학교
[16.05.11] KIST 청년 소프트웨어 프로젝트 @ 경기과학고등학교
 
Fundchange koodonation-artez 02152012
Fundchange koodonation-artez 02152012Fundchange koodonation-artez 02152012
Fundchange koodonation-artez 02152012
 
Financial Crime Projects
Financial Crime ProjectsFinancial Crime Projects
Financial Crime Projects
 
PortFolio F21 PDF
PortFolio F21 PDFPortFolio F21 PDF
PortFolio F21 PDF
 
Guide marketing project
Guide marketing projectGuide marketing project
Guide marketing project
 
TheatreTEK Project Outline
TheatreTEK Project OutlineTheatreTEK Project Outline
TheatreTEK Project Outline
 
Inovação em Serviços Públicos - Luis Vidigal (Highscore - Outubro 2016)
Inovação em Serviços Públicos - Luis Vidigal (Highscore - Outubro 2016)Inovação em Serviços Públicos - Luis Vidigal (Highscore - Outubro 2016)
Inovação em Serviços Públicos - Luis Vidigal (Highscore - Outubro 2016)
 
StUX - IA Summit 2005 - Peter Boersma
StUX - IA Summit 2005 - Peter BoersmaStUX - IA Summit 2005 - Peter Boersma
StUX - IA Summit 2005 - Peter Boersma
 

제5장 사전파일

  • 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
  • 5. 탐색을 위한 사전파일의 구조 – CO N T. B-tree Binary tree 5
  • 6. OUTLINE  탐색을 위한 사전파일의 구조  용어절단 검색을 위한 색인구조  용어열 색인  B-트리 색인  문자 n-그램 색인  철자교정을 위한 색인  편집거리  문자 n-그램 기법  노이즈 채널 모델  단어 n-그램 기법  최장 공통길이 기법  입말표기 수정  검색시스템에서 오타교정 구현방법 6
  • 7. 용어절단 검색을 위한 색인구조  용어절단  질의용어의 접미(어미), 접두, 중간부분을 생략하여 탐색  우측절단, 좌측절단, 중간절단, 양측절단  철자 생략 기호(*)로 표시  용어절단 방법  용어열 색인  n-그램 색인  B-tree 색인 7
  • 8. OUTLINE  탐색을 위한 사전파일의 구조  용어절단 검색을 위한 색인구조  용어열 색인  B-트리 색인  문자 n-그램 색인  철자교정을 위한 색인  편집거리  문자 n-그램 기법  노이즈 채널 모델  단어 n-그램 기법  최장 공통길이 기법  입말표기 수정  검색시스템에서 오타교정 구현방법 8
  • 9. 용어열 색인(Permuterm Index)  색인어의 끝을 알리는 고유의 문자($)를 첨가  앞 문자를 순서대로 하나씩 뒤로 돌려가며 색인어 생성  (문자 수 + 1)개 문헌1 문헌2 문헌3 문헌4 문헌5 enzyme enzymes coenzyme dienzyme CoQZyme enzyme$ enzymes$ coenzyme$ dienzyme$ coqzyme$ nzyme$e nzymes$e oenzyme$c ienzyme$d oqzyme$c zyme$en zymes$en enzyme$co enzyme$di qzyme$co yme$enz ymes$enz nzyme$coe nzyme$die zyme$coq me$enzy mes$enzy zyme$coen zyme$dien yme$coqz e$enzym es$enzym yme$coenz yme$dienz me$coqzy $enzyme s$enzyme me$coenzy me$dienzy e$coqzym $enzymes e$coenzym e$dienzym $coqzyme $coenzyme $dienzyme 9
  • 10. 용어열 색인 – C O N T. 입력 질의 실행 질의 검색 문헌 enzyme* $enzyme* 1, 2 *enzyme enzyme$* 1, 3, 4 co*zyme zyme$co* 3, 5 *enzyme* enzyme* 1, 2, 3, 4 10
  • 11. OUTLINE  탐색을 위한 사전파일의 구조  용어절단 검색을 위한 색인구조  용어열 색인  B-트리 색인  문자 n-그램 색인  철자교정을 위한 색인  편집거리  문자 n-그램 기법  노이즈 채널 모델  단어 n-그램 기법  최장 공통길이 기법  입말표기 수정  검색시스템에서 오타교정 구현방법 11
  • 12. B-Tree 색인  용어절단 검색(wildcard quer y)  후방 절단 질의 : B-Tree 사용  전방 절단 질의 : Reverse B-Tree 사용  일반화된 절단 질의 : 후방 & 전방 절단 질의 함께 사용 12
  • 13. OUTLINE  탐색을 위한 사전파일의 구조  용어절단 검색을 위한 색인구조  용어열 색인  B-트리 색인  문자 n-그램 색인  철자교정을 위한 색인  편집거리  문자 n-그램 기법  노이즈 채널 모델  단어 n-그램 기법  최장 공통길이 기법  입말표기 수정  검색시스템에서 오타교정 구현방법 13
  • 14. 문자 n-그램 색인  색인어를 n개의 문자로 나누어서 색인  예) water  2-gram(bi-gram) : $w, wa, at, te, er, r$  3-gram(tri-gram) : $$w, $wa, wat, ate, ter, er$, r$$ 용어 용어번호 3-gram 색인어 creative 1 $cr, cre, rea, eat, ati, tiv, ive, ve$ reactive 2 $re, rea, eac, act, cti, tiv, ive, ve$ retrial 3 $re, ret, etr, tri, ria, ial, al$ retrieve 4 $re, ret, etr, tri, rie, iev, eve, ve$ retrieval 5 $re, ret, etr, tri, rie, iev, eva, val, al$ 14
  • 15. 문자 n-그램 색인 – C O N T.  3-그램 사전파일 15
  • 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
  • 20. 철자교정을 위한 색인  의사소통에서의 오류범주  어휘적(lexical) 오류  문법적(syntactic) 오류  의미적(semantic) 오류  문맥상(contextual) 오류  오류 발생원인  타이핑 실수(mistyping)  발음의 실수(phonetic error)  지적인지 부족 ⇒ 철자교정(spell checker) 필요 20
  • 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
  • 31. 단어 n-그램 기법 - Example 31
  • 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