목차 : 
질의어 분석 - 하나를 보고 열을 찾아라
랭킹 함수 (retrieval model) - 검색 엔진의 심장부
검색 결과 평가하기 - 평가 없이는 향상도 없다
검색 기술의 미래 - 
  
검색 연구자들은 어떤 생각을 하고 있을까 

이번 글의 주제는 질의어 분석입니다.
검색을 '문제 해결'에 비유한다면 질의어 분석은 문제를 정확히 파악하는 것인데, 문제 파악이 제대로 되어야 올바른 답안(문서)를 고를 수 있다는 것은 자명합니다. 특히 
사용자의 질의어는 대부분 불충분하며 (평균 2~3단어) 오류를 포함하는 경우도 많기에 효과적인 질의어 분석은 검색 품질에 결정적인 영향을 끼칩니다. 

구글이나 야후, 빙과 같은 검색 엔진들도 이를 잘 알기에 사용자의 질의어를 고쳐주거나(spell correction), 더 나은 대안을 제시하거나(query suggestion) 합니다. 이를 구현하기 위해 과거에 대부분 규칙 기반(rule-based)의 처리에 의존했던 것이, 막대한 양의 사용자 데이터(query log)를 활용한 통계적인 기법으로 대체되고 있습니다. 예컨데 과거에 고정된 규칙이나 단어 목록을 사용하던 어근 분석(stemming)이나 불용어 제거(stopword removal)에도 데이터에 기반하여 검색 성능을 최적화하는 연구가 진행되고 있습니다. 

질의어 분석이라는 주제는 
저희 연구실에서 한학기동안 세미나를 했을 정도로 방대하기에, 이번 글에서는 검색엔진이 사용자의 질의를 받아 처리하는 과정을 단계별로 소개하고, 그 과정에서 질의어 분석의 주요 이슈를 소개하고자 합니다. 아래의 네 단계는 세미나 내용을 바탕으로 제가 구성한 것입을 밝힙니다. 

(1) 분석을 위한 추가적인 단서 찾기 (augmentation)

질의어 분석을 위해 가장 먼저 해야하는 일은 분
석을 위한 추가적인 단서를 찾는 것입니다. 사용자가 입력하는 질의는 보통 짧지만 사용자의 프로필이나 현재 위치, 혹은 과거의 질의 목록을 안다면 분석에 도움을 받을 수 있는 경우가 많습니다. 흔히 말하는 검색 결과의 개인화는 이 단계에서 이루어지는 경우가 많습니다. 

(2) 유형별로 분류하기 (classification)

단계 (1)을 거쳐 확장된 질의는 추가적인 처리를 거치기 전에 유형별로 분류되는 것이 보통입니다. 분류의 기준은 매우 다양하겠지만, 보통 정보를 찾는지 (informational) 웹사이트를 찾는지(navigational), 뉴스 / 지역 / 쇼핑 등 특정 분야의 컨텐츠를 원하는지(vertical intent) 등을 판별해 내는 것이 목적입니다. 질의어에 대한 세세한 처리를 거치기 전에 질의어의 유형을 파악함으로써 유형에 따른 적절한 처리가 가능해집니다.

(3) 질의 해석하기 (interpretation)

그 다음 순서는 질의를 세부적으로 해석하는 일입니다. 질의에서 고유명사를 찾아내거나 
(named entity recognition)
, 잘게 나누거나(segmentation), 오류를 수정하는 일(spell correction)이 모두 이 단계에서 이루어집니다. 앞서 언급한 
어근 분석(stemming)이나 불용어 제거(stopword removal) 역시 이에 해당합니다. 
단계 (1)과 (2)에서 파악된 추가적인 단서와 유형은 이 단계에서 정확한 해석을 하는데 큰 도움이 됩니다. 예컨데 쇼핑에 대한 질의로 판명된 경우, 알려진 제품명과 대조하는 방법으로 고유명사를 찾아낼 수 있을 것입니다. 

(4) 질의 다듬기 (refinement)

앞선 단계에서 질의 자체의 의도에 대한 분석에 초점을 맞추었다면, 마지막 단계에서는 분석 결과를 바탕으로 질의를 다듬고 개선합니다. 추가적인 질의어를 더하거나 (expansion) 쓸데없는 질의어를 빼기도 하고 (reduction),  질의어에 중요도에 따라 가중치를 두기도 합니다 (weighting). 당연한 말이지만 적절한 변형을 위해서는 질의 자체에 대한 정확한 분석이 선행되어야 합니다. 이처럼 변형된 질의는 사용자의 원래 질의를 대체하는 것이 보통이지만, 경우에 따라서는 사용자에게 제안되기도(suggestion) 합니다. 

마치며
이번 글에서는 검색 엔진의 질의어 분석 과정을 처리 순서에 따라 알아 보았습니다. 사용자가 입력하는 몇 안되는 단어를 가지고 사용자의 의도를 파악하고 이를 더욱 효과적인 질의로 변형하는 과정은 이처럼 복잡 다단합니다. 또한 위에서 설명한 단계들간에 밀접한 연관성이 있기 때문에, 이 모두를 아우르는 통합적인 모델의 개발이 최근의 연구 초점이라는 점도 주목할만 합니다. 좀더 궁금하신 내용을 답글로 알려주시면 감사하겠습니다.

참고자료
Query Evolution by W. Bruce Croft : 질의어 분석에 대한 저희 지도교수님의 발표자료입니다.

최선을 다하지 않는 것이 최선이다?

Essay : 2010. 3. 6. 12:15   By LiFiDeA
그야말로 all-out effort를 쏟아넣은 한주를 보낸 금요일 밤, 갑자기 든 생각입니다. 성실한 민족성으로 유명한 우리나라에서 '최선을 다한다'는 자세는 굉장한 미덕처럼 되어 있지만, 과연 최선을 다하는 것이 항상 바람직한 일일까요?

1. 냉정함을 유지하기가 어렵다.

최선을 다한다는 것은 그만큼 자신을 그 일과 동화(identify)시킨다는 일입니다. 그러다 보면 냉정함을 유지하기가 어렵습니다. 그런데 세상의 많은 일은 열정 만큼이나 냉정함을 필요로 합니다. 따라서, 최선을 다하려다가 오히려 일을 그르치는 수가 있습니다. 

2. 큰 그림을 놓치게 된다.

몰입도가 높을수록 한발짝 떨어져서 전체를 조망하기는 어렵습니다. 그러다보면 일이 잘못된 방향으로 나아가는 경우가 많고, 그 사실을 깨닫기도 어려워집니다. 몇시간 열심히 코딩한 것을 설계상의 실수로 다 날리게 되었을 때의 느낌, 아시나요?

3. 초반에 지쳐 쓰러지게 된다.

가치있는 일일수록 시간이 걸리고 불확실성이 큽니다. 살다보면 100만큼의 노력으로 된다고 생각했던 일에 두세배의 노력이 드는 경우도많습니다. 처음부터 최선을 다하다보면 계속 그만큼의 에너지를 쏟을수도 없을 것이고, 중반쯤 되서 포기하고 싶어집니다. 그러다보면 아무것도 이룰 수 없겠죠.

4. 삶의 균형을 잃기 쉽다.

갈수록 개인이 담당해야 할 Role이 많아지는 세상입니다. 그런데 한가지 일에 몰입하다보면 다른 일에 정신을 쏟기는 그만큼 어려워집니다. 최선을 다한 일이 잘못된 경우, 그만큼 상처도 큽니다. 한가지만 잘못되어도 모두 망가지는 것이 삶이니, 이 역시 최선을 다하는 데에 따른 부작용이 아닐까 합니다. 

5. 스스로에게 뭔가를 강요하게 된다.

별로 끌리지 않는 일인데도 '최선을 다한다'는 생각에 열심히 할 때가 있습니다. 영어에서는 그런 종류의 성실함을 drive라고 칭하고 마음에서 우러난 열정을 passion이라고 하는데 그렇게 강요된 성실함은 오래 가지도 않을 뿐더러 열정의 싹을 잘라버리는 경우가 많은 것 같습니다. 

----

이렇게 적어놓고 나니 말끝마다 'cool'을 입에 달고사는 미국 사람들이 갑자기 이해가 가기도 합니다. 열정이 배제된 삶은 마치 흑백 영상처럼 무미건조하겠지만, 열정이라는 불꽃을 통제하지 못한다면 큰 상처를 입게 될 테니까요. 매사에 최선을 다하기도 쉬운 일이 아닌데, 그렇게 해도 이렇게 함정이 많으니 노래 가사처럼 삶은 참 만만치 않군요. 하지만, 적어도 로봇이 이런 복잡미묘한 판단을 내린다는 것은 당분간 불가능할테니, 아직 인간의 존재 자체를 위협받을 일은 없다는 사실에 안도해도 될까요?
이번 달 Wired에 실린 구글의 검색 품질에 관한 기사입니다. 수많은 도전에도 불구하고 구글의 검색 품질은 따라잡기 힘들 것이라고 전망하고 있군요. 그리고 이를 뒷받침하는 핵심 역량은 유연성이라고 지적합니다. 경쟁사에서 새로운 기술을 선보여도 구글은 곧 이를 자사의 검색 알고리즘에 통합시킬 수 있을 테니까요. 저자는 이렇게 결론짓고 있습니다.
Still, even if there is such a shift, Google’s algorithms will probably be able to incorporate that, too. That’s why Google is such a fearsome competitor; it has built a machine nimble enough to absorb almost any approach that threatens it — all while returning high-quality results that its competitors can’t match.
물론 이는 말처럼 쉬운 일이 아닙니다. 수백개의 속성(feature)의 조합으로 이루어지는 검색 알고리즘을 잘못 고쳤다가는 그동안 쌓아올린 향상이 모두 무너질 수도 있기 때문이죠. 말하자면 검색은 균형의 예술(balancing act)인 것입니다. 구글의 검색 책임자인 Amit Sighal의 말을 들어봅시다.
Throughout its history, Google has devised ways of adding more signals, all without disrupting its users’ core experience. Every couple of years there’s a major change in the system — sort of equivalent to a new version of Windows — that’s a big deal in Mountain View but not discussed publicly. “Our job is to basically change the engines on a plane that is flying at 1,000 kilometers an hour, 30,000 feet above Earth,” Singhal says.
운항중인 항공기의 엔진을 고치는 일이라 -- 실감나는 비유입니다. 그리고 이정도 규모와 복잡성을 지닌 시스템을 튜닝하는 것은 과학에 가깝습니다. 더이상 '감'에 의존하는 것이 불가능하기 때문입니다. 이를 잘 아는 구글은 입력되는 모든 쿼리를 하나 이상의 실험을 위해 활용한다고 합니다.
 Every time engineers want to test a tweak, they run the new algorithm on a tiny percentage of random users, letting the rest of the site’s searchers serve as a massive control group. There are so many changes to measure that Google has discarded the traditional scientific nostrum that only one experiment should be conducted at a time. “On most Google queries, you’re actually in multiple control or experimental groups simultaneously,” says search quality engineer Patrick Riley.
인터넷 검색과 같은 Winner-takes-all Market에서 독보적인 1위를 추격하는 것은 어려운 일입니다. 특히, 이처럼 선두가 방심하고 있지 않다면 더욱 그렇습니다. 흔히 구글 검색의 품질은 PageRank에 기인한 것으로 알려져 있지만, 그들의 진짜 경쟁력은 끊임없이 바뀌는 환경에 적응할 수 있는 능력, 이를 뒷받침하는 실험 인프라와 노하우일 것입니다.

또한, 이 기사는 지난 10년간 구글이 선보인 검색 기술상의 혁신과 구글 검색이 경쟁사에 비해 나은 점을 구체적인 질의(query)를 들어 설명하고 있습니다. 예컨데, 구글은 'new york', 'new york times', 'new york times square'가 모두 다른 대상을 가리키는 질의라는 사실을 알아냅니다. 기사를 좀더 읽어보시면, 구글 역시 문서보다는 사용자의 질의를 좀더 잘 이해하는 쪽에 연구 초점을 맞추고 있다는 것을 알 수 있습니다. 예전에 이곳에 올린 검색 연구의 흐름에 관한 글과 비교해 보시면 흥미로울 것 같습니다. 

원본

한국 인터넷은 술자리다

검색산업동향 : 2010. 2. 23. 13:07   By LiFiDeA
주로 연구 목적으로 인터넷을 사용하다가 최근 블로깅을 재개하면서 우리나라 인터넷을 많이 사용하게 되었습니다. 처음에는 단지 제가 익숙하던 인터넷과 많이 다르다는 느낌이었지만, 점차 그 차이가 명확하게 다가왔습니다. 지나친 일반화의 오류를 감수하더라도 이렇게 요약해 보렵니다. 
(미국의) Internet이 광장이라면 우리나라의 인터넷은 술자리입니다. 
광장은 열린 공간에서 모든 사람이 자유롭게 서로를 바라보며 의사를 교환하는 상황을 가리킵니다. 술자리는 특정 호스트에 의해 제공되는 닫힌 공간에서 이루어지는 제한된 참가자들간의 소통을 상징합니다. 물론 광장에서 나누는 대화의 내용은 술자리의 그것과는 사뭇 다르리라 짐작할 수 있습니다. 

똑같은 TCP/IP망에 HTTP프로토콜을 사용하는 인터넷의 특성이 이렇게 다른 데에는 여러 원인이 있을 것입니다. 물론 근본적으로 문화가 다릅니다. 미국은 개인 중심의 사회이며, 모임의 장소도 주로 집인 경우가 많습니다. 하지만 한국은 아직도 개인에 대한 집단의 영향략이 강한 곳입니다. 게다가 (저를 포함하여) 우리나라 사람들은 '모임'을 참 좋아합니다. '자기'가 중심이 되는 블로그보다는 싸이월드, 포탈 게시판이 좀더 성향에 맞을지도 모르겠습니다. 

하지만, 우리나라 인터넷의 특성을 규정하는 데에는 포탈의 역할을 빼놓을 수 없습니다. 아래 표에 간단히 정리한대로 포탈은 인터넷의 주도권을 쥐고 (우리나라에서 인터넷을 한다는 것은 네이버나 다음을 한다는 것과 같습니다) 개인이 생산한 컨텐츠를 편집하고 출판합니다. 그 과정에서 운영방침에 맞지 않는 컨텐츠가 걸러지기도 하고 랭킹도 결정됩니다. 개인이 블로그나 포럼 등에 올린 컨텐츠가 랭킹 알고리즘에 의해 서열화되는 미국과는 매우 다른 모델입니다.

  인터넷 Internet 
주도권 네이버 / 다음 / 기타 분야별 포탈 (e.g. 해커스) 구글 /  블로그
컨텐츠 생산 개인이 생산 개인이 생산
컨텐츠 유통 포탈이 편집 & 출판  개인이 편집 & 출판 
컨텐츠 성격 수다 / 인신공격이 주 정보 교환 / 토론이 주
요약 닫힌 플렛폼 (Splinternet)  / 편집자 중심 열린 플렛폼 / 알고리즘 중심 

재미있는 것은 이런 컨텐츠 유통 과정의 차이가 컨텐츠의 성격에 미치는 영향입니다. 여러번 사회문제가 되었을 정도로 우리나라 인터넷(주로 포탈)에서 생산/소비되는 컨텐츠의 질에는 많은 문제가 있습니다. 건설적인 토론보다는 수다와 인신공격이 주를 이룹니다. 반면, Internet의 컨텐츠는 정보 및 의견 교환이 주를 이룹니다. 술자리와 광장이라는 비유가 여기서도 유효합니다. 반면, 우리나라 인터넷에서도 (주로 포탈 밖) 블로그의 컨텐츠는 품질면에서 외국에 견줄만 합니다. 

마셜 멕루한의 말을 빌지 않더라도 미디어가 메시지에 미치는 영향은 지대합니다. 다음 아고라등의 포탈에서는 제한된 카테고리(교육 / 정치 / 문화 / 등등)에 나이 / 계층 구별도 없이 전 국민이 여과되지 않은 의견을 쏟아내고, 이는 다시 답글이라는 형태로 확대재생산됩니다. 많은 서비스에 '인기글' 시스템이 있지만, 이 역시 다양한 글을 골고루 노출시키는 알고리즘의 부재로 일단 인기글에 올라간 글은 품질에 관계없이 계속 남아있는 폐해가 있습니다. 결과적으로 대부분의 포탈 게시판은 대부분 잡답 수준의 컨텐츠로 채워지고 있으며, 좋은 글이 있어도 발견되기 어려운 탓에 정보원으로서의 가치가 낮습니다.

포탈 측에서는 '적어도 사용자들이 모여 소통할 공간'을 제공하지 않았느냐고 항변할지도 모릅니다. 하지만, 이미 사회의 주도적인 커뮤니케이션 채널이 된 인터넷을 장악하고 있는 주체로서, 건전한 논의를 유도해야할 사회적 책임을 면하기 어렵습니다. 외부 검색엔진에 대한 컨텐츠 비공개 / 임의적인 서비스 중단 및 변경 / 공익보다는 자사의 이익을 위한 편집권 남용 등으로 포탈은 많은 비난에 직면하고 있습니다.

구글이 'Don't be evil'이라는 모토를 사용하는 것은 자사의 서비스가 가진 사회적 영향력을 남용하지 않겠다는 의지의 표현입니다. 포탈이 단기적인 트레픽 유지에 급급하는 대신, 더 넓은 안목에서 사용자가 좋은 컨텐츠를 만들고 폭넓게 공유할 수 있는 플렛폼을 제공한다면 장기적으로는 영리 추구과 사회적인 책임이라는 두마리 토끼를 잡을 수 있을 것입니다. 너무 순진한 생각일까요?
윤석찬님 블로그에 소개된 소셜 검색엔진 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 이라는 논문에서 소개된 것과 거의 같습니다. 

며칠 전 인턴 지원에 대한 언급을 했었는데, 여러 회사와 8번의 인터뷰 끝에 최근 Microsoft Research Redmond에서 인턴을 하기로 결정하였습니다. Bing Search Engine의 검색 모델을 담당하는 팀이며, 제가 맡을 프로젝트는 최근 많은 이슈가 되고 있는 실시간 검색(real-time search)의 성능을 높이는 일입니다. 

미국 대학원 박사과정의 리서치 인턴을 간단히 소개하자면, 기업 연구소에서 주어진 기한내에 (주로 12주) 팀의 일원이 되어 연구 프로젝트를 완수하는 일입니다. 실제 연구원들과 동등한 자격으로 일을 하며, 대체로 결과를 퍼블리시하는 것도 가능하기 때문에 대학원생 입장에서는 상당히 매력적인 조건입니다. 물론 일반 기업에서와 마찬가지로 향후 입사에도 도움이 됩니다. 

인턴 선발 과정은 시작부터 마무리까지 실제 채용과정의 축소판이라고 할만하며, 결과에 관계 없이 참으로 많은 것을 배울 수 있기 때문에 이공계 학과에 유학 중이신 분들은 꼭 해보실만한 일입니다. 기업 연구소에서 어떤 사람을 원하고, 그런 사람을 가려내기 위해 어떤 잣대를 사용하는지 느끼실 수 있기 때문입니다. 

또한 대부분 박사과정 이후에 학교냐 회사냐의 고민을 하게 되는데, 인턴 과정을 통해 '회사'를 느끼고 나면 좀더 균형있는 판단이 가능할 것입니다. 학교에만 있다 보면 웬지 기업 연구소에 끌리게 마련인데, 주변에서 인턴 생활 이후 기업 연구소에 대한 환상을 깨고 학계쪽으로 진로를 확정하는 경우도 자주 보았습니다. 앞으로 인턴 지원을 준비하는 분들에게 도움이 될 수 있도록 전형 과정을 간단히 정리해 보았습니다.

서류 전형
인턴 지원을 공식적으로 시작하기 위해서는 주로 온라인 폼을 작성하게 됩니다. 많은 경우 다른 채용 및 장학급 지원과 마찬가지로 교수님의 추천서가 필요합니다. 여기서는 연구 실적이 주된 평가기준이 되겠지만, 역시 많은 경우 내부 인력의 추천을 통하여 인터뷰 대상자가 선정됩니다. 또한 연구 계획서를 작성하게 되는데, 자신의 연구 경험과 관심사를 요약하면서도, 관심사를 지나치게 specific하게 쓰지는 않는 것이 요령입니다. 예컨데 저는 'All areas of information retrieval, with recent work on personalized search, desktop search, search with semi-structured data, and search over multiple document types. '이라고 적었습니다. 

인터뷰
구글이나 마이크로소프트의 인터뷰는 난해하기로 이름이 높습니다. 구글은 9단계의 인터뷰를 하는 것으로 알려져 있고, 주로 문제해결력을 측정하는 마이크로소프트의 인터뷰 질문은 으로도 나와 있죠.  이번에도 재미있는 질문을 많이 받았는데, 그 중 기억에 남는 몇가지를 저의 답변과 함께 소개하겠습니다. 
질문 : 검색 엔진의 인덱스 크기를 어떻게 측정하겠습니까?

답변 : 검색 엔진에 질의를 던져 리턴되는 문서의 개수를 측정한다. 이때, 질의어로는 'the'와 같은 모든 글에 쓰이는 단어(stopword)가 좋다. 그 이유는 가장 많은 문서를 포함시킬 수 있으며, 특정 주제에 관한 글만 샘플링하는 것을 막을 수 있기 때문이다.  즉, 통계에서 말하는 unbiased estimator가 되는 것이다.

질문 : 제한된(constant) 공간의 메모리를 가지고 임의의 배열을 랜덤하게 섞는 방법은 무엇입니까?

답변 : 링크로 대신합니다.
또한, 각 그룹에서 진행되는 프로젝트를 간단히 설명하고, "당신이라면 어떻게 하겠습니까"를 묻는 질문도 자주 받았습니다. 이런 질문에 대답하기 위해서는 평소에 논문을 읽으며 '나라면 이 문제를 어떻게 풀었을까' 하고 생각해 보는 연습이 유용할 것 같습니다. 마지막으로, 대부분 인터뷰에서 Massively Parallel Processing (Hadoop / MapReduce)에 대한 경험을 물었는데, 그만큼 이 분야 종사자들에게는 필수 소양이 된 듯 합니다. 

마치며
예전에 컨퍼런스를 다녀와서 새로운 세상에 눈을 뜬 느낌이었는데, 이번 인턴 역시 색다른 경험이 될 것 같습니다. 그동안 검색 연구를 하면서 실제 사용자 데이터를 다루는 환경에 대한 갈증이 있었는데, 이번에 해소하고 돌아오려고 합니다. 레드몬드 인근 지역은 여름 날씨가 참 좋다고 하더군요. 인턴 생활에 대해서도 회사 규정에 저촉되지 않는 범위에서 종종 포스팅하겠습니다.

추가 : 마이크로소프트 면접에 대해 잘 정리된 자료가 있어 소개합니다. 

검색(IR) 연구자의 경쟁력은?

검색연구동향 : 2010. 2. 10. 12:40   By LiFiDeA
최근에 서머 인턴직을 구하고 있습니다. 가뜩이나 불경기에 MS와 야후의 웹 검색 통합 건으로 말미암아 검색 연구자로서 구직에 좋은 시기는 아닙니다. 어쨌든 몇 번의 전화 인터뷰를 보면서 느끼는 점이 많습니다. 연구자로서 발전하고 논문을 쓰는 것도 중요하지만, 언젠가는 구인 시장(Job Market)에 나가는 '상품'으로서 최대한 가치를 높여야 한다는 생각이 들었습니다. 전문가로서 스스로의 시장 가치를 높여야 좋은 환경에서 연구를 계속할 수 있을 것이기 때문입니다.

그 와중에 생각하게 된 것이 검색(Information Retrieval) 연구자로서의 경쟁력이었습니다. 구직시장에서 검색 연구를 했다는 것이 어떤 평가를 받는지, 검색 연구자로서 최고의 경쟁력을 갖추기 위해 어떤 노력을 해야 할까 생각해 보았습니다. 나중에 어떤 연구를 하던간에 제가 학문적 기초를 닦은 분야는 검색 연구이기 때문입니다. 대학 때 복수전공했던 경영학이 남겨준 문제의식인지도 모르겠습니다. 

사실 검색 연구의 주된 내용은 (주로 질의로 표현되는) 사용자의 정보욕구에 맞는 문서(혹은 다른 대상)를 찾는 모델을 만들고 평가하는 것인데, '사용자'에 초점을 맞추고 있으면서도 실제 대부분의 시간을 통계나 기계학습 기법을 학습하고 구현하는데 보내는게 보통입니다. 이처럼 학제적인 성격이 강한 까닭에, 검색학을 전통적인 학문의 분류에 넣기는 쉽지 않습니다.

이런 어중간한 포지션을 가진 경우 위험성은 어느 한 분야에서도 전문가 대접을 받기가 어렵다는 점입니다. 인간에 대한 깊이있는 이해가 필요한 사용자 연구나, 탄탄한 수학적 기초를 요구하는 기계학습이나 한 우물만 파도 깊이를 얻기 힘든 분야이기 때문입니다. 그리고 회사나 학교에서나 전문성이 뚜렸한 인재를 원하는 것이 현실입니다.

하지만, 두가지를 겸비했다는 것이 장점이 될 때도 있습니다. 전체를 아우르는 폭넓은 시야나, 한쪽 분야의 전문성을 다른 분야에 적용하는 데서 나오는 문제해결력 등은 두가지 이상의 전문성을 갖출 때 나옵니다. 대부분의 검색 연구가 사용자의 행동을 모델링하고 이를 검색 모델에 반영한 결과물이라는 점은, 검색 연구자가 갖는 유니크한 포지션이 갖는 장점을 대변합니다. 사용자 연구 전문가라면 문제의식을, 기계학습 전문가라면 해결책을 갖추었겠지만, 검색 연구자는 두가지를 모두 갖추어야 하기 때문입니다.

또한, PageRank로 대표되는 다양한 속성(feature)들, Language Modeling을 포함한 다양한 검색 모델들, TREC으로 대표되는 다양한 평가 데이터와 기법은 검색 연구가 쌓아올린 고유 영역입니다. 계속 쏟아져나오는 새로운 서비스와 사용자 환경이 새로운 검색 및 평가 기법을 필요로한다는 것을 고려하면, 앞으로도 검색이라는 연구분야의 장래는 밝다고 생각합니다.

연구를 하는 분이라면, 아니 어떤 식으로든 지적 자산을 쌓아가는 지식 근로자라면 한번쯤 생각해 볼만한 일입니다. 자신이 하는 일이 드넓은 학문 (혹은 산업) 세계에서 갖는 위치를 정확히 아는 것은 앞으로의 진로에 대한 좀더 현명한 판단을 가능하게 합니다. 최근 후배의 블로그에서 읽은 HCI(Human-computer Interaction) 연구자의 포지셔닝이라는 글을 소개하는 것으로 마칠까 합니다. 

목차 : 
정보 검색 (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)이 각광받고 있습니다. 이런 연구에 널리 사용되는 데이터셋을 소개한 논문에는 검색을 위해 얼마나 다양한 속성이 사용될 수 있는지가 잘 드러나 있습니다. 

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

오늘은 , 최근의 연구 동향을 문서 모델(document model), 질의어 모델(query model), 검색 모델(retrieval model), 그리고 평가(evaluation)의 순으로 정리해보려 합니다. 전체를 아우르는 큰 그림은 지난 포스트에 소개한 바가 있습니다. 

(1) Document Modeling
문서 모델링은 문서에서 검색에 도움이 되는 속성(feature)을 뽑아 인덱스를 생성하는 단계입니다. 잘 알려진 것으로는 단어의 빈도에 근거하여 관련성(topicality)을 평가하는 전통적인 속성(TF-IDF, BM25), 그리고 웹 문서의 연결 관계(link structure)를 분석하여 가장 권위있는 문서를 뽑아주는 속성(PageRankHITS) 등이 있습니다. 

전통적으로 가장 많은 연구가 집중되어온 영역이지만 최근들어 새로운 속성(feature)을 찾는 일은 조금씩 한계에 부딛히고 있는 듯 합니다. 하지만 Anchor Text나 태그 등 부가적인 메타데이터를 활용하거나, 클러스터링 등을 통해 발견한 인접 문서와의 유사성을 이용하여 문서를 좀더 정확하게 평가하려는 노력은 계속되고 있습니다. 

(2) Query Analysis
다음은 사용자가 입력한 질의를 분석하는 단계입니다. 여기에는 질의어 확장(expansion), 교체(substitution), 어근 분석(stemming), 철자 교정(spell correction), 분리(segmentation), 가중치 부여(weighting) 등 질의어 자체를 개선 하거나 좀더 세분화된 처리를 위해 질의어의 유형을 분류(classification)하는 작업이 포함됩니다. 사용자의 질의는 (특히 웹 검색) 보통 짧은데다가 애매하거나 오류를 포함한 경우가 많아, 잘의어 분석만 잘 해도 검색 성능을 획기적으로 올릴 수 있습니다.

특히 기존 연구 (e.g. 문서 모델링)가 한계에 부딛히고, 대량으로 주어지는 Query Log의 활용이 새로운 연구 토픽으로 각광받으면서 최근 검색 연구에서 가장 'hot'한 분야라고 할 수 있습니다. 최근 구글과 야후 등이 경쟁하듯 내놓고 있는 개인화 검색 역시, 사용자 프로필에서 추출한 단어를 검색어로 사용한다는 측면에서 주로 이쪽에 분류됩니다. 검색 개인화에 대해서는 좀더 자세히 다루겠습니다.

(3) Retrieval Model
검색 모델은 문서 모델링(1)에서 추출한 속성과 질의어 모델링(2)에서 분석된 질의어를 기반으로 각 문서의 실제 점수를 계산하는 공식(ranking formula)을 가리킵니다. 전통적인 의미의 검색 모델은 대부분 질의어와 문서의 유의성(textual similarity)에 기반한 것이 많았는데, Vector Space Model, Probabilistic Model (BM25), Language Model등이 모두 여기에 포함됩니다. 

하지만 2003년 이후, 검색의 기준이 되는 속성에 문서의 최신성, 품질 등 많은 요소가 추가되고, 검색 품질에 대한 평가를 자동화할 수 있는 클릭 로그(click-through log)의 사용이 보편화되면서 머신러닝 기법을 검색에 도입하는 연구가 대세를 이루고 있으며 이를 통칭하여 랭킹 학습(Rank-learning / Learning to Rank) 기법이라고 합니다. RankNet, RankSVM, RankBoost등이 이에 포함됩니다.

이와 함께 최근 눈에 띄는 경향은 검색 결과의 다양성(diversity)을 높이려는 시도입니다. 과거에는 문서 각각을 평가하여 좋은 문서가 Top에 있으면 무조건 좋은 것으로 간주하였지만, 비슷한 혹은 중복된 문서를 여러 개 보여주는 것은 검색 품질에 악영향을 끼치기 때문에, 이를 검색 모델 및 평가에 반영하려는 것입니다. 

(4) Evaluation
검색은 '평가의 과학'이라는 말이 있을 정도로 검색 결과를 정확하고 효율적으로 평가하는 일은 검색 연구의 주된 축이었습니다. 전통적인 Precision / Recall / Mean Average Precision 이외에도 검색 결과를 정확히 반영하는 평가 지표(metric)을 만드려는 노력이 계속되어 문서의 품질을 평가 결과에 좀더 정확히 반영할 수 있는 NDCG등 새로운 방법이 각광받게 되었습니다. 

또한 검색 결과의 평가를 위해서는 문서 각각의 적합성을 사람이 직접 평가해야 되기 때문에, 이 과정에서 필요한 문서의 숫자를 줄이려는 연구도 있었습니다. 또한 단순히 Top 10에 몇개의 relevant한 문서가 있다는 식이 아니라, 실제 사용자의 작업 효율을 높여주는 정도를 평가 척도에 반영하려는 노력도 있어 왔습니다.

기계적인 검색에서 인간적인
 검색으로
몇 단어를 던져주면 딱 맞는 문서를 찾아 주는 마술같은 검색 엔진의 이면에는 이렇게 복잡다단한 노력이 숨어 있습니다. 위에서 여러가지 흐름을 소개했지만, 요약하자면 점차 '사용자' 중심의 연구를 하게 되었다고 볼 수 있을 것 같습니다. 단순히 고정한 함수를 계산하여 가장 높은 점수순으로 문서를 출력하는 것이 아니라, 사용자에게 실제로 유의미한 결과를 제공할 수 있는 검색 모델을 만들고, 사용자 질의를 분석 및 분류하고, 클릭 데이터를 수집하여 평가하고, 이를 바탕으로 검색 결과를 개선하는 겁니다. 물론 검색 개인화 역시 같은 맥락으로 볼 수 있습니다.

 다음회부터는 각 부문별 동향 소개가 이어집니다.  좀더 설명이 필요한 부분이 있다면 지적 바랍니다. ^^
작년 2학기에 저는 지도교수이신 Bruce Croft교수님이 주제하는 논문 발표 세미나에 참가하였습니다. 규모는 크지 않았지만 Yahoo! Research의 Rosie Jones와 같은 사람들이 연사로 초청될 정도였습니다. 한학기 내내 최근 검색 연구동향을 대표하는 약 스무편의 논문을 읽고, 저는 검색 개인화(personalization) 관련 내용을 발표(자료 첨부)했습니다. 

한참 전에 검색 연구의 개론이라는 글을 썼었는데, 그간 배운 내용을 정리할 겸 앞으로 몇차례에 걸쳐, 최신 논문에 근거한 IR 연구의 동향을 소개할까 합니다. 각 논문의 기술적인 내용을 다 설명할 수는 없겠지만, 기본 아이디어와 큰 흐름 정도는 전달하려 합니다.  큰 그림은 다음과 같습니다. 시스템 측면에서 문서의 속성(feature)을 추출하여 인덱싱(1)하고 사용자의 질의를 분석(2)하여 최종적으로 각 문서에 대한 점수를 계산(3)하고, 마지막으로 검색 결과의 품질을 평가(4)하여 성능 개선에 활용하는 것입니다. 


위 그림이 검색 연구의 전부라고 할 수는 없지만, 대부분의 연구가
 문서 모델(document model), 질의어 모델(query model), 검색 모델(retrieval model), 그리고 평가(evaluation) 중 하나의 카테고리에 속하며, 실제 많은 연구가 위에 소개한 기본적인 모델을 특정 분야 (e.g. 웹 검색, 블로그 검색, 데스크탑 검색)에 적용하는 것을 주제로 합니다. 

마치며
다음번에는 각 부문별로 최근의 연구 동향을 요약해보겠습니다. 내용에 대한 문의나 제안은 언제든지 환영합니다. ^^

참고 자료
IR 교과서 Stanford / UMass CIIR