얼마전 야후 리서치 랩에서 논문 몇 편을 발표 했는데, 그 중에서 재미있는 논문에 대한 이야기를 하고자 한다.
“From ‘dango’ to ‘japanese cakes’: Query Reformulation Models and Patterns”
쿼리를 마이닝 한다. 이 이야기는 대부분의 경우 클릭 기반의 정보를 이용함을 의미한다. 하지만 위와 같은 주제의 논문은 사용자 세션을 기준으로 사용자의 쿼리 의도를 파악하는 마이닝 작업이다.
위 논문에서는 Query reformulation의 타입을 네 가지로 정의하고 이들을 구분하기 위한 분류기를 제작하는 방법을 이야기 하고 있다. 그럼 이들 네 가지는 어떤것일까?
위 그림은 논문 발표 ppt에 있던 내용을 캡쳐한 내용이다.
일반화(Generalization), 특수화(Specialization), 철자교정(Error Correction), 수평이동(Parallel Move)의 항목을 정의 하고 있다.
여기서 일반화는 우리가 “나이키 신발” 검색어를 “나이키”로 변경하는 것과 같은 리포뮬레이션을 의미한다. 그리고 특수화는 일반화 과정의 반대라 할 수 있다.
상식적으로 생각하더라도 일반적인 쿼리에서 특화된 쿼리로 사용자는 검색을 하게 될 것이라는 예상을 할 수 있는데, 물론 이 논문에서 검색 패턴을 조사한 결과 그렇게 나왔다.(60% 이상)
철자교정이야..뭐 다들 아실테고… 수평이동은 “나이키 신발”을 찾다가 어느 순간 “나이키 모자”를 찾는 경우를 예도 들 수 있겠다.
위와 같이 4가지 사용자 쿼리 패턴을 구분하고 이를 기반으로 통계를 내는 조사가 필요한 이유는… 이를 바로 사용자 쿼리 추천에 사용할 수 있기 때문이다.
국내에서는 다분히 쿼리 오타 수정만 해주는 아주 기초적인 것만 하고 있으나, 현재 야후 US페이지에서는 역시나 이런 논문이 나올 수 있었던 것처럼 Query suggestion을 잘 해주고 있음을 알 수 있다.
위 기능이 위 논문과 무관하지 않다는 것은 입력된 쿼리와 추천된 쿼리의 특징 그리고 비율을 보면 잘 알 수 있을거라 생각한다.
위에서 딱 보더라도 네가지 타입이 어떤 속성에 의해서 판가름 나게 되는지 한눈에 알 수 있다. 예를 들면 위에서 C타입에서 중요하게 쓰인 속성은 세션위치가 초반에 위치하며, 레벤스타인 거리(속칭 edit distance)가 3이하일때 스펠교정 타입이라고 분류한다는 것을 알 수 있다.
나름대로 작년 한해 일하면서 하던 일과 매우 관련이 많은 논문이라서 보는 내내 즐거웠다. 이제 다른 논문도 좀 찾아봐야 겠다.
ps. 위 캡쳐된 화면들은 이곳에서 찾아볼 수 있다.
Query Reformulation(쿼리 재구성)에 대한 이야기 by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.