일요일, 12월 22
Shadow

#006 네이트 시맨틱검색, 원리는 무엇일까

네이트가 최근 ‘시맨틱 검색’이란 서비스로 대박을 치고 있습니다. 시맨틱 검색이란 말 그대로 문서의 의미(시맨틱)을 분석해 검색하는 것을 말합니다.

국내에서 ‘시맨틱’을 전면에 내세운 서비스를 시작한 것은 네이트가 처음인 것 같습니다.
네이트는 이 서비스를 선보인 이후 지난 주 창사이래 처음으로 통합검색 점유율이 10%를 넘겼습니다.

네이트 홍보팀은 요즘 경마중계하듯 매주 자사 검색점유율 상승분에 대해 보도자료를 배포하고 있습니다. 네이트가 최근 얼마나 고무돼 있는지 보여줍니다.

하지만 네이트의 시맨틱 검색 기술에 대해서는 많이 알려지지 않은 것 같습니다. 언뜻 보기에는 단순한 서비스인 것처럼 보이지만,

이 서비스에는 검색엔진 및 자연언어처리 업계가 지난 10년동안 연구해온 결과물이 반영돼 있습니다.

시맨틱 검색이라는 말은 ‘시맨틱 웹’에서 차용된 용어입니다. 시맨틱 웹을 기술적으로 이해하려면,

온톨로지∙RDF 등의 용어를 알아야 합니다. 쉽지 않은 일이죠. 온톨로지는 컴퓨터가 인간의 인식 능력과 유사한 기능을 하도록 하기 위해

만들어 놓은 거대한 데이터셋이라고 이해하면 될 것 같습니다.. 시맨틱 웹은 XML 기반의 마크업 언어를 기반으로 하며, RDF라는 구조를 기반으로 합니다.

이렇게 쓰기는 했지만, 사실 저도 자세히 모르는 내용입니다.

하지만 네이트의 시맨틱 검색에 온톨로지, XML, RDF 등의 기술이 반영된 것은 아닙니다. 때문에 엄밀히 말해서 네이트의 시맨틱 검색은 흔히 얘기하는

‘시맨틱’은 아니라고 볼 수 있습니다.

그렇다고 해서 네이트의 시맨틱 검색을 무시해도 좋다는 것은 아닙니다. 온톨로지∙XML∙RDF 등의 방법론을 사용하지는 않았지만,

사용자의 검색의도를 파악하려는 시도, 단순 키워드 비교가 아닌 문장과 문서의 의미 분석 결과를 검색 결과에 반영하는 시도 등은 시맨틱웹의 접근 방법과 같습니다.

방법론만 다른 것이지요.

네이트 시맨틱 검색기술을 개발한 코난테크놀로지는 시맨틱 검색에 대해 “문장이나 단락에 기술된 주제를 파악하고 이를 대상으로 검색하는 것”이라고 정의했습니다.

네이트의 시맨틱 검색 서비스는 크게 ▲검색주제 ▲즉답 ▲주제별검색으로 나뉠 수 있습니다.

사용자가 검색어를 입력하면 검색한 사람이 관심있을 법한 검색주제가 왼편에 나타나고, 그 속성에 대한 ‘즉답’이 오른편에 나타납니다.

예를 들어 ‘이명박’이라는 검색어를 넣으면 공약, 당선이유, 경력 등의 검색주제가 나오며,

공약이라는 검색주제에 대한 ‘즉답’으로 ‘국민소득 4만불’, ‘7% 성장’ 등이 나오는 구조입니다.

이용하는 사람들은 대단치 않게 느낄지 몰라도, 이 정도 수준의 결과를 보여주기 위해서는 상당한 수준의 기술이 필요하다고 합니다.

이 같은 서비스를 위해 어떤 기술이 사용됐을까요? 우선 코난테크놀로지는 1만개 정도의 검색주제를 데이터베이스로 갖췄습니다.

사용자들이 검색어를 입력하면, 1만개의 검색주제 중 검색어와 맞는 검색주제를 찾아내 보여줍니다.

검색 키워드가 정치인과 관계된 것이라면 발언, 공약, 측근 등의 검색주제를 골라내고, 검색 키워드가 연예인이라면 데뷔정보,

신체사항, 소속사 등의 검색주제를 자동적으로 찾아냅니다. 검색어가 질병이라면 소개, 원인, 증상 등의 검색주제가 나옵니다.

 

이 같은 검색주제가 추출되면 그 주제에 맞는 즉답을 찾아야 합니다. ‘이명박’이라는 검색어에 대한 검색주제로 ‘공약’이 추출됐다면,

그에 맞는 ‘4만 달러 달성’이라는 답을 찾아야 하는 것입니다.
만약 구글 검색엔진이라면 ‘이명박 공약’을 검색했을 때 이명박과 공약이라는 단어가 포함된 문서를 보여줄 것입니다.
하지만 시맨틱 검색에서는 직접 ‘국민소득 4만불’ ‘7% 경제성장’ 등의 정답을 찾아내기 위해 노력합니다.
이를 위해서는 문서의 구조를 파악하고, 문장의 구문과 의미를 분석하는 기술이 필요합니다. 문장의 의미를 분석해 속성을 정의해 나가야 합니다.
예를 들어, ‘이순신은 인종 1년인 1545년 4월 28일 서울 건청동에서 태어났다’는 문장을 만나면 시맨틱 검색엔진은 이순신 출생일과 이순신 출생지를 파악할 수 있습니다.
‘이순신’이라는 메인 키워드를 중심으로 ‘1945년 4월 28일’에 ‘(이순신) 출생일’이라는 검색주제를 부여하고,

서울 건청동을 ‘(이순신) 출생지’라는 검색주제로 분류할 수 있습니다. 이는 ‘태어나다’라는 동사를 보고 판단하는 것입니다.
사람은 인지능력이 있기 때문에 이런 파악이 너무 쉽지만, 인지 능력이 없는 컴퓨터가 이를 파악하기 위해서는 무수한 부수정보가 필요합니다.
컴퓨터가 볼 때 ‘태어났다’는 글자는 단순 문자열에 불과합니다. 그냥 0과 1의 조합일 뿐입니다.
하지만 ‘태어나다’라는 동사 앞에 시간이 오면 출생일, 지역이 오면 출생지라는 속성을 부여토록 미리 정의할 수 있습니다.

이를 위해 자연언어처리 기술이 필요합니다. 형태소분석, 구문분석, 의미분석 등 다양한 절차를 거칩니다.
이는 결코 쉽지 않은 일입니다. 컴퓨터가 이해할 수 있는 사전(Lexicon)을 구축해야 하고, 분석할 수 있는 규칙도 있어야 합니다. 수학적 통계를 이용하기도 합니다.
쉽지 않은만큼 당장 완벽한 검색 결과를 제공하는 것은 불가능합니다. 실제로 네이트 시맨틱 검색은 아직 적지 않은 오류를 보이고 있습니다.
예를 들면 ‘신동엽’이라는 검색어를 입력하면 데뷔작 이라는 검색주제에 ‘남자셋 여자셋’이 나옵니다. 이건 잘못된 결과입니다.

신동엽씨는 남자셋여자셋이라는 시트콤보다 훨씬 먼저 데뷔했습니다.

코너 제목은 잘 기억이 안나지만 1990년대 초반 SBS 개국 당시 ‘안녕하시렵니까’라는 유행어로 혜성처럼 등장했던 것 같습니다.
그렇다면 네이트 시맨틱 검색은 왜 신동엽씨 데뷔작이라는 속성에 대해 남자셋여자셋이라는 즉답을 내놓았을까요?

아래 문장을 보면 납득이 갑니다. 검색엔진은 아래 문장을 보고 신동엽 데뷔작은 남자셋여자셋이라는 판단을 내렸습니다.

이날 신동엽은 시트콤 ‘남자셋 여자셋’으로 데뷔해 신인인 송승헌과 호흡을 맞출 당시를 회상하며,

“신인이었던 송승헌이 도가 지나치게 잘생긴 외모에, 도가 지나치게 연기를 못해 두 번 놀랐다”고 말하며 좌중에 웃음을 던져주었다.

문장이 4중 복문으로 구성돼 있군요. 문장이 너무 복잡해서 시맨틱 검색엔진이 문장을 잘못파악한 것입니다.

이 문장을 볼 때 사람은 “남자셋 여자셋은 송승헌씨의 데뷔작”이라는 것을 금방 알 수 있지만, 컴퓨터한테는 아직 쉽지 않은 일입니다.

우리가 복잡한 영어문장 해석에 어려움을 겪는 것과 같은 이치입니다. ‘직관’이 없기 때문이죠.

하지만 점점 더 기술이 발전하면 이런 오류는 차츰 줄어갈 것입니다. 네이트 시맨틱 검색도 아직 완벽하지는 않습니다. 하지만 점점 더 좋아질 것으로 믿습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.