윤석찬님 블로그에 소개된 소셜 검색엔진 Aardvark(아드박이라고 읽는군요;)에 관한 논문을 읽어 보았습니다. 아드박은 사용자의 질문에 대한 대답을 주는 문서를 찾는 대신에 가장 적절한 답변자를 찾아준다는 아이디어를 기반으로 합니다. 수십년간 지속되었으나 아직도 상용화되지 못한 자동 QA시스템 연구에 멋진 카운터를 먹인 셈이라고나 할까요. 

'Anatomy of a Large-Scale Social Search Engine'이라는 제목의 논문 역시 이론과 응용이 조화를 이룬 수작입니다. '문서'를 찾는 검색 모델을 '사람'을 찾는 용도로 변형시켰다는 측면에서 학문적으로 새로운 내용은 아니지만, 검색 모델의 구성요소를 요목조목 잘 설명하고 있습니다. 산업체 출신의 저자가 쓴 이유에선지 기술적인 내용을 쉽게 소개하고 있어, 검색 공부를 하시는 분들께 일독을 권합니다.

개괄적인 내용은 앞서 소개한 포스팅에 잘 소개되어 있으니, 여기서는 아드박의 검색 모델을 분석해볼까 합니다. 

검색 모델 분석
아드박의 검색 모델은 질문자(u_j)와 질문(q)에 대하여 잠재적인 답변자(u_i)를 랭킹하는 다음 수식으로 요약됩니다.


언뜻 복잡해보이는 이 수식은 사실 간단한 메시지를 담고 있습니다. 1) 질문자와 가장 가깝고 p(u_i | u_j) 2) 해당 질문을 가장 잘 아는 p(u_i | q) 답변자를 선택하라는 것입니다. 또한 질문에 대한 잠재 답변자의 지식을 평가하기 위해서 사용자가 어떤 주제(t)에 정통한지 p(u_i | t)와 질문이 어떤 주제에 해당하는지 p(t | q)를 고려하고 있습니다. 

이번에는 문서를 찾는 전통적인 검색 모델의 관점에서 위 검색 모델을 생각해 봅시다. 전통적 검색 모델에서는 문서의 품질 및 질의와의 관련성을 평가합니다. 또한 문서와 질의의 관련성을 평가하기 위해 질의를 다양한 토픽에 매핑시키는 기법이 사용됩니다. [1] 요약하면, 아드박의 검색 모델은 기존 검색 모델의 뼈대를 유지한 채 사용자 검색이라는 컨텍스트에 맞게 변형시킨 결과입니다. 

1) 사용자간의 친화성
사용자간의 친화성은 프로필 / 소셜 그래프 / 행동 패턴 등 다양한 기준(feature)에서 평가될 수 있으며, 실제 평가는 이 모든 요소를 적절한 Weight로 결합하여 이루어집니다. 재미있는 것은 행동 패턴 부분인데, 사용자가 얼마나 수다스러운지, 공손한지, 신속하게 응답하는지까지 고려합니다. 이는 단순히 유사한 관심사를 갖는 사용자를 매칭시키는 기존의 소셜 네트워크 검색 기법을 뛰어넘는 것이라고 볼 수 있습니다.

2) 답변자와 질문의 관련성
질문과 답변자의 관련성을 평가하기 위해서는 답변자의 프로필과 질문이 각각 어느 주제에 매칭되는지를 알아야 합니다. 우선 답변자의 프로필은 사용자의 정보 및 홈페이지 등을 통해 만들어지는데, 이 과정에서 해당 사용자의 소셜 네트워크가 해당 사용자의 프로필에 반영되는 점이 이채롭습니다. 즉, 내 친구들이 컴퓨터 전문가라면 나 역시 컴퓨터에 정통할 확률이 높아진다는 점을 고려하는 것입니다. 질문을 주제에 매칭하는 과정은 1)에서와 유사하게 Linear Combination을 활용하고 있습니다.

마치며
Aardbark은 인간과 기계를 한 시스템에서 조화시킨(Humans-in-the-loop) 좋은 사례입니다. 이처럼 사용자의 적극적인 참여를 유도하고, 이를 알고리즘과 결합하여 다시 사용자에게 고품질의 결과를 제공하는 어프로치는 최근 '핫'한 토픽인 것 같습니다. 아울러 전통적인 검색 모델이 이처럼 새로운 문제에 활용될 수 있다는 점이 주목할만합니다.  문서 대신에 '사람'을 검색한다는 아이디어 역시 이미 Expert Search라는 연구 분야에서 다루어진 바가 있지만, QA 서비스라는 문제에 적용시킨 점이 참신합니다. 구인/구직, Matchmaking(e.g. 듀오) 등에 폭넓게 활용될 수 있지 않을까 합니다. 

[1] 관련성 부분은 Relevance-based Language Model 이라는 논문에서 소개된 것과 거의 같습니다.