목차 : 
정보 검색 (IR) 연구의 최신 동향
4가지 측면에서 바라본 정보 검색 (IR) 연구의 흐름
검색을 위한 문서 모델링 - 문서에서 유용한 속성 추출하기
질의어 분석 - 사용자 질의를 남김없이 해부한다
랭킹 함수 (retrieval model) - 검색 엔진의 심장부
검색 결과 평가하기 - 평가 없이는 향상도 없다
검색 기술의 미래 - 
 
검색 연구자들은 어떤 생각을 하고 있을까 

검색을 한마디로 정의하자면 '질의어에 대하여 문서를 평가하는 일'입니다. 그리고 제대로 된 평가를 위해서는 평가의 항목이 잘 정의되어야 할 것입니다. 중요한 요소
(feature)
를 모두 포함시키고 각 항목의 값을 정확히 매겨야 할 것입니다. 문서 모델링은 이처럼 검색을 위해 유용한 속성을 찾고 그 값을 추정(estimate)하는 작업입니다. 다음으로 몇 가지 대표적인 속성을 알아보겠습니다.

Topicality (textual similarity)
검색엔진을 만든다면 가장 먼저 생각할 수 있는 것이 질의어를 많이 포함한 문서(TF)를 먼저 보여주는 것입니다. 실제 검색엔진이 질의어에 대한 관련성을 평가하는 방법 역시 유사합니다. 몇가지 더 추가되는 고려사항은, 같은 빈도라면 좀더 드문 단어를 포함한 문서를 높게 평가하고 (IDF), 문서간 길이가 다르다는 사실을 고려하여 점수를 보정한다는 정도입니다. 많이 사용되는 TF-IDF, BM25, Query-likelihood등이 모두 이러한 아이디어를 각기 다른 수학적 모델로 표현한 결과이며, 잘 튜닝된 경우 비슷한 성능을 내는 것으로 알려져 있습니다. 

문서가 구조화된 경우에는 여러 항목(field)가 존재하기 때문에, 위와 같은 관련성 평가를 각 항목별로 할 수 있습니다. 그 후에 항목별 점수를 가중치를 두어 (예: 제목은 본문보다 2배 중요하다) 결합하면 최종 점수를 계산할 수 있을 겁니다. 저의 첫번째 논문은 이에 한걸음 나아가 각 질의어 별로 각 항목에 다른 가중치를 두는 아이디어를 기반으로 합니다. 

또한 검색 성능(주로 recall)을 높이기 위해 문서에 추가적인 텍스트 요소를 포함시키는 기법 역시 활발한 연구가 되고 있습니다. 많이 알려진 Anchor Text (문서를 대상으로 한 링크에 포함된 텍스트) 이외에 문서에 대한 태그나 질의어를 아는 경우 이를 문서 자체에 포함시키면 검색 성능을 높일 수 있겠죠. 또한 클러스터링을 통해 이웃 문서를 찾고, 이렇게 찾은 이웃 문서의 단어를 각 문서에 포함시키면 성능이 높아진다는 연구 결과도 있습니다.

Authority (popularity)
내용상의 관련성이 비슷하다고 해도 품질이 높고 믿을만한 문서를 먼저 보여주어야 할 것입니다. 이제는 일반명사가 되버린 구글의 PageRank를 포함하여 이러한 문서의 품질을 평가하는 방법에는 여러 가지가 있습니다만, 대부분 (웹) 문서간의 연결관계를 분석하여 종합한 결과로 품질이 게산된다는 점입니다.  이에 대한 확장으로 특정 주제에 대해 권위있는 페이지를 계산해내는 Topical PageRank라는 기법도 개발되어 널리 쓰이고 있습니다. 

Recency
최근 많은 검색업계의 화두가 된 것이 실시간 검색(real-time search)입니다. 이는 속보성이 중요한 질의를 가려내어 실시간으로 업데이트되는 뉴스나 트윗을 보여주는 기법입니다. 실시간이 아니더라도 최근 만들어진 문서일수록 더 정확한 내용을 담고 있을 확률이 높습니다. 또한 자주 업데이트되는 페이지 역시 좋은 점수를 받습니다. 

마치며
지금까지 검색을 위해 문서를 평가하는데 유용한 속성을 알아보았습니다. 물론 이외에도 도메인에 따라 다양한 속성이 존재하며, 상업용 웹
 검색엔진에서는 수백 수천개의 속성을 사용한다고 합니다. 사람이라면 순간적 직관으로 판단할 수 있는 일이겠지만, 그 정도로 복잡한 시스템의 
검색 결과에도 오류가 많은 것을 보면 인공지능을 만드는 것이 어렵다는 것을 알 수 있습니다. 

또한 속성이 개수가 많아질수록 속성간의 상대적 중요성을 사람의 힘으로 판단하기 어렵습니다. 따라서 최근에는 주로 사용자 클릭 데이터를 바탕으로 속성의 가중치를 계산해주는 기계학습 기법(Learning to Rank)이 각광받고 있습니다. 이런 연구에 널리 사용되는 데이터셋을 소개한 논문에는 검색을 위해 얼마나 다양한 속성이 사용될 수 있는지가 잘 드러나 있습니다. 

댓글을 달아 주세요

  1. 요소들을 잘 정리해주셨네요. 재미있게 읽었습니다.
    혹시 문서 품질 관련해서, 링크처럼 외부적인 요소 말고 글 내용만 가지고 품질을 평가하려는 시도는 없었는지 궁금합니다. 쉽지 않을 것 같기는 하지만.. 어디서 보니까 가독성을 수치화하는 연구가 있었던 것 같기도 하고.. 혹시 소개해주실 만한 게 있으면 부탁드립니다.

    • 구글에서 'Predicting reading difficulty with statistical language models'라고 검색해보시면 나오는 CMU 논문이 있습니다. 하지만, 잘 되지도 않거니와 (언어별 튜닝도 필요하겠죠) 가독성이 높다고 꼭 좋은 글은 아닌 관계로 잘 쓰지는 않는 것 같습니다.

      글 자체의 품질에 대한 지표로는 클릭이나 북마크(delicious) 횟수 등으로 계산되는 popularity metric이 주종을 이루는 것 같네요.

    • 그렇군요. 저도 딱히 가독성을 중요한 요소로 생각한 것은 아니고 그냥 예로 든 것이었어요. 답변 고맙습니다. ^^

  2. 안녕, 진영.
    뭐 방문자들이 댓글을 잘 안 단다고 하더니.. 꽤 보이는데..
    내 생각에 너처럼 전문적인 블로그를 운영하면서 이 정도 댓글에 방문자수면 나쁘지 않다고 생각해.
    나도 사실 전공 관려해서 블로그를 운영하려고 만들었는데.. 쓰던 포스팅들이 산으로 가버려서..
    다 지워버리고 다시 시작하려고 하는데.. 막상.. 어디서부터 글을 쓰기 시작해야될지를 모르겠어서.. 한참 망설이고 있지.
    아 참.. 내 전공 관련 블로그는..
    http://robots.tistory.com
    인데.. 아직은 포스팅이 하나도 없어. 지금 하나 써보려고 하는데..
    뭐.. 나중에 한 번 읽어봐바. 별 액기스는 없을 것 같지만 말이야.

    • 로봇 관련 블로그 괜챃을 것 같아. 관련 분야 연구자들, 그리고 관심있는 일반인(나)도 재미있게 놀 수 있는 공간 어떨까?

      그리고, 댓글 개수보다는 좀더 활발한 토론을 유도할 수 있는 방법이 없을까 고민하는 중이야. ^^

    • 활발한 토론.. ㅡ_ㅡ;;
      가능할까? @_@