본문 바로가기

[문병로의 알고리즘 여행] 색인

중앙일보 2020.02.12 00:22 종합 27면 지면보기
문병로 서울대학교 컴퓨터공학부 교수

문병로 서울대학교 컴퓨터공학부 교수

서구의 거의 모든 책은 마지막 부분에 색인(찾아보기)이 붙는다. 우리나라도 전공서들은 대부분 색인이 있고, 교양서들은 대부분 색인이 없다. 심지어 원저에 색인이 있는 번역서조차 색인을 빼버린 경우가 많다. 찾아보기를 만드는 일은 지루하다. 책을 쓰고 지친 상태에서 피하고 싶은 유혹이 생긴다. 우리나라 집필 문화에서 가장 불만스런 부분이다. 어떤 책에서 본 내용을 다시 보고자 할 때 목차로 찾기는 쉽지 않다. 어떤 단어가 떠오르고 그 단어가 있는 페이지만 알려 주면 쉽게 찾을 수 있다. 장서를 처음부터 다시 읽기는 어렵다. 대부분 필요할 때 찾아보게 된다. 색인은 이럴 때 꼭 필요한 것이다. 색인이 없는 책은 그냥 읽을거리로는 문제가 없지만 장서로서의 용도는 무시한 책이라 할 수 있다.
 

자료 저장·검색은 컴퓨터의 기본
구글과 국내 검색 엔진 격차 커
고객 의도 파악하는 기술 부족

필자는 일단 색인이 달린 교양서에는 신뢰가 간다. 저자가 독자들을 위해 안 해도 되는 수고를 감수했으니 내용에서도 그 정신이 스며들었을 것이라 생각된다.
 
컴퓨터 분야로 가보자. 데이터는 어딘가 저장된다. 어떤 데이터가 어디 있는지 찾는 일은 컴퓨터의 각 분야에서 효율을 좌우하는 중요한 작업이다. 그래서 문서나 자료에 관련된 단어나 id 등을 골라 색인을 만들어 놓는다. 검색자의 의도에 맞는 순서 매기기도 중요한데 색인이 일단 잘 찾아준 다음의 이야기다. 주민센터에서 주민등록번호만 제시하면 등본이나 인감증명을 즉시 발급받을 수 있는 것도 주민번호로 색인이 되어 있기 때문이다. 주민들의 기록은 디스크에 저장되어 있고, 색인은 해당 주민번호를 가진 사람의 자료가 디스크의 어디에 있는지를 알려준다. 대학이나 기업의 전산 시스템에서도 색인은 필수다.
 
컴퓨터 분야의 기초 과목인 자료구조와 알고리즘에서 가장 많은 분량을 차지하는 것이 자료의 저장과 검색인데 이것이 바로 색인에 관한 것이다. 대부분 단어 하나로 찾는 색인이지만, 두 개 이상의 단어로 찾기 위한 색인도 있다. 다차원 색인이라 한다. 데이터가 폭발적으로 증가하고 있어 데이터의 효율적 저장과 검색은 점점 더 중요해지고 있다.
 
가장 방대하고 복잡한 색인의 예는 구글 검색 엔진이다. 지금 내가 어떤 단어 몇 개 또는 문장을 입력하면 색인 시스템에서 관련 단어를 가진 사이트를 각각 찾아 이들의 공통집합을 계산한다. 자주 나오는 조합들은 미리 다차원 색인을 만들어 두기도 한다. 한 벌의 색인으로는 전 세계로부터 들어오는 검색 요청을 감당할 수 없다. 똑같은 색인을 많은 곳에 복제해서 방대한 요청을 분산 처리해야 한다. 색인을 어떻게 분산 배치해야 하는가, 검색 요청이 들어오면 어느 색인에서 서비스하도록 짝지어줘야 하는가, 일부 색인이나 색인의 접근 경로에 문제가 생기면 대체 경로는 어떻게 결정하는가. 이런 문제를 해결하는 알고리즘을 포함하고 있어야 한다. 구글 검색 시스템은 지금까지 존재한 적이 없었던 규모의 분산처리 시스템이다.
 
그것으로 끝나지 않는다. 색인은 시시각각 변한다. 끊임없이 새로운 정보가 생성된다. 소멸하기도 한다. 크롤링 로봇이 쉴 새 없이 돌아다니면서 자료를 수집하고 색인을 추가한다. 변경 사항을 모든 색인에 반영하는 것도 쉬운 일이 아니다. 어떤 요청에 매치되는 자료가 매우 많으면 보여줄 자료의 순서도 정해줘야 한다. 검색 엔진들의 실력 차는 크다. 검색 내용이 좀 고급이 되면 현재로선 구글을 당할 엔진이 없는 듯하다.
 
필자가 얼마 전에 우리나라의 은행 지급준비율을 알고 싶었다. ‘2019년 한국 지준율’을 국내의 어떤 검색 사이트에서 입력했더니 온통 중국의 지준율이 앞부분을 채우고 몇 페이지를 넘어가도 원하는 자료를 발견할 수 없었다. 중국 지준율 관련 자료에 ‘한국’이란 단어가 포함된 페이지들이 대부분이다. 구글에서 같은 검색을 하니 한국은행의 우리나라 지준율 페이지가 맨 앞에 뜬다. 그 뒤에도 우리나라의 지준율 정보들이 죽 나온다. 우리의 대표적 검색 엔진은 검색어의 조합으로 고객 의도를 파악하는 기술이 너무 부족하다. 고객 의도를 파악하는 기술은 타깃 광고의 적중률과도 연결된다. 인터넷 비즈니스의 핵심적 기술이다. 좋게 생각하면 아직 성장의 여지가 많다고 할 수 있겠다.
 
문병로 서울대학교 컴퓨터공학부 교수
공유하기
광고 닫기