SlideShare una empresa de Scribd logo
1 de 7
Descargar para leer sin conexión
한글 검색 질의어 오타 패턴 분석과 사용자 로그를 이용한

                              질의어 오타 교정 시스템 구축
                                                          O
                                     전희원, 다니엘 흥 임해창
                  heewon@yahoo-inc.com, dhuang@yahoo-inc.com, rim@nlp.korea.ac.kr

      Analyzing of Hangul Search Query Spelling Error Patterns and Developing Query

                       Spelling Correction System Based on User Logs.
                                                          O
                              Hee-Won Jeon, Daniel Huang Hae-Chang Rim
                          YST Web Search-Yahoo!, Search-Yahoo!, Korea University

                                                 요    약
          본 논문은 검색 서비스 기능 중에 빼놓을 수 없는 기능인 한글 검색 질의어(query) 교정 시스템을 ‘야
         후!’에서 구축하며 분석한 한글 오타 패턴 그리고 사용자 로그를 기반으로 설계한 질의어 교정 서비스에
         대한 설명을 하고 있다. 이 교정 서비스는 현재 ‘야후! 코리아’에 적용되어 있으며, 한글을 고려한 키스트
         로크를 기반으로 한 설계 방식 그리고 동적으로 에러모델을 구축하는 방법을 소개하고 있으며 또한 구축
         된 모델의 성능을 다른 검색 서비스와 비교한 결과를 소개한다.



    주제어: 쿼리, 질의어, Speller, Query

                                                      을 사용한 논문도 발표되기도 하였다[4]. 여기서는 각 문
1. 서론                                                 자들이 다른 문자로 교체될 확률 값을 가진 혼동행렬
 일반적인 철자 오류는 크게 두 가지 원인으로 나뉜다[1].                     (confusion matrix)을 제공하였다. 이 확률값과 함께 베이
첫 번째는 타이핑(typographical) 오류로 키보드 상의 키                 지언 노이즈 채널(Bayesian noisy channel) 모델을 사용해
위치의 유사성에 기반을 둔 오류이다1). 예를 들어 'ㅁ',                     각 단어와 후보 단어 사이의 에러 확률을 계산할 수 있
‘ㄴ’의 는 키보드 위에서 아주 가까운 위치에 위치함                         게 되었다.
                                                      [5]에서는 두 단어 쌍에서 추출한 정보를 사용해 교정거
으로서 발생 할 수 있는 타이핑 오류이다. 두 번째 오류
는 인식(cognitive) 오류로서 단어의 정확한 철자에 대한                   리 확률 모델을 구축하는 방법을 소개했다. 이들 단어
오해로 빚어지는 오류이다. 예를 들어 'ㅐ'는 ‘ㅔ’와                        쌍은 오타 단어와 정타 단어를 의미하며 이들 간의 교정
발음상 상당히 유사한데 이와 같은 발음(phonetic) 오류                    거리 연산을 추적해 이들 정보를 활용하는 방법을 사용
도 인식 오류의 한 종류로 볼 수 있다.                                했다.
오타 교정 알고리즘은 언어처리 분야에서도 상당히 많은                         일반적으로 우리가 사용하는 워드 프로세스에서의 맞춤
발전을 해온 몇 안 되는 분야 중에 하나이다. 초기 사전                       법 검사와는 다르게 검색 질의어(query)의 오타 교정은
을 기반으로 한 오타 교정 알고리즘[2]의 경우 사전에서                       기존의 사전에 의존하는 방법으로는 큰 효과를 보기 힘
발견하지 못한 단어들을 오타로 간주하여 이 단어에 대                         들다. 왜냐면 질의어 자체가 굉장히 다양한 형태를 띄고
해서 한 번의 편집거리(edit distance)에 있는 모든 후보                 있으며 이들 모두, 특히나 인터넷 신조어 모두를 아우르
들을 계산해 내 이들 중에 사전에 있는 단어들에 대해서                        는 사전을 수작업으로 구축하기란 쉬운 일이 아니기 때
교정해주는 방법을 사용했다. 그러나 이 알고리즘은 단                         문이다. 이 때문에 질의어 로그를 활용한 방법이 각광을
한 번의 교정거리를 사용함으로 인해 이 이상의 교정거                         받았다[6].      이    논문에서는    전통적인     레벤스타인
리로 인해 생기는 오타들에 대해서 효과적으로 처리하지                         (Levenshtein) 거리 연산을 사용하기 보다는 가중치를 적
못하는 단점이 있었다.                                          용한 교정 거리 연산을 사용하였고 이 각각 가중치는 사
이후에 여러 번의 교정거리 연산도 계산해 내는 문자열                         용자 로그를 분석해 사용자 경향에 따라 가중치가 가변
대 문자열 계산 알고리즘이 소개되었는데[3] 이 알고리즘                       적으로 변환이 가능하게끔 만들었다.
은 모든 삽입(insertion), 삭제(deletion), 교체(substitution)    본 논문은 야후!의 한,중 질의어 오타 교정 플랫폼에 한
연산에 대해서 고정적인 비용만을 할당하는 단점을 가지                         글 처리 관련 모듈 개발을 하면서 연구된 사항들을 기반
고 있었다. 이와 같은 단점을 보완해 고정된 교정 연산                        으로 쓰인 논문이라는 것을 미리 밝혀둔다. 이 플랫폼은
을 할당하기 보다 서로 다른 연산 비용을 할당하는 방법                        베이지언 노이즈 채널 모델을 핵심적으로 사용한 플랫폼
                                                      으로 한국어 특유의 속성(features)을 추가하여 성능향상
                                                      을 이끌어 낼 수 있었다.
1) 대한민국 표준 키보드인 두벌식 키보드를 기준으로 설명하겠다.                  앞으로 2장에서는 한국 질의어들의 특징에 대해서 살펴
보는 시간을 가져보기로 하겠다. 또한 랜덤 샘플링 된                        의어에 포함된 단어 개수로 계산했다.
질의어와 테스트를 위한 학습 데이터를 기반으로 한국어                        아래 <그림1>에서 보는 것과 같이, 1개 내지 2개의 단어
검색 서비스에서 발생된 질의어들의 여러 특징들과 오타                        를 포함하는 질의어가 한글 질의어 대부분을 차지하는
양상들을 살펴보겠다. 그리고 3장에서는 질의어 오타 교                       것을 알 수 있다.
정 시스템의 핵심 알고리즘인 노이즈 채널 모델을 설명
하고 이를 구성하는 에러모델(error model),언어모델
(language model)을 설명하겠다.
본 시스템에서는 좀 더 발전시켜 로그를 기반으로 에러
모델을 구축하는 방법을 사용하였는데, 이에 대한 설명
도 3장에서 설명하도록 하겠다. 4장에서는 전체적인 시
스템 구조를 설명하겠고 마지막 5장에서는 다른 검색 서
비스들과 성능비교 결과를 보여주도록 하겠다.

2. 한국 질의어의 특징
 이 장에서 이야기할 한국 질의어라 함은 한국에서 서비
스 되는 검색 서비스에서 사용자들이 입력하는 질의어라
고 정의하도록 하겠다. 일반적으로 대한민국 사용자들이
주로 사용하는 질의어에 대한 분석이라고 해도 큰 문제
가 없을 듯싶다. 본 논문에서는 특정 기간 동안 야후! 코
리아 검색 서비스에서 수집된 질의어들에 대해 랜덤 샘
플링을 수행해 약 백만(990,140)개의 질의어를 선정했고
이를 기반으로 데이터 분석을 했다.
질의어 중에서 공백으로 구분한 단어 개수가 15개 이상
인 질의어들은 이상치(outlier)로 판단해서 데이터에서 제
거했으며, 15개 단어 이상의 질의어들은 전체에서 1% 정                        그림1.한글/영문 질의어 길이 빈도 히스토그램
도에 불과했다.
                                                     2개 이상의 단어를 가진 질의어가 전체 질의어 집합에서
                                                     56%를 차지하는데, 단어기반 n-gram 확률 정보가 질의
2.1 질의어 분포
                                                     어 오타 교정에 어느 정도 도움을 줄 수 있다는 것을 예
 일단 질의어는 한글과 숫자가 함께 나오는 질의어까지
                                                     측할 수 있다.
한글 질의어로 분류했다. 그리고 영문 질의어 역시 영문
                                                     한국 사람들이 입력하는 영문 질의어의 길이 빈도 히스
알파벳과 숫자가 섞인 경우까지 영문 질의어로 인정했
                                                     토그램은 <그림1>과 같다. 이전 연구 논문[7]에서 영어권
다.
                                                     사용자들이 입력하는 영문 질의어 경향하고는 확연히 다

  한글       영문      한글/영     숫자      이외        총      른 경향을 보이고 있는데(이 논문에서는 80% 이상의 질
                   문 혼합                              의어가 두 단어 이상이라고 언급했다), 한국 질의어에서
 880,172 35,194    42,880   3,963   27,864 990,073   는 두 단어 이상으로 만들어진 영문 질의어는 전체의
 88.90% 3.56%      4.33%    0.40%   2.81% 100%       33%를 차지하고 있는 것을 알 수 있었다.
                  표1. 질의어 분포
                                                     2.3 한글 질의어의 오타 경향
<표1>에서 보는 바와 같이 89%의 질의어가 한글 질의어                      그럼 전체 질의어 트래픽의 약 89%를 차지하는 한글
였다. 이와 반면에 4%정도의 질의어가 영문 질의어였다.                      질의어의 오타 경향에 대해서 살펴볼 차례이다. 일단 로
‘이외’ 항목에 있는 질의어들은 앞서 나온 네 가지 종                       그에서 3천개의 오타 질의어들을 추출해 정타 정보를 입
류의 질의어 이외의 질의어들을 통칭하며, 이 카테고리                        력했고, 이들 중에서 한글 질의어 오타, 정타 쌍인 2,252
에 상당수의 URL 질의어들이 포함되어 있음을 확인 할                       개의 질의어를 기반으로 분석을 수행했다.
수 있었다.                                               수행 방법은 아래와 같다.
이와 같은 사용자 질의어 분포에 따라서 한글 질의어 오
타 교정 성능을 향상 시키는데 집중을 하는 것이 플랫폼                       1) 오타, 정타를 모두 키스트로크(keystroke)로 변환 시킨
전체 성능 향상에 큰 영향을 끼칠 수 있음을 시사하고                        다.
있다.                                                  2) 이들을 기반으로 자소 편집 거리를 계산한다.
                                                     3) 편집 거리 계산 마지막에 백트래킹 계산을 수행해 각
2.2 한글 질의어 길이                                        자소들의 추가, 삭제, 교체 연산이 어떻게 수행 되었는지
                                                     로그로 남긴다.
 이 절에서는 <표1>에서 소개한 한글 질의어들에 대해서
길이의 분포가 어떻게 되는지 살펴볼 것이다. 길이는 질
                                                     1)번의 세부 과정은 일단 문자열을 자소 문자열로 변환
시키고 이들을 키스트로크로 바꾸는 과정을 포함한다.                        <그림3>의 ‘한글 1회 편집연산 분포’에서 보는 바와
여기서 한글 문자열일 경우 같은 키스트로크라도 다른                        같이 대부분(84%)의 연산이 교체연산임을 알 수 있다.
한글 문자열을 가리킬 경우가 있으니 분류자(Divider)라                   또한 2회 이상의 편집 연산에 대한 결과도 크게 다르지
는 개념을 각 한글 음절 마지막에 추가 문자로 넣어줬                       않고 교체 연산이 가장 많은 것을 알 수 있다.
다. 예를 들어 “ㅇㅑ후”와 “야후”는 실제 키스트로                       두 파이차트에서 보는 것과 같이 교체연산이 가장 빈번
크는 같지만 분명히 다른 문자열이다. 이는 1번 과정을                      한데, 그렇다면 어떤 문자들의 교체 연산이 가장 많은지
거치면 “d~i~gn~”와 “di~gn~”로 변환된다. 따라서 위                확인해 보도록 하자.
문자열은 분류자에 대한 1회의 삭제 연산이 필요하게 된                      일단 2.1장에서 한글과 숫자가 섞여 나오는 것까지 한글
다. 물론 편집 거리 계산의 연산 비용은 모두 1로 줬다.                    질의어라고 분류 했으므로 과연 한글 자소, 숫자, 공백
하지만 백트래킹 계산 시 삭제/추가 연산이 교체 연산과                      그리고 분류자들의 빈도는 어떻게 되는지 살펴보겠다.
동일한 비용 경로를 가질 때 교체 연산에 우선순위를 두                       1800
었다. 이는 한글에서 삭제/추가 연산으로 인해 나오는 오                      1600
타는 목표하고자 하는 정타 질의어와는 문자열 길이에서                        1400

부터 확연히 차이를 둘 가능성이 많기 때문에 교체 연산                       1200
                                                     1000
에 더 우선순위를 두었으며 그럼에도 불구하고 연산 비                                                       추가
                                                      800
용은 모두 같은 1을 사용했다.                                                                   삭제
                                                      600
                                                                                    교체
                   편집 거리 비용/빈도 히스토그램                  400
        2000                                          200
        1800
        1600                                            0
        1400                                                한글 자소   분류자   숫자   공백
        1200
   빈도   1000
         800                                         그림4. 편집 거리 1인 질의어에서 문자 종류별 편집
         600
         400                                                      연산 분포
         200
                                                      500
           0
                                                      450
               1     2    3      4      5   6   7
                                                      400
                              편집거리 비용
                                                      350
                                                      300
 그림2. 한글 질의어 편집거리 비용/빈도 히스토그램                         250                           추가
                                                      200                           삭제

<그림2>에서 보다시피 편집 거리 1인 한글 오타 질의어                       150                           교체
                                                      100
들이 전체의 83%를 차지하는 것을 볼 수 있다. 게다가                        50
질의어 전체 길이와 편집 거리 비용 관계를 보기 위해                           0
상관분석을 수행한 결과 0.03642의 결과가 나왔는데 이                            한글 자소   분류자   숫자   공백

는 질의어 길이와 편집 거리 비용이 별다른 관련이 없다
는 것을 의미한다. 그렇다면 위 <그림2>에서 95%를 커버                     그림5. 편집 거리 2 이상인 질의어에서 문자 종류별
하는 2편집 거리 비용 이상의 질의어 쌍을 로그에서 추                                   편집 연산 분포
출해 에러모델을 구축하는 방안을 간단히 생각해 볼 수                       <그림4>에서 보는 바와 같이 99% 이상의 연산이 한글
있을 것이다.                                             자소 편집 연산임을 알 수 있으며 <그림5>에서 편집 거
그렇다면 대부분을 차지하는 한 번의 편집 연산을 가지                       리 2이상일 경우에는 분류자의 연산이 늘어나 있음을 알
는 질의어들이 어떤 연산들로 구성이 되어 있는지 확인                       수 있다. 이는 “ㅇㅑ후”와 같은 “야후”를 의도하는
해 보도록 하자.                                           한글 질의어들의 오타가 상당부분 존재하고 있음을 알려
                                                    주는 지표라고 생각하며 반드시 질의어 오타의 편집 거
                                                    리 연산에서 이 부분에 대해 고려되어야 함을 의미하고
                                                    있다.
                                                    지금까지 한글 질의어들이 어떤 오타 경향이 있는지 표
                                                    로 살펴봤는데, 그렇다면 가장 많은 연산인 교체 연산이
                                                    어떤 문자에서 많이 일어나는지 살펴보도록 하겠다.
                                                    아래 <그림6>를 보면 ‘ㅔ’,‘ㅐ’ 자소가 가장 오타
                                                    확률이 높은 문자임을 알 수 있다. 게다가 두 자소 상호
                                                    간의 오타가 가장 빈번하게 도출된다는 것을 <표2>로 부
                                                    터 확인할 수 있다. 사실 이 두 문자는 키보드 자간 거
                                                    리가 1로 타이핑 오류가 날 수 있는 확률이 높을 뿐만
                                                    아니라 발음도 유사한 음소로 타이핑 오류와 발음 오류
           그림3. 한글 1, 2회 편집연산 분포                    가 결합된 대표적인 오타 케이스이다.
질의어 교정에서 가장 많이 사용하는 노이즈 채널 모델
                                            은 아래의 식으로 설명이 된다.
                                                                        
                                                                           (1)
                                                                         
                                            위 식에서 v는 오타 질의어를 의미하고 w는 교정된 올
                                            바른 질의어를 의미한다. 여러 교정 질의어 후보들 중에
                                            서 위의 확률계산에서 최대값을 가지는 W를 고르는 문
                                            제로 생각할 수 있다.
                                                         arg      (2)
                                             (1)식에서 분모에 해당하는 P(v)는 모든 w질의어들에 대
                                            해서 동일하기 때문에 생략할 수 있으며 다시 (2)식과 같
        그림6. 오타 확률이 높은 문자(자소) 분포도           이 표현될 수 있다.
                                              는 사용자가 w를 의도했으나 v로 타이핑 할 확률
 입력      의도      의도입력    발음오류   타이핑오류   로 에러모델을 사용해서 계산된다. 그리고 P(w)는 언어모
 자소      자소                                 델로 계산될 수 있을 것이다.
 T(ㅆ)    t(ㅅ)     0.9875      O
 b(ㅠ)    n(ㅜ)     0.8974      O        O
                                            3.1 에러 모델(Error Model)
 o(ㅐ)    p(ㅔ)     0.8908      O        O
 E(ㄸ)    x(ㅌ)     0.8000      O              두 문자열 v, w와 관련된 확률    를 표현하는 다
 u(ㅕ)    j(ㅓ)     0.7826      O        O    른 방법은 이 확률을 v,w 두 문자열 사이의 편집거리로
 i(ㅑ)    k(ㅏ)     0.7778      O        O    표현하는 것이다.
 R(ㄲ)    z(ㅋ)     0.7647      O                                      ∝      (3)
 P(ㅖ)    p(ㅔ)     0.7647      O             전통적인 편집 거리는 추가, 삭제, 교체 연산에 대해서
 g(ㅎ)    d(ㅇ)     0.7619      O             고정된 값을 주었는데 이보다는 앞서 2장에서 조사해본
 p(ㅔ)    o(ㅐ)     0.7246      O        O    것을 기반으로 편집 거리 테이블을 만들어서 사용하는
 y(ㅛ)    h(ㅗ)     0.7143      O        O    방법을 생각해 볼 수 있을 것이다.
 v(ㅍ)    q(ㅂ)     0.6111      O
                                            문자쌍 각각의 편집 거리를 이용한 확률 획득에 대한 식
 Q(ㅃ)    v(ㅍ)     0.5714      O
                                            은 아래와 같다[8].
 c(ㅊ)    w(ㅈ)     0.5556      O
 t(ㅅ)    T(ㅆ)     0.5258      O                                     log           (4)
 z(ㅋ)    r(ㄱ)     0.5000      O              e가 의미하는 것은 삭제(c → _), 추가(_ → c ), 교체(c
 O(ㅒ)    o(ㅐ)     0.5000      O             → d)와 같은 문자대 문자의 편집연산을 의미한다. 따라
 O(ㅒ)    P(ㅖ)     0.5000      O        O    서 큰 편집확률은 값이 작은 편집거리 연산 비용을 의미
      표2.  의도 입력  상위 18개의 데이터           하게 된다.
<표2>에서 보자면 조건부 확률 값이 가장 큰 상위 18개            문자쌍에 대한 방법을 기반으로 문자열(질의어)에 대한
의 데이터 중에서 모든 확률 데이터가 발음오류로 기인               확률을 생각해 볼 수 있다.
한 데이터였으며, 그중에서 몇몇의 경우가 타이핑 오류                     ∏          ×     ×  ×     (5)
와 결합된 오타 확률임을 알 수 있었다(여기서 타이핑               양변에 로그를 취하자.
오류의 기준은 키간 거리가 1인 자소쌍으로 가정했다).                log                                                 (6)
                                              log        log        log      
3. 노이즈 채널 모델(Bayesian noisy channel)        (6)식과 (4)식을 결합하면 아래와 같은 식을 얻을 수 있
 2장의 조사 결과 한 번의 편집거리가 가장 많았으며 그             다.
리고 그 편집거리 연산중에서 가장 많은 연산은 자소의                         log              (7)
교체 연산이었다. 따라서 한글을 분석하기 위해서 한글               따라서 우리는 w,v 문자열 사이의 편집거리를 구하면 에
음절을 기본단위로 처리하는 것은 자소단위의 처리보다                러모델을 계산할 수 있을 것이다.
더 많은 정보를 요구할 것이라는 것을 예측할 수 있다.              편집 거리 테이블을 구축하는 것은 오타 교정 시스템에
본 시스템에서는 자소단위의 처리를 기본으로 하겠고 이               서 가장 중요한 작업이다. 연구 결과 편집거리 속성은
를 위해 자소를 키스트로크로 변환하는 과정을 거치겠                기계학습으로 만들어진 모델에서 가장 중요한 속성으로
다. 게다가 영어 알파벳도 표현을 해야 하는 문제가 있              사용되며 적절한 후보 정타 질의어를 후보사전으로부터
으므로 영어 알파벳은 아스키(ASCII) 테이블(0x41 ~ 0x7A)     선택하는데 핵심적인 역할을 수행한다.
영역을 사용하고 한글 키스트로크 알파벳을 위해서 유니
코드 전각문자(Fullwidth) 영역을 사용했다(0xFF21 ~        3.1.1 로그로부터 에러모델 테이블 구축
0xFF5A). 그리고 2장에서 자소음절로 입력된 질의어와             고정된 편집거리 연산 테이블 보다는 동적으로 사용자
한글음절로 입력된 질의어의 키스트로크를 차별화하기                 오타 패턴에 따라 변화가 가능한 편집거리 테이블이 필
위해 각 음절의 마지막에 분류자(~)를 추가 했다.                요했는데, 이를 위해 사용자 로그에서 질의어 재구성
(query reformulation) 데이터를 가져와 테이블을 구축하    테이블과 사용자 로그로 만들어진 에러모델 확률 테이블
는 것을 생각해 볼 수 있다[9][10].                    사이의 확률랭킹에 대해서 양의 상관관계가 있다는 것을
시스템에서 사용된 동적 편집 연산 테이블 데이터는 [8]            보여준다.
논문 결과를 기반으로 같은 세션내의 두 질의어의 평균              이 데이터들의 산점도는 아래 <그림7>과 같다.
출현 위치 정보와 편집거리를 기반으로 구축되었다.
이런 방법으로‘세션을 고려한 사용자 입력 질의어’ 데
이터를 기반으로 로그 마이닝을 수행 하였으며, 빠른 처
리를 위해 하둡(Hadoop) 클러스터를 사용하였다.
이렇게 만들어진 1억여건의 질의어, 재입력된 질의어
(reformulated query), 횟수 데이터를 이용, 두 질의어의
편집거리 연산을 추적해 오타가 나는 자소의 쌍들을 구
할 수 있었으며 이를 기반으로 자소 q가 입력되었을 때
s를 의도할 조건부 확률값을 가지는 에러모델 테이블을
구할 수 있다(    데이터가 되겠다). 여기서 q나 s는
자소나 분류자, 공백 등과 같은 문자들 뿐만 아니라 문
자 삭제, 추가를 의미하는 특별한 편집 작업을 의미할
수도 있다. 따라서 같은 방법으로 삭제, 추가 편집 작업                   그림7. <표3>의 데이터에 대한 산점도
에 대한 별도의 삭제, 추가 편집연산 테이블도 구축하였                         (x축: 랭킹1, y축:랭킹2)
다.

      입력      의도
                      랭킹1     랭킹2          3.2 언어 모델(Language Model)
      자소      자소
                                            P(w) 확률을 구하는 방법은 유니그램(unigram) 언어모델
      o(ㅐ)    p(ㅔ)      3       1
                                           을 사용했다.
      p(ㅔ)    o(ㅐ)     10       2
      T(ㅆ)    t(ㅅ)      1       3
      b(ㅠ)    n(ㅜ)      2       4                                  
                                                                    (8)
      m(ㅡ)    n(ㅜ)     40       5                                  
      t(ㅅ)    T(ㅆ)     15       6
      n(ㅜ)    m(ㅡ)     20       7
                                           위 데이터 역시 질의어 로그에서 얻을 수 있다. N은 전
      j(ㅓ)    u(ㅕ)     97       8
      P(ㅖ)    p(ㅔ)      8       9          체 질의어 단어 개수이며 C(w)는 w 질의어 단어의 출현
      n(ㅜ)    b(ㅠ)     31      10          횟수로 구할 수 있을 것이다. 물론 구현상 로그에서조차
      x(ㅌ)    e(ㄷ)     34      11          출현하지 않은 단어들에 대한 기본 확률값도 고려해야
      e(ㄷ)    x(ㅌ)     23      12          할 것이다.
      k(ㅏ)    i(ㅑ)     77      13
      R(ㄲ)    r(ㄱ)     44      14
      j(ㅓ)    k(ㅏ)     42      15          4.시스템 구조
      z(ㅋ)    r(ㄱ)     16      16
      p(ㅔ)    P(ㅖ)     80      17
      r(ㄱ)    z(ㅋ)     45      18
      u(ㅕ)    j(ㅓ)      5      19
      h(ㅗ)    y(ㅛ)     123     20

표3. 질의어 재입력을 통해 만들어진 교체 연산에 대한
  자소 오타 확률 중 상위 20개의 쌍의 랭킹 비교
(랭킹1은 사용자 편집 데이터로 만들어진 확률 랭킹, 랭킹2는
       에러모델 테이블에서 만들어진 랭킹임)

이렇게 1억여건 데이터를 이용해 구한 조건부 확률값을
검증하기 위해 에디터가 직접 편집한 질의어 오타 쌍 데
이터(2.3에서 이용한 2,252개의 데이터)를 이용한 편집거                   그림8. 시스템 개요
리 확률 테이블 데이터와 질의어 재입력을 통해 마이닝               대략적인 시스템 구조는 위 <그림8>과 같으며 각 과정
된 에러모델 테이블 랭킹의 비교를 스피어맨(Spearman)          에 대한 설명은 아래와 같다.
상관관계[11] 방법을 이용해 상관관계를 계산해 보았다.
만들어진 250여개의 확률 데이터 랭킹 비교 결과 스피어            1) 사용자 입력 질의어를 지속적으로 로깅한다.
맨 상관관계 0.507이라는 결과 값이 계산되었고 이 결과
는 사람이 편집한 질의어 쌍 데이터를 이용해 만들어진              2,3) 질의어 빈도수나 질의어 재구성을 위한 데이터를 주
기적으로 마이닝하게 된다. 마이닝된 데이터는 새 모델
빌드시 로컬 서버로 전송된다.                              ACC   FSCO    PREC RECL FPOS  SERVICE
                                              .954   .560   .570 .551  .024   G사
4) 로컬 서버에서는 실제 정타 질의어 후보 사전을 로그               .956   .554   .621 .499  .018    Y!
를 통해 구축하고 동시에 모델 학습을 위한 데이터베이                +.002  -.006 +.051 -.052 -.006
스를 구축한다. 이곳에서 에러모델과 언어모델 데이터가                           표5. G사와의 모델 퍼포먼스
생성되며, 기계학습으로 여러 문자열 속성들을 가미해                  (Y!는 본 논문을 기반으로 만들어진 모델을 의미한다)
교정에 쓰일 적절한 임계값를 계산해 낸다. 시스템에서
모델은 그라디언트 부스티드 결정트리(gradient boosted         <표5>에서 각 성능평가 방법들은 아래와 같다.
distributed decision trees)[12]를 사용하였다.
                                                           
5) 마지막으로 생성된 모델을 서비스 서버에 적용한다.                                             (9)
                                                             
                                                                    
                                                                          (10)
4)번 과정에 대한 부연 설명을 하자면, 실제 입력된 질의                             
어가 오타인지 정타인지 구분하고 이에 대해서 교정 질                                  
                                                              
의어를 선정하는 과정이 필요하다. 입력된 질의어가 정                                 
                                                                          (11)
타일 경우에는 이 질의어가 후보 사전에 존재하는 것을                                  
통해서 확인하는 방법과 후보가 될 만한 정타 후보 질의                                
                                                                          (12)
어들이 사전에 존재하지 않을 경우여야 된다. 물론 전자                                 
의 경우는 사전 조회만으로 가능하지만 두 번째 경우는                                 
                                                                          (13)
학습셋을 통한 적절한 임계값 설정이 필요할 것이다. 따                               
라서 이 과정에서 학습모델 생성이 필요하다2).
                                             위 <표5>의 결과는 모델이 가장 큰 F-Score를 내는 임계
5. 결과분석                                      값에 대해서 튜닝된 결과이다. PREC과 RECL의 증감이
 모델 빌드를 위해 학습 데이터와 테스트 데이터를 준비               거의 동일하고 FSCO의 결과는 통계적으로 유의미한 수
했다.                                          치라고 보기 힘든 -.006의 결과가 나왔다. 이 결과로 보
모델 학습과 테스트를 위해 검색 로그에서 층화 샘플링                자면 G사 퍼포먼스와 큰 차이가 없다는 것을 알 수 있
(stratified sampling) 방법으로 아래 <표4>과 같은 데이터   다. 그러나 G사의 경우 ASCII문자 위주의 질의어에서 상
를 생성했으며 물론 실제 로그를 기반으로 추출되었기                 당한 강점을 보이고 있었으며(PREC : -.112, RECL :
때문에 전체 입력 질의어에서 교정이 필요한 질의어와                 -.324) 길이가 네 단어 이상이 되는 긴 질의어들에 대한
정상적인 질의어가 섞인 상태로 학습셋이 구성되었다.                 성능이 Y!의 모델보다 좋았다(PREC : -.354, RECL:
이 표에서 “가중 질의어수”가 의미하는 것은 질의어                 -.350). 그러나 1,2,3단어 질의어의 정확도는 Y!가 G보다
각각에 질의어 빈도수에 따른 가중치를 부여한 질의어수                나은 결과를 보여준 사실도 흥미로웠다.
를 의미한다.                                      그럼 Y! 모델에서 제대로 교정이 되지 못한 질의어 96개
                                             (가중질의어수 : 194)에 대해서 분석해 보도록 하겠다.
                                             질의어를 분석한 결과 40개의 질의어가 외래어이거나 외
       질의 가중질의어 정타가중 오타가중                    래어를 포함하고 있는 질의어들이였다. 이는 전체 교정
       어수      수    질의어수 질의어수                오류가 있었던 질의어들의 42%에 육박하는 양으로 상당
  학습셋 10,142 37,277  34,886 2,391            히 많은 수의 교정 오류가 외래어로 인해 야기되었음을
  테스트셋 2,926 11,328  10,624  704             알 수 있었다. 따라서 외래어 관련 속성을 추가하는 과
                                             정을 통해서 어느 정도 성능 향상을 꾀할 수 있을 거라
             표4. 학습셋/테스트셋                    예상해본다.
                                             오분석 결과가 시스템의 어느 부분에서 나오는지 확인을
테스트 결과 국내 검색포털들의 오타 질의어 교정 서비                해보면, 14.9%가 후보 사전에 애초부터 정답이 되는 질
스와의 결과 비교는 큰 의미가 없는 관계로 G사와의 퍼               의어가 존재하지 않는 경우였다. 예를 들어 “시네스영
포먼스 비교 결과만을 살펴보도록 하겠다. G사의 결과                화관”입력 질의어에 대해서 정답인 “씨너스영화관”질
수집은 테스트셋의 질의어를 실제 서비스 되는 페이지에                의어가 실제 후보사전에 존재하지 않았으며 대신 “씨너
넣어 나온 결과를 수집해 얻은 데이터이며, 오타/정타 질              스”와 “영화관”은 별도로 존재하고 있는 것을 발견했
의어를 넣었을 때 오타로 판단되었을 경우 출력되는“이                다. 이런 후보사전 단어들과 부분 매칭이 되는 질의어들
것을 찾으셨나요?”문장 뒤에 나온 교정 질의어를 수집                이 상당수 존재하고 있었으며 이는 오타 질의어에 대한
했다.                                          복합명사 분해 작업을 통해 정타 후보 질의어들을 생성
                                             하는 방법이 시스템의 성능을 향상 시킬 수 있을 거란
2) 실제 개발된 버전에서는 학습을 위해 여러 한글 속성들이 추가되었       예상을 해볼 수 있을 것이다.
으며 이 부분에 대한 논문은 기회를 봐 따로 마련하도록 하겠다.          또한 한글 검색 특유의 키보드 종류에 관련된 오타의 경
우도 발생한다. 예를 들어 “야후”를 “dign”로 키스트                             [6] Brill, E. and Moore, R. An improved error model for
로크 자체로 입력되는 질의어들이 상당수 차지하고 있었                                noisy channel spelling correction. Proceedings of the
으며 이는 이 논문 전체에서 설명한 편집 거리 연산을
                                                             38th      Annual      Meeting      of     the   Association      for
기반으로 한 노이즈 채널 모델로는 풀기 어려운 방법으
로 오타의 원인부터가 다른 종류의 오타 케이스이다. 하                               Computational Linguistics. 286 - 293. 2000.
지만 이런 종류의 질의어는 대부분 인기 질의어나 의도                                [7]    Farooq    Ahmad,        Grzegorz   Kondrak.    Learning     a
가 분명한 네비게이셔널 질의어(navigational queries)일                      spelling error model from search query logs. Human
가능성이 매우 높다. 따라서 이를 해결하기 위해 미리                                Language Technology Conference. Proceedings of the
편집된 예외사전을 구축해 활용하는 방법을 생각해 볼
                                                             conference       on   Human        Language     Technology       and
수 있을 것이다.
                                                             Empirical      Methods    in    Natural    Language    Processing.
6. 결론 및 향후 연구과제                                              Vancouver, British Columbia, Canada. 955 - 962. 2005
 본 논문에서는 지금까지 국내에서 많이 다뤄지지 않았                                [8]    Ristad, E. and Yianilos, P.          Learning string edit
던 질의어 오타 패턴을 분석해보았다. 그리고 오타 패턴
                                                             distance. IEEE Transactions on Pattern Analysis and
분석 자료를 기반으로 만들어본 교체 확률 테이블을 로
                                                             Machine Intelligence. 20(5):522-532. 1997.
그를 기반으로 구축된 에러모델과 비교 작업을 했으며
둘 사이에 상당한 상관관계가 있음을 알 수 있었다. 이                               [9]    Boldi, P.; Bonchi, F.; Castillo, C.; Vigna, S. From
는 사용자들이 입력한 오타 패턴들이 변하게 되면 자동                                'dango' to 'japanese cakes': Query Reformulation Models
적으로 쌓여진 로그를 기반으로 에러 모델을 지속적으로                                and Patterns. Web Intelligence, IEEE Cs Press, Milan,
업데이트해 이 변화에 대해 지능적으로 대응을 할 수 있
                                                             Italy (2009)
다는 것을 의미한다. 또한 이를 기반으로 구축된 시스템
의 성능 테스트 결과 실제 서비스 중인 여타 다른 검색                               [10] Brill, E. and Cucerzan, S. Spelling correction as an
서비스들과 동등하거나 좀 더 나은 결과를 보여주고 있                                iterative process that exploits the collective knowledge
다는 것을 확인할 수 있었다.                                             of web users. Proceedings of EMNLP 04. 293-300. 2004.
하지만 한국어 특유의 자유로운 띄어쓰기 형식 때문에
발생하는 후보사전 단어 부재의 문제 때문에, 오타 질의
                                                             [11]
                                                             http://en.wikipedia.org/wiki/Spearman's_rank_correlation_c
어 자체에 대한 복합명사분해 작업이 필요하다는 것을
알 수 있었으며, 게다가 외래어로 인한 질의어 오타의                                oefficient
경향이 많아 실제 구축된 모델로도 상당한 양의 질의어                                [12]    Jerry Ye, Jyh-Herng Chow, Jiang Chen, Zhaohui
오타 교정 실패를 보았다. 따라서 이를 위한 학습 속성                               Zheng. Stochastic gradient boosted distributed decision
추가에 대한 연구도 향후 연구 과제로 적합할 거란 생각
                                                             trees.    Conference      on      Information   and    Knowledge
을 해본다.
                                                             Management. Proceeding of the 18th ACM conference
                         참고문헌                                on Information and knowledge management. Hong Kong,
                                                             China. Poster session 8: IR track. 2061-2064. 2009
[1]   Kucich, K.   Techniques for automatically correcting
words in text. ACM Computing Surveys. 24(4):377-439.
1992
[2]   Damerau, F. A technique for computer detection
and correction of spelling errors. Communications of the
ACM. 7(3):171-176. March 1964
[3]   Wagner, R. and Fischer, M. The string to string
correction problem. Journal of the ACM. 21(1):168-173.
January 1974.
[4] Kernighan, M., Church, K., and Gale, W. A spelling
correction program based on a noisy channel model.
Proceedings of COLING 1990. 205-210. 1990.
[5]    Ristad, E. and Yianilos, P. Learning string edit
distance. IEEE Transactions on Pattern Analysis and
Machine Intelligence. 20(5):522-532. 1997.

Más contenido relacionado

La actualidad más candente

딥러닝 기반 자연어 언어모델 BERT
딥러닝 기반 자연어 언어모델 BERT딥러닝 기반 자연어 언어모델 BERT
딥러닝 기반 자연어 언어모델 BERTSeonghyun Kim
 
미등록단어 문제 해결을 위한 비지도학습 기반 한국어자연어처리 방법론 및 응용
미등록단어 문제 해결을 위한 비지도학습 기반 한국어자연어처리 방법론 및 응용미등록단어 문제 해결을 위한 비지도학습 기반 한국어자연어처리 방법론 및 응용
미등록단어 문제 해결을 위한 비지도학습 기반 한국어자연어처리 방법론 및 응용NAVER Engineering
 
한국어 띄어쓰기 프로그램 도전기
한국어 띄어쓰기 프로그램 도전기한국어 띄어쓰기 프로그램 도전기
한국어 띄어쓰기 프로그램 도전기Ted Taekyoon Choi
 
Natural language processing and transformer models
Natural language processing and transformer modelsNatural language processing and transformer models
Natural language processing and transformer modelsDing Li
 
[226]대용량 텍스트마이닝 기술 하정우
[226]대용량 텍스트마이닝 기술 하정우[226]대용량 텍스트마이닝 기술 하정우
[226]대용량 텍스트마이닝 기술 하정우NAVER D2
 
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Esun Kim
 
Elasticsearch를 활용한 GIS 검색
Elasticsearch를 활용한 GIS 검색Elasticsearch를 활용한 GIS 검색
Elasticsearch를 활용한 GIS 검색ksdc2019
 
머신러닝의 자연어 처리기술(I)
머신러닝의 자연어 처리기술(I)머신러닝의 자연어 처리기술(I)
머신러닝의 자연어 처리기술(I)홍배 김
 
Python을 활용한 챗봇 서비스 개발 1일차
Python을 활용한 챗봇 서비스 개발 1일차Python을 활용한 챗봇 서비스 개발 1일차
Python을 활용한 챗봇 서비스 개발 1일차Taekyung Han
 
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017Taehoon Kim
 
추천시스템 이제는 돈이 되어야 한다.
추천시스템 이제는 돈이 되어야 한다.추천시스템 이제는 돈이 되어야 한다.
추천시스템 이제는 돈이 되어야 한다.choi kyumin
 
딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향홍배 김
 
Word Embeddings - Introduction
Word Embeddings - IntroductionWord Embeddings - Introduction
Word Embeddings - IntroductionChristian Perone
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기NAVER D2
 
Semantic & Multilingual Strategies in Lucene/Solr
Semantic & Multilingual Strategies in Lucene/SolrSemantic & Multilingual Strategies in Lucene/Solr
Semantic & Multilingual Strategies in Lucene/SolrTrey Grainger
 
Improving the Life of Data Scientists: Automating ML Lifecycle through MLflow
Improving the Life of Data Scientists: Automating ML Lifecycle through MLflowImproving the Life of Data Scientists: Automating ML Lifecycle through MLflow
Improving the Life of Data Scientists: Automating ML Lifecycle through MLflowDatabricks
 
Attention is All You Need (Transformer)
Attention is All You Need (Transformer)Attention is All You Need (Transformer)
Attention is All You Need (Transformer)Jeong-Gwan Lee
 
파이콘 한국 2019 튜토리얼 - SHAP (Part 3)
파이콘 한국 2019 튜토리얼 -  SHAP (Part 3)파이콘 한국 2019 튜토리얼 -  SHAP (Part 3)
파이콘 한국 2019 튜토리얼 - SHAP (Part 3)XAIC
 

La actualidad más candente (20)

딥러닝 기반 자연어 언어모델 BERT
딥러닝 기반 자연어 언어모델 BERT딥러닝 기반 자연어 언어모델 BERT
딥러닝 기반 자연어 언어모델 BERT
 
미등록단어 문제 해결을 위한 비지도학습 기반 한국어자연어처리 방법론 및 응용
미등록단어 문제 해결을 위한 비지도학습 기반 한국어자연어처리 방법론 및 응용미등록단어 문제 해결을 위한 비지도학습 기반 한국어자연어처리 방법론 및 응용
미등록단어 문제 해결을 위한 비지도학습 기반 한국어자연어처리 방법론 및 응용
 
한국어 띄어쓰기 프로그램 도전기
한국어 띄어쓰기 프로그램 도전기한국어 띄어쓰기 프로그램 도전기
한국어 띄어쓰기 프로그램 도전기
 
Natural language processing and transformer models
Natural language processing and transformer modelsNatural language processing and transformer models
Natural language processing and transformer models
 
[226]대용량 텍스트마이닝 기술 하정우
[226]대용량 텍스트마이닝 기술 하정우[226]대용량 텍스트마이닝 기술 하정우
[226]대용량 텍스트마이닝 기술 하정우
 
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
 
2206 Modupop!
2206 Modupop!2206 Modupop!
2206 Modupop!
 
Elasticsearch를 활용한 GIS 검색
Elasticsearch를 활용한 GIS 검색Elasticsearch를 활용한 GIS 검색
Elasticsearch를 활용한 GIS 검색
 
머신러닝의 자연어 처리기술(I)
머신러닝의 자연어 처리기술(I)머신러닝의 자연어 처리기술(I)
머신러닝의 자연어 처리기술(I)
 
Albert
AlbertAlbert
Albert
 
Python을 활용한 챗봇 서비스 개발 1일차
Python을 활용한 챗봇 서비스 개발 1일차Python을 활용한 챗봇 서비스 개발 1일차
Python을 활용한 챗봇 서비스 개발 1일차
 
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017
 
추천시스템 이제는 돈이 되어야 한다.
추천시스템 이제는 돈이 되어야 한다.추천시스템 이제는 돈이 되어야 한다.
추천시스템 이제는 돈이 되어야 한다.
 
딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향
 
Word Embeddings - Introduction
Word Embeddings - IntroductionWord Embeddings - Introduction
Word Embeddings - Introduction
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
 
Semantic & Multilingual Strategies in Lucene/Solr
Semantic & Multilingual Strategies in Lucene/SolrSemantic & Multilingual Strategies in Lucene/Solr
Semantic & Multilingual Strategies in Lucene/Solr
 
Improving the Life of Data Scientists: Automating ML Lifecycle through MLflow
Improving the Life of Data Scientists: Automating ML Lifecycle through MLflowImproving the Life of Data Scientists: Automating ML Lifecycle through MLflow
Improving the Life of Data Scientists: Automating ML Lifecycle through MLflow
 
Attention is All You Need (Transformer)
Attention is All You Need (Transformer)Attention is All You Need (Transformer)
Attention is All You Need (Transformer)
 
파이콘 한국 2019 튜토리얼 - SHAP (Part 3)
파이콘 한국 2019 튜토리얼 -  SHAP (Part 3)파이콘 한국 2019 튜토리얼 -  SHAP (Part 3)
파이콘 한국 2019 튜토리얼 - SHAP (Part 3)
 

Similar a 한글 검색 질의어 오타 패턴 분석과 사용자 로그를 이용한 질의어 오타 교정 시스템 구축

KIPS_C2008A_0034
KIPS_C2008A_0034KIPS_C2008A_0034
KIPS_C2008A_0034suhyuk park
 
문자 단위의 Neural Machine Translation
문자 단위의 Neural Machine Translation문자 단위의 Neural Machine Translation
문자 단위의 Neural Machine TranslationNAVER LABS
 
Neural Machine Translation 기반의 영어-일본어 자동번역
Neural Machine Translation 기반의 영어-일본어 자동번역Neural Machine Translation 기반의 영어-일본어 자동번역
Neural Machine Translation 기반의 영어-일본어 자동번역NAVER LABS
 
Phrase Tagger, 구문 태거
Phrase Tagger, 구문 태거Phrase Tagger, 구문 태거
Phrase Tagger, 구문 태거찬희 이
 
1. boolean 검색
1. boolean 검색1. boolean 검색
1. boolean 검색Jungkyu Lee
 
EPG 정보 검색을 위한 예제 기반 자연어 대화 시스템
EPG 정보 검색을 위한 예제 기반 자연어 대화 시스템EPG 정보 검색을 위한 예제 기반 자연어 대화 시스템
EPG 정보 검색을 위한 예제 기반 자연어 대화 시스템Seokhwan Kim
 
TTS System을 이용한 교육용 소프트웨어 개발
TTS System을 이용한 교육용 소프트웨어 개발TTS System을 이용한 교육용 소프트웨어 개발
TTS System을 이용한 교육용 소프트웨어 개발Jongmyoung Kim
 
판별 모델을 통한 대체어 추출
판별 모델을 통한 대체어 추출판별 모델을 통한 대체어 추출
판별 모델을 통한 대체어 추출ssuserf03c031
 
[214]베이지안토픽모형 강병엽
[214]베이지안토픽모형 강병엽[214]베이지안토픽모형 강병엽
[214]베이지안토픽모형 강병엽NAVER D2
 
영어 말하기 자동채점 프로그램의 현재와 미래
영어 말하기 자동채점 프로그램의 현재와 미래	영어 말하기 자동채점 프로그램의 현재와 미래
영어 말하기 자동채점 프로그램의 현재와 미래 engedukamall
 
의존 구조 분석기, Dependency parser
의존 구조 분석기, Dependency parser의존 구조 분석기, Dependency parser
의존 구조 분석기, Dependency parser찬희 이
 
Dependency Parser, 의존 구조 분석기
Dependency Parser, 의존 구조 분석기Dependency Parser, 의존 구조 분석기
Dependency Parser, 의존 구조 분석기찬희 이
 
자연어처리 소개
자연어처리 소개자연어처리 소개
자연어처리 소개Jin wook
 
철자 교정기
철자 교정기철자 교정기
철자 교정기EunGi Hong
 
CoreDot TechSeminar 2018 - Session3 Doh Seungheon
CoreDot TechSeminar 2018 - Session3 Doh SeungheonCoreDot TechSeminar 2018 - Session3 Doh Seungheon
CoreDot TechSeminar 2018 - Session3 Doh SeungheonCore.Today
 
230112_word2vec1_논문리뷰.pdf
230112_word2vec1_논문리뷰.pdf230112_word2vec1_논문리뷰.pdf
230112_word2vec1_논문리뷰.pdfminalang
 
​『함수형 반응형 프로그래밍』 맛보기
​『함수형 반응형 프로그래밍』 맛보기​『함수형 반응형 프로그래밍』 맛보기
​『함수형 반응형 프로그래밍』 맛보기복연 이
 

Similar a 한글 검색 질의어 오타 패턴 분석과 사용자 로그를 이용한 질의어 오타 교정 시스템 구축 (20)

KIPS_C2008A_0034
KIPS_C2008A_0034KIPS_C2008A_0034
KIPS_C2008A_0034
 
문자 단위의 Neural Machine Translation
문자 단위의 Neural Machine Translation문자 단위의 Neural Machine Translation
문자 단위의 Neural Machine Translation
 
Neural Machine Translation 기반의 영어-일본어 자동번역
Neural Machine Translation 기반의 영어-일본어 자동번역Neural Machine Translation 기반의 영어-일본어 자동번역
Neural Machine Translation 기반의 영어-일본어 자동번역
 
Phrase Tagger, 구문 태거
Phrase Tagger, 구문 태거Phrase Tagger, 구문 태거
Phrase Tagger, 구문 태거
 
1. boolean 검색
1. boolean 검색1. boolean 검색
1. boolean 검색
 
EPG 정보 검색을 위한 예제 기반 자연어 대화 시스템
EPG 정보 검색을 위한 예제 기반 자연어 대화 시스템EPG 정보 검색을 위한 예제 기반 자연어 대화 시스템
EPG 정보 검색을 위한 예제 기반 자연어 대화 시스템
 
KSC2020 PT
KSC2020 PTKSC2020 PT
KSC2020 PT
 
TTS System을 이용한 교육용 소프트웨어 개발
TTS System을 이용한 교육용 소프트웨어 개발TTS System을 이용한 교육용 소프트웨어 개발
TTS System을 이용한 교육용 소프트웨어 개발
 
Topic models
Topic modelsTopic models
Topic models
 
판별 모델을 통한 대체어 추출
판별 모델을 통한 대체어 추출판별 모델을 통한 대체어 추출
판별 모델을 통한 대체어 추출
 
[214]베이지안토픽모형 강병엽
[214]베이지안토픽모형 강병엽[214]베이지안토픽모형 강병엽
[214]베이지안토픽모형 강병엽
 
영어 말하기 자동채점 프로그램의 현재와 미래
영어 말하기 자동채점 프로그램의 현재와 미래	영어 말하기 자동채점 프로그램의 현재와 미래
영어 말하기 자동채점 프로그램의 현재와 미래
 
의존 구조 분석기, Dependency parser
의존 구조 분석기, Dependency parser의존 구조 분석기, Dependency parser
의존 구조 분석기, Dependency parser
 
Dependency Parser, 의존 구조 분석기
Dependency Parser, 의존 구조 분석기Dependency Parser, 의존 구조 분석기
Dependency Parser, 의존 구조 분석기
 
자연어처리 소개
자연어처리 소개자연어처리 소개
자연어처리 소개
 
DS_04
DS_04DS_04
DS_04
 
철자 교정기
철자 교정기철자 교정기
철자 교정기
 
CoreDot TechSeminar 2018 - Session3 Doh Seungheon
CoreDot TechSeminar 2018 - Session3 Doh SeungheonCoreDot TechSeminar 2018 - Session3 Doh Seungheon
CoreDot TechSeminar 2018 - Session3 Doh Seungheon
 
230112_word2vec1_논문리뷰.pdf
230112_word2vec1_논문리뷰.pdf230112_word2vec1_논문리뷰.pdf
230112_word2vec1_논문리뷰.pdf
 
​『함수형 반응형 프로그래밍』 맛보기
​『함수형 반응형 프로그래밍』 맛보기​『함수형 반응형 프로그래밍』 맛보기
​『함수형 반응형 프로그래밍』 맛보기
 

한글 검색 질의어 오타 패턴 분석과 사용자 로그를 이용한 질의어 오타 교정 시스템 구축

  • 1. 한글 검색 질의어 오타 패턴 분석과 사용자 로그를 이용한 질의어 오타 교정 시스템 구축 O 전희원, 다니엘 흥 임해창 heewon@yahoo-inc.com, dhuang@yahoo-inc.com, rim@nlp.korea.ac.kr Analyzing of Hangul Search Query Spelling Error Patterns and Developing Query Spelling Correction System Based on User Logs. O Hee-Won Jeon, Daniel Huang Hae-Chang Rim YST Web Search-Yahoo!, Search-Yahoo!, Korea University 요 약 본 논문은 검색 서비스 기능 중에 빼놓을 수 없는 기능인 한글 검색 질의어(query) 교정 시스템을 ‘야 후!’에서 구축하며 분석한 한글 오타 패턴 그리고 사용자 로그를 기반으로 설계한 질의어 교정 서비스에 대한 설명을 하고 있다. 이 교정 서비스는 현재 ‘야후! 코리아’에 적용되어 있으며, 한글을 고려한 키스트 로크를 기반으로 한 설계 방식 그리고 동적으로 에러모델을 구축하는 방법을 소개하고 있으며 또한 구축 된 모델의 성능을 다른 검색 서비스와 비교한 결과를 소개한다. 주제어: 쿼리, 질의어, Speller, Query 을 사용한 논문도 발표되기도 하였다[4]. 여기서는 각 문 1. 서론 자들이 다른 문자로 교체될 확률 값을 가진 혼동행렬 일반적인 철자 오류는 크게 두 가지 원인으로 나뉜다[1]. (confusion matrix)을 제공하였다. 이 확률값과 함께 베이 첫 번째는 타이핑(typographical) 오류로 키보드 상의 키 지언 노이즈 채널(Bayesian noisy channel) 모델을 사용해 위치의 유사성에 기반을 둔 오류이다1). 예를 들어 'ㅁ', 각 단어와 후보 단어 사이의 에러 확률을 계산할 수 있 ‘ㄴ’의 는 키보드 위에서 아주 가까운 위치에 위치함 게 되었다. [5]에서는 두 단어 쌍에서 추출한 정보를 사용해 교정거 으로서 발생 할 수 있는 타이핑 오류이다. 두 번째 오류 는 인식(cognitive) 오류로서 단어의 정확한 철자에 대한 리 확률 모델을 구축하는 방법을 소개했다. 이들 단어 오해로 빚어지는 오류이다. 예를 들어 'ㅐ'는 ‘ㅔ’와 쌍은 오타 단어와 정타 단어를 의미하며 이들 간의 교정 발음상 상당히 유사한데 이와 같은 발음(phonetic) 오류 거리 연산을 추적해 이들 정보를 활용하는 방법을 사용 도 인식 오류의 한 종류로 볼 수 있다. 했다. 오타 교정 알고리즘은 언어처리 분야에서도 상당히 많은 일반적으로 우리가 사용하는 워드 프로세스에서의 맞춤 발전을 해온 몇 안 되는 분야 중에 하나이다. 초기 사전 법 검사와는 다르게 검색 질의어(query)의 오타 교정은 을 기반으로 한 오타 교정 알고리즘[2]의 경우 사전에서 기존의 사전에 의존하는 방법으로는 큰 효과를 보기 힘 발견하지 못한 단어들을 오타로 간주하여 이 단어에 대 들다. 왜냐면 질의어 자체가 굉장히 다양한 형태를 띄고 해서 한 번의 편집거리(edit distance)에 있는 모든 후보 있으며 이들 모두, 특히나 인터넷 신조어 모두를 아우르 들을 계산해 내 이들 중에 사전에 있는 단어들에 대해서 는 사전을 수작업으로 구축하기란 쉬운 일이 아니기 때 교정해주는 방법을 사용했다. 그러나 이 알고리즘은 단 문이다. 이 때문에 질의어 로그를 활용한 방법이 각광을 한 번의 교정거리를 사용함으로 인해 이 이상의 교정거 받았다[6]. 이 논문에서는 전통적인 레벤스타인 리로 인해 생기는 오타들에 대해서 효과적으로 처리하지 (Levenshtein) 거리 연산을 사용하기 보다는 가중치를 적 못하는 단점이 있었다. 용한 교정 거리 연산을 사용하였고 이 각각 가중치는 사 이후에 여러 번의 교정거리 연산도 계산해 내는 문자열 용자 로그를 분석해 사용자 경향에 따라 가중치가 가변 대 문자열 계산 알고리즘이 소개되었는데[3] 이 알고리즘 적으로 변환이 가능하게끔 만들었다. 은 모든 삽입(insertion), 삭제(deletion), 교체(substitution) 본 논문은 야후!의 한,중 질의어 오타 교정 플랫폼에 한 연산에 대해서 고정적인 비용만을 할당하는 단점을 가지 글 처리 관련 모듈 개발을 하면서 연구된 사항들을 기반 고 있었다. 이와 같은 단점을 보완해 고정된 교정 연산 으로 쓰인 논문이라는 것을 미리 밝혀둔다. 이 플랫폼은 을 할당하기 보다 서로 다른 연산 비용을 할당하는 방법 베이지언 노이즈 채널 모델을 핵심적으로 사용한 플랫폼 으로 한국어 특유의 속성(features)을 추가하여 성능향상 을 이끌어 낼 수 있었다. 1) 대한민국 표준 키보드인 두벌식 키보드를 기준으로 설명하겠다. 앞으로 2장에서는 한국 질의어들의 특징에 대해서 살펴
  • 2. 보는 시간을 가져보기로 하겠다. 또한 랜덤 샘플링 된 의어에 포함된 단어 개수로 계산했다. 질의어와 테스트를 위한 학습 데이터를 기반으로 한국어 아래 <그림1>에서 보는 것과 같이, 1개 내지 2개의 단어 검색 서비스에서 발생된 질의어들의 여러 특징들과 오타 를 포함하는 질의어가 한글 질의어 대부분을 차지하는 양상들을 살펴보겠다. 그리고 3장에서는 질의어 오타 교 것을 알 수 있다. 정 시스템의 핵심 알고리즘인 노이즈 채널 모델을 설명 하고 이를 구성하는 에러모델(error model),언어모델 (language model)을 설명하겠다. 본 시스템에서는 좀 더 발전시켜 로그를 기반으로 에러 모델을 구축하는 방법을 사용하였는데, 이에 대한 설명 도 3장에서 설명하도록 하겠다. 4장에서는 전체적인 시 스템 구조를 설명하겠고 마지막 5장에서는 다른 검색 서 비스들과 성능비교 결과를 보여주도록 하겠다. 2. 한국 질의어의 특징 이 장에서 이야기할 한국 질의어라 함은 한국에서 서비 스 되는 검색 서비스에서 사용자들이 입력하는 질의어라 고 정의하도록 하겠다. 일반적으로 대한민국 사용자들이 주로 사용하는 질의어에 대한 분석이라고 해도 큰 문제 가 없을 듯싶다. 본 논문에서는 특정 기간 동안 야후! 코 리아 검색 서비스에서 수집된 질의어들에 대해 랜덤 샘 플링을 수행해 약 백만(990,140)개의 질의어를 선정했고 이를 기반으로 데이터 분석을 했다. 질의어 중에서 공백으로 구분한 단어 개수가 15개 이상 인 질의어들은 이상치(outlier)로 판단해서 데이터에서 제 거했으며, 15개 단어 이상의 질의어들은 전체에서 1% 정 그림1.한글/영문 질의어 길이 빈도 히스토그램 도에 불과했다. 2개 이상의 단어를 가진 질의어가 전체 질의어 집합에서 56%를 차지하는데, 단어기반 n-gram 확률 정보가 질의 2.1 질의어 분포 어 오타 교정에 어느 정도 도움을 줄 수 있다는 것을 예 일단 질의어는 한글과 숫자가 함께 나오는 질의어까지 측할 수 있다. 한글 질의어로 분류했다. 그리고 영문 질의어 역시 영문 한국 사람들이 입력하는 영문 질의어의 길이 빈도 히스 알파벳과 숫자가 섞인 경우까지 영문 질의어로 인정했 토그램은 <그림1>과 같다. 이전 연구 논문[7]에서 영어권 다. 사용자들이 입력하는 영문 질의어 경향하고는 확연히 다 한글 영문 한글/영 숫자 이외 총 른 경향을 보이고 있는데(이 논문에서는 80% 이상의 질 문 혼합 의어가 두 단어 이상이라고 언급했다), 한국 질의어에서 880,172 35,194 42,880 3,963 27,864 990,073 는 두 단어 이상으로 만들어진 영문 질의어는 전체의 88.90% 3.56% 4.33% 0.40% 2.81% 100% 33%를 차지하고 있는 것을 알 수 있었다. 표1. 질의어 분포 2.3 한글 질의어의 오타 경향 <표1>에서 보는 바와 같이 89%의 질의어가 한글 질의어 그럼 전체 질의어 트래픽의 약 89%를 차지하는 한글 였다. 이와 반면에 4%정도의 질의어가 영문 질의어였다. 질의어의 오타 경향에 대해서 살펴볼 차례이다. 일단 로 ‘이외’ 항목에 있는 질의어들은 앞서 나온 네 가지 종 그에서 3천개의 오타 질의어들을 추출해 정타 정보를 입 류의 질의어 이외의 질의어들을 통칭하며, 이 카테고리 력했고, 이들 중에서 한글 질의어 오타, 정타 쌍인 2,252 에 상당수의 URL 질의어들이 포함되어 있음을 확인 할 개의 질의어를 기반으로 분석을 수행했다. 수 있었다. 수행 방법은 아래와 같다. 이와 같은 사용자 질의어 분포에 따라서 한글 질의어 오 타 교정 성능을 향상 시키는데 집중을 하는 것이 플랫폼 1) 오타, 정타를 모두 키스트로크(keystroke)로 변환 시킨 전체 성능 향상에 큰 영향을 끼칠 수 있음을 시사하고 다. 있다. 2) 이들을 기반으로 자소 편집 거리를 계산한다. 3) 편집 거리 계산 마지막에 백트래킹 계산을 수행해 각 2.2 한글 질의어 길이 자소들의 추가, 삭제, 교체 연산이 어떻게 수행 되었는지 로그로 남긴다. 이 절에서는 <표1>에서 소개한 한글 질의어들에 대해서 길이의 분포가 어떻게 되는지 살펴볼 것이다. 길이는 질 1)번의 세부 과정은 일단 문자열을 자소 문자열로 변환
  • 3. 시키고 이들을 키스트로크로 바꾸는 과정을 포함한다. <그림3>의 ‘한글 1회 편집연산 분포’에서 보는 바와 여기서 한글 문자열일 경우 같은 키스트로크라도 다른 같이 대부분(84%)의 연산이 교체연산임을 알 수 있다. 한글 문자열을 가리킬 경우가 있으니 분류자(Divider)라 또한 2회 이상의 편집 연산에 대한 결과도 크게 다르지 는 개념을 각 한글 음절 마지막에 추가 문자로 넣어줬 않고 교체 연산이 가장 많은 것을 알 수 있다. 다. 예를 들어 “ㅇㅑ후”와 “야후”는 실제 키스트로 두 파이차트에서 보는 것과 같이 교체연산이 가장 빈번 크는 같지만 분명히 다른 문자열이다. 이는 1번 과정을 한데, 그렇다면 어떤 문자들의 교체 연산이 가장 많은지 거치면 “d~i~gn~”와 “di~gn~”로 변환된다. 따라서 위 확인해 보도록 하자. 문자열은 분류자에 대한 1회의 삭제 연산이 필요하게 된 일단 2.1장에서 한글과 숫자가 섞여 나오는 것까지 한글 다. 물론 편집 거리 계산의 연산 비용은 모두 1로 줬다. 질의어라고 분류 했으므로 과연 한글 자소, 숫자, 공백 하지만 백트래킹 계산 시 삭제/추가 연산이 교체 연산과 그리고 분류자들의 빈도는 어떻게 되는지 살펴보겠다. 동일한 비용 경로를 가질 때 교체 연산에 우선순위를 두 1800 었다. 이는 한글에서 삭제/추가 연산으로 인해 나오는 오 1600 타는 목표하고자 하는 정타 질의어와는 문자열 길이에서 1400 부터 확연히 차이를 둘 가능성이 많기 때문에 교체 연산 1200 1000 에 더 우선순위를 두었으며 그럼에도 불구하고 연산 비 추가 800 용은 모두 같은 1을 사용했다. 삭제 600 교체 편집 거리 비용/빈도 히스토그램 400 2000 200 1800 1600 0 1400 한글 자소 분류자 숫자 공백 1200 빈도 1000 800 그림4. 편집 거리 1인 질의어에서 문자 종류별 편집 600 400 연산 분포 200 500 0 450 1 2 3 4 5 6 7 400 편집거리 비용 350 300 그림2. 한글 질의어 편집거리 비용/빈도 히스토그램 250 추가 200 삭제 <그림2>에서 보다시피 편집 거리 1인 한글 오타 질의어 150 교체 100 들이 전체의 83%를 차지하는 것을 볼 수 있다. 게다가 50 질의어 전체 길이와 편집 거리 비용 관계를 보기 위해 0 상관분석을 수행한 결과 0.03642의 결과가 나왔는데 이 한글 자소 분류자 숫자 공백 는 질의어 길이와 편집 거리 비용이 별다른 관련이 없다 는 것을 의미한다. 그렇다면 위 <그림2>에서 95%를 커버 그림5. 편집 거리 2 이상인 질의어에서 문자 종류별 하는 2편집 거리 비용 이상의 질의어 쌍을 로그에서 추 편집 연산 분포 출해 에러모델을 구축하는 방안을 간단히 생각해 볼 수 <그림4>에서 보는 바와 같이 99% 이상의 연산이 한글 있을 것이다. 자소 편집 연산임을 알 수 있으며 <그림5>에서 편집 거 그렇다면 대부분을 차지하는 한 번의 편집 연산을 가지 리 2이상일 경우에는 분류자의 연산이 늘어나 있음을 알 는 질의어들이 어떤 연산들로 구성이 되어 있는지 확인 수 있다. 이는 “ㅇㅑ후”와 같은 “야후”를 의도하는 해 보도록 하자. 한글 질의어들의 오타가 상당부분 존재하고 있음을 알려 주는 지표라고 생각하며 반드시 질의어 오타의 편집 거 리 연산에서 이 부분에 대해 고려되어야 함을 의미하고 있다. 지금까지 한글 질의어들이 어떤 오타 경향이 있는지 표 로 살펴봤는데, 그렇다면 가장 많은 연산인 교체 연산이 어떤 문자에서 많이 일어나는지 살펴보도록 하겠다. 아래 <그림6>를 보면 ‘ㅔ’,‘ㅐ’ 자소가 가장 오타 확률이 높은 문자임을 알 수 있다. 게다가 두 자소 상호 간의 오타가 가장 빈번하게 도출된다는 것을 <표2>로 부 터 확인할 수 있다. 사실 이 두 문자는 키보드 자간 거 리가 1로 타이핑 오류가 날 수 있는 확률이 높을 뿐만 아니라 발음도 유사한 음소로 타이핑 오류와 발음 오류 그림3. 한글 1, 2회 편집연산 분포 가 결합된 대표적인 오타 케이스이다.
  • 4. 질의어 교정에서 가장 많이 사용하는 노이즈 채널 모델 은 아래의 식으로 설명이 된다.             (1)    위 식에서 v는 오타 질의어를 의미하고 w는 교정된 올 바른 질의어를 의미한다. 여러 교정 질의어 후보들 중에 서 위의 확률계산에서 최대값을 가지는 W를 고르는 문 제로 생각할 수 있다.   arg      (2) (1)식에서 분모에 해당하는 P(v)는 모든 w질의어들에 대 해서 동일하기 때문에 생략할 수 있으며 다시 (2)식과 같 그림6. 오타 확률이 높은 문자(자소) 분포도 이 표현될 수 있다.   는 사용자가 w를 의도했으나 v로 타이핑 할 확률 입력 의도  의도입력  발음오류 타이핑오류 로 에러모델을 사용해서 계산된다. 그리고 P(w)는 언어모 자소 자소 델로 계산될 수 있을 것이다. T(ㅆ) t(ㅅ) 0.9875 O b(ㅠ) n(ㅜ) 0.8974 O O 3.1 에러 모델(Error Model) o(ㅐ) p(ㅔ) 0.8908 O O E(ㄸ) x(ㅌ) 0.8000 O 두 문자열 v, w와 관련된 확률    를 표현하는 다 u(ㅕ) j(ㅓ) 0.7826 O O 른 방법은 이 확률을 v,w 두 문자열 사이의 편집거리로 i(ㅑ) k(ㅏ) 0.7778 O O 표현하는 것이다. R(ㄲ) z(ㅋ) 0.7647 O     ∝      (3) P(ㅖ) p(ㅔ) 0.7647 O 전통적인 편집 거리는 추가, 삭제, 교체 연산에 대해서 g(ㅎ) d(ㅇ) 0.7619 O 고정된 값을 주었는데 이보다는 앞서 2장에서 조사해본 p(ㅔ) o(ㅐ) 0.7246 O O 것을 기반으로 편집 거리 테이블을 만들어서 사용하는 y(ㅛ) h(ㅗ) 0.7143 O O 방법을 생각해 볼 수 있을 것이다. v(ㅍ) q(ㅂ) 0.6111 O 문자쌍 각각의 편집 거리를 이용한 확률 획득에 대한 식 Q(ㅃ) v(ㅍ) 0.5714 O 은 아래와 같다[8]. c(ㅊ) w(ㅈ) 0.5556 O t(ㅅ) T(ㅆ) 0.5258 O      log    (4) z(ㅋ) r(ㄱ) 0.5000 O e가 의미하는 것은 삭제(c → _), 추가(_ → c ), 교체(c O(ㅒ) o(ㅐ) 0.5000 O → d)와 같은 문자대 문자의 편집연산을 의미한다. 따라 O(ㅒ) P(ㅖ) 0.5000 O O 서 큰 편집확률은 값이 작은 편집거리 연산 비용을 의미 표2.  의도 입력  상위 18개의 데이터 하게 된다. <표2>에서 보자면 조건부 확률 값이 가장 큰 상위 18개 문자쌍에 대한 방법을 기반으로 문자열(질의어)에 대한 의 데이터 중에서 모든 확률 데이터가 발음오류로 기인 확률을 생각해 볼 수 있다. 한 데이터였으며, 그중에서 몇몇의 경우가 타이핑 오류      ∏          ×     ×  ×     (5) 와 결합된 오타 확률임을 알 수 있었다(여기서 타이핑 양변에 로그를 취하자. 오류의 기준은 키간 거리가 1인 자소쌍으로 가정했다). log       (6) log        log        log       3. 노이즈 채널 모델(Bayesian noisy channel) (6)식과 (4)식을 결합하면 아래와 같은 식을 얻을 수 있 2장의 조사 결과 한 번의 편집거리가 가장 많았으며 그 다. 리고 그 편집거리 연산중에서 가장 많은 연산은 자소의 log              (7) 교체 연산이었다. 따라서 한글을 분석하기 위해서 한글 따라서 우리는 w,v 문자열 사이의 편집거리를 구하면 에 음절을 기본단위로 처리하는 것은 자소단위의 처리보다 러모델을 계산할 수 있을 것이다. 더 많은 정보를 요구할 것이라는 것을 예측할 수 있다. 편집 거리 테이블을 구축하는 것은 오타 교정 시스템에 본 시스템에서는 자소단위의 처리를 기본으로 하겠고 이 서 가장 중요한 작업이다. 연구 결과 편집거리 속성은 를 위해 자소를 키스트로크로 변환하는 과정을 거치겠 기계학습으로 만들어진 모델에서 가장 중요한 속성으로 다. 게다가 영어 알파벳도 표현을 해야 하는 문제가 있 사용되며 적절한 후보 정타 질의어를 후보사전으로부터 으므로 영어 알파벳은 아스키(ASCII) 테이블(0x41 ~ 0x7A) 선택하는데 핵심적인 역할을 수행한다. 영역을 사용하고 한글 키스트로크 알파벳을 위해서 유니 코드 전각문자(Fullwidth) 영역을 사용했다(0xFF21 ~ 3.1.1 로그로부터 에러모델 테이블 구축 0xFF5A). 그리고 2장에서 자소음절로 입력된 질의어와 고정된 편집거리 연산 테이블 보다는 동적으로 사용자 한글음절로 입력된 질의어의 키스트로크를 차별화하기 오타 패턴에 따라 변화가 가능한 편집거리 테이블이 필 위해 각 음절의 마지막에 분류자(~)를 추가 했다. 요했는데, 이를 위해 사용자 로그에서 질의어 재구성
  • 5. (query reformulation) 데이터를 가져와 테이블을 구축하 테이블과 사용자 로그로 만들어진 에러모델 확률 테이블 는 것을 생각해 볼 수 있다[9][10]. 사이의 확률랭킹에 대해서 양의 상관관계가 있다는 것을 시스템에서 사용된 동적 편집 연산 테이블 데이터는 [8] 보여준다. 논문 결과를 기반으로 같은 세션내의 두 질의어의 평균 이 데이터들의 산점도는 아래 <그림7>과 같다. 출현 위치 정보와 편집거리를 기반으로 구축되었다. 이런 방법으로‘세션을 고려한 사용자 입력 질의어’ 데 이터를 기반으로 로그 마이닝을 수행 하였으며, 빠른 처 리를 위해 하둡(Hadoop) 클러스터를 사용하였다. 이렇게 만들어진 1억여건의 질의어, 재입력된 질의어 (reformulated query), 횟수 데이터를 이용, 두 질의어의 편집거리 연산을 추적해 오타가 나는 자소의 쌍들을 구 할 수 있었으며 이를 기반으로 자소 q가 입력되었을 때 s를 의도할 조건부 확률값을 가지는 에러모델 테이블을 구할 수 있다(    데이터가 되겠다). 여기서 q나 s는 자소나 분류자, 공백 등과 같은 문자들 뿐만 아니라 문 자 삭제, 추가를 의미하는 특별한 편집 작업을 의미할 수도 있다. 따라서 같은 방법으로 삭제, 추가 편집 작업 그림7. <표3>의 데이터에 대한 산점도 에 대한 별도의 삭제, 추가 편집연산 테이블도 구축하였 (x축: 랭킹1, y축:랭킹2) 다. 입력 의도 랭킹1 랭킹2 3.2 언어 모델(Language Model) 자소 자소 P(w) 확률을 구하는 방법은 유니그램(unigram) 언어모델 o(ㅐ) p(ㅔ) 3 1 을 사용했다. p(ㅔ) o(ㅐ) 10 2 T(ㅆ) t(ㅅ) 1 3 b(ㅠ) n(ㅜ) 2 4         (8) m(ㅡ) n(ㅜ) 40 5  t(ㅅ) T(ㅆ) 15 6 n(ㅜ) m(ㅡ) 20 7 위 데이터 역시 질의어 로그에서 얻을 수 있다. N은 전 j(ㅓ) u(ㅕ) 97 8 P(ㅖ) p(ㅔ) 8 9 체 질의어 단어 개수이며 C(w)는 w 질의어 단어의 출현 n(ㅜ) b(ㅠ) 31 10 횟수로 구할 수 있을 것이다. 물론 구현상 로그에서조차 x(ㅌ) e(ㄷ) 34 11 출현하지 않은 단어들에 대한 기본 확률값도 고려해야 e(ㄷ) x(ㅌ) 23 12 할 것이다. k(ㅏ) i(ㅑ) 77 13 R(ㄲ) r(ㄱ) 44 14 j(ㅓ) k(ㅏ) 42 15 4.시스템 구조 z(ㅋ) r(ㄱ) 16 16 p(ㅔ) P(ㅖ) 80 17 r(ㄱ) z(ㅋ) 45 18 u(ㅕ) j(ㅓ) 5 19 h(ㅗ) y(ㅛ) 123 20 표3. 질의어 재입력을 통해 만들어진 교체 연산에 대한 자소 오타 확률 중 상위 20개의 쌍의 랭킹 비교 (랭킹1은 사용자 편집 데이터로 만들어진 확률 랭킹, 랭킹2는 에러모델 테이블에서 만들어진 랭킹임) 이렇게 1억여건 데이터를 이용해 구한 조건부 확률값을 검증하기 위해 에디터가 직접 편집한 질의어 오타 쌍 데 이터(2.3에서 이용한 2,252개의 데이터)를 이용한 편집거 그림8. 시스템 개요 리 확률 테이블 데이터와 질의어 재입력을 통해 마이닝 대략적인 시스템 구조는 위 <그림8>과 같으며 각 과정 된 에러모델 테이블 랭킹의 비교를 스피어맨(Spearman) 에 대한 설명은 아래와 같다. 상관관계[11] 방법을 이용해 상관관계를 계산해 보았다. 만들어진 250여개의 확률 데이터 랭킹 비교 결과 스피어 1) 사용자 입력 질의어를 지속적으로 로깅한다. 맨 상관관계 0.507이라는 결과 값이 계산되었고 이 결과 는 사람이 편집한 질의어 쌍 데이터를 이용해 만들어진 2,3) 질의어 빈도수나 질의어 재구성을 위한 데이터를 주
  • 6. 기적으로 마이닝하게 된다. 마이닝된 데이터는 새 모델 빌드시 로컬 서버로 전송된다. ACC FSCO PREC RECL FPOS SERVICE .954 .560 .570 .551 .024 G사 4) 로컬 서버에서는 실제 정타 질의어 후보 사전을 로그 .956 .554 .621 .499 .018 Y! 를 통해 구축하고 동시에 모델 학습을 위한 데이터베이 +.002 -.006 +.051 -.052 -.006 스를 구축한다. 이곳에서 에러모델과 언어모델 데이터가 표5. G사와의 모델 퍼포먼스 생성되며, 기계학습으로 여러 문자열 속성들을 가미해 (Y!는 본 논문을 기반으로 만들어진 모델을 의미한다) 교정에 쓰일 적절한 임계값를 계산해 낸다. 시스템에서 모델은 그라디언트 부스티드 결정트리(gradient boosted <표5>에서 각 성능평가 방법들은 아래와 같다. distributed decision trees)[12]를 사용하였다.  5) 마지막으로 생성된 모델을 서비스 서버에 적용한다.    (9)       (10) 4)번 과정에 대한 부연 설명을 하자면, 실제 입력된 질의   어가 오타인지 정타인지 구분하고 이에 대해서 교정 질      의어를 선정하는 과정이 필요하다. 입력된 질의어가 정       (11) 타일 경우에는 이 질의어가 후보 사전에 존재하는 것을   통해서 확인하는 방법과 후보가 될 만한 정타 후보 질의      (12) 어들이 사전에 존재하지 않을 경우여야 된다. 물론 전자     의 경우는 사전 조회만으로 가능하지만 두 번째 경우는       (13) 학습셋을 통한 적절한 임계값 설정이 필요할 것이다. 따   라서 이 과정에서 학습모델 생성이 필요하다2). 위 <표5>의 결과는 모델이 가장 큰 F-Score를 내는 임계 5. 결과분석 값에 대해서 튜닝된 결과이다. PREC과 RECL의 증감이 모델 빌드를 위해 학습 데이터와 테스트 데이터를 준비 거의 동일하고 FSCO의 결과는 통계적으로 유의미한 수 했다. 치라고 보기 힘든 -.006의 결과가 나왔다. 이 결과로 보 모델 학습과 테스트를 위해 검색 로그에서 층화 샘플링 자면 G사 퍼포먼스와 큰 차이가 없다는 것을 알 수 있 (stratified sampling) 방법으로 아래 <표4>과 같은 데이터 다. 그러나 G사의 경우 ASCII문자 위주의 질의어에서 상 를 생성했으며 물론 실제 로그를 기반으로 추출되었기 당한 강점을 보이고 있었으며(PREC : -.112, RECL : 때문에 전체 입력 질의어에서 교정이 필요한 질의어와 -.324) 길이가 네 단어 이상이 되는 긴 질의어들에 대한 정상적인 질의어가 섞인 상태로 학습셋이 구성되었다. 성능이 Y!의 모델보다 좋았다(PREC : -.354, RECL: 이 표에서 “가중 질의어수”가 의미하는 것은 질의어 -.350). 그러나 1,2,3단어 질의어의 정확도는 Y!가 G보다 각각에 질의어 빈도수에 따른 가중치를 부여한 질의어수 나은 결과를 보여준 사실도 흥미로웠다. 를 의미한다. 그럼 Y! 모델에서 제대로 교정이 되지 못한 질의어 96개 (가중질의어수 : 194)에 대해서 분석해 보도록 하겠다. 질의어를 분석한 결과 40개의 질의어가 외래어이거나 외 질의 가중질의어 정타가중 오타가중 래어를 포함하고 있는 질의어들이였다. 이는 전체 교정 어수 수 질의어수 질의어수 오류가 있었던 질의어들의 42%에 육박하는 양으로 상당 학습셋 10,142 37,277 34,886 2,391 히 많은 수의 교정 오류가 외래어로 인해 야기되었음을 테스트셋 2,926 11,328 10,624 704 알 수 있었다. 따라서 외래어 관련 속성을 추가하는 과 정을 통해서 어느 정도 성능 향상을 꾀할 수 있을 거라 표4. 학습셋/테스트셋 예상해본다. 오분석 결과가 시스템의 어느 부분에서 나오는지 확인을 테스트 결과 국내 검색포털들의 오타 질의어 교정 서비 해보면, 14.9%가 후보 사전에 애초부터 정답이 되는 질 스와의 결과 비교는 큰 의미가 없는 관계로 G사와의 퍼 의어가 존재하지 않는 경우였다. 예를 들어 “시네스영 포먼스 비교 결과만을 살펴보도록 하겠다. G사의 결과 화관”입력 질의어에 대해서 정답인 “씨너스영화관”질 수집은 테스트셋의 질의어를 실제 서비스 되는 페이지에 의어가 실제 후보사전에 존재하지 않았으며 대신 “씨너 넣어 나온 결과를 수집해 얻은 데이터이며, 오타/정타 질 스”와 “영화관”은 별도로 존재하고 있는 것을 발견했 의어를 넣었을 때 오타로 판단되었을 경우 출력되는“이 다. 이런 후보사전 단어들과 부분 매칭이 되는 질의어들 것을 찾으셨나요?”문장 뒤에 나온 교정 질의어를 수집 이 상당수 존재하고 있었으며 이는 오타 질의어에 대한 했다. 복합명사 분해 작업을 통해 정타 후보 질의어들을 생성 하는 방법이 시스템의 성능을 향상 시킬 수 있을 거란 2) 실제 개발된 버전에서는 학습을 위해 여러 한글 속성들이 추가되었 예상을 해볼 수 있을 것이다. 으며 이 부분에 대한 논문은 기회를 봐 따로 마련하도록 하겠다. 또한 한글 검색 특유의 키보드 종류에 관련된 오타의 경
  • 7. 우도 발생한다. 예를 들어 “야후”를 “dign”로 키스트 [6] Brill, E. and Moore, R. An improved error model for 로크 자체로 입력되는 질의어들이 상당수 차지하고 있었 noisy channel spelling correction. Proceedings of the 으며 이는 이 논문 전체에서 설명한 편집 거리 연산을 38th Annual Meeting of the Association for 기반으로 한 노이즈 채널 모델로는 풀기 어려운 방법으 로 오타의 원인부터가 다른 종류의 오타 케이스이다. 하 Computational Linguistics. 286 - 293. 2000. 지만 이런 종류의 질의어는 대부분 인기 질의어나 의도 [7] Farooq Ahmad, Grzegorz Kondrak. Learning a 가 분명한 네비게이셔널 질의어(navigational queries)일 spelling error model from search query logs. Human 가능성이 매우 높다. 따라서 이를 해결하기 위해 미리 Language Technology Conference. Proceedings of the 편집된 예외사전을 구축해 활용하는 방법을 생각해 볼 conference on Human Language Technology and 수 있을 것이다. Empirical Methods in Natural Language Processing. 6. 결론 및 향후 연구과제 Vancouver, British Columbia, Canada. 955 - 962. 2005 본 논문에서는 지금까지 국내에서 많이 다뤄지지 않았 [8] Ristad, E. and Yianilos, P. Learning string edit 던 질의어 오타 패턴을 분석해보았다. 그리고 오타 패턴 distance. IEEE Transactions on Pattern Analysis and 분석 자료를 기반으로 만들어본 교체 확률 테이블을 로 Machine Intelligence. 20(5):522-532. 1997. 그를 기반으로 구축된 에러모델과 비교 작업을 했으며 둘 사이에 상당한 상관관계가 있음을 알 수 있었다. 이 [9] Boldi, P.; Bonchi, F.; Castillo, C.; Vigna, S. From 는 사용자들이 입력한 오타 패턴들이 변하게 되면 자동 'dango' to 'japanese cakes': Query Reformulation Models 적으로 쌓여진 로그를 기반으로 에러 모델을 지속적으로 and Patterns. Web Intelligence, IEEE Cs Press, Milan, 업데이트해 이 변화에 대해 지능적으로 대응을 할 수 있 Italy (2009) 다는 것을 의미한다. 또한 이를 기반으로 구축된 시스템 의 성능 테스트 결과 실제 서비스 중인 여타 다른 검색 [10] Brill, E. and Cucerzan, S. Spelling correction as an 서비스들과 동등하거나 좀 더 나은 결과를 보여주고 있 iterative process that exploits the collective knowledge 다는 것을 확인할 수 있었다. of web users. Proceedings of EMNLP 04. 293-300. 2004. 하지만 한국어 특유의 자유로운 띄어쓰기 형식 때문에 발생하는 후보사전 단어 부재의 문제 때문에, 오타 질의 [11] http://en.wikipedia.org/wiki/Spearman's_rank_correlation_c 어 자체에 대한 복합명사분해 작업이 필요하다는 것을 알 수 있었으며, 게다가 외래어로 인한 질의어 오타의 oefficient 경향이 많아 실제 구축된 모델로도 상당한 양의 질의어 [12] Jerry Ye, Jyh-Herng Chow, Jiang Chen, Zhaohui 오타 교정 실패를 보았다. 따라서 이를 위한 학습 속성 Zheng. Stochastic gradient boosted distributed decision 추가에 대한 연구도 향후 연구 과제로 적합할 거란 생각 trees. Conference on Information and Knowledge 을 해본다. Management. Proceeding of the 18th ACM conference 참고문헌 on Information and knowledge management. Hong Kong, China. Poster session 8: IR track. 2061-2064. 2009 [1] Kucich, K. Techniques for automatically correcting words in text. ACM Computing Surveys. 24(4):377-439. 1992 [2] Damerau, F. A technique for computer detection and correction of spelling errors. Communications of the ACM. 7(3):171-176. March 1964 [3] Wagner, R. and Fischer, M. The string to string correction problem. Journal of the ACM. 21(1):168-173. January 1974. [4] Kernighan, M., Church, K., and Gale, W. A spelling correction program based on a noisy channel model. Proceedings of COLING 1990. 205-210. 1990. [5] Ristad, E. and Yianilos, P. Learning string edit distance. IEEE Transactions on Pattern Analysis and Machine Intelligence. 20(5):522-532. 1997.