[ 인공지능 알고리듬의 이해 ]
[인공지능 알고리듬의 이해] “제5회: 검색알고리즘”
정보통신정책연구원 ICT데이터사이언스연구본부장
정용찬
* 이 글은 저자의 “인공지능 알고리듬의 이해”에서
주요 내용을 요약, 발췌하였습니다.
검색엔진의 역사
최초의 인터넷 검색엔진은 1990년에 캐나다 맥길대학의 학생인 앨런 엠티지(Alan Emtage) 등이 만든 아키(Archie)다.
기록보관소를 뜻하는 단어인 ‘archive’에서 따왔다. 파일 전송 프로토콜(File Transfer Protocol) 사이트에 있는 모든 파일의 디렉터리 목록을 다운로드하여 파일 이름을 검색할 수 있는 데이터베이스를 만들었다.
1995년 서비스를 시작한 야후(Yahoo!)는 자신들이 선정한 웹사이트를 트리 구조로 제공했다. 첫 단계는 “교양과 직업교육”, “즐거운 일” 등 14개의 범주로 구성되었고 즐거운 일 아래에는 ‘음식과 식생활’이 그리고 그 아래에는 ‘요리법’이 있었다. 이러한 도서관 서지 목록식 방법은 인터넷 사이트가 기하급수적으로 늘어나면서 유지하기 힘들게 되었다. 아무리 많은 전문가를 고용해도 수백만 개씩 늘어나는 사이트의 내용을 일일이 파악해서 분류체계를 만드는 일은 불가능하기 때문이다.
1994년에 설립된 라이코스(Lycos)는 웹문서 검색 이외에 제휴를 통해서 인물 디렉터리 검색, 이메일 디렉터리 검색 서비스를 제공했고 멀티미디어 파일을 검색하는 기능도 제공했다. 웹문서 검색 엔진의 데이터베이스 규모도 1994년 7월 처음 공개했을 때 5만4000개의 웹문서에 불과했는데 1996년 11월에는 6000만 개로 늘어나는 등 당시에 가장 큰 규모의 데이터베이스를 가진 검색엔진이 되었다(wikipedia).
1998년에는 구글과 마이크로소프트사의 검색엔진(MSN Search, Bing의 전신)이, 2000년에는 중국의 바이두(Baidu)가 등장한다. 우리나라의 다음(1995년)과 네이버(1999년)도 이 무렵 서비스를 시작한다.
검색엔진의 원리
검색엔진은 웹크롤링(Web crawling), 색인(Indexing), 추출(Searching)의 세 단계로 작동한다. 웹크롤링은 크롤러(crawler)라고 부르는 소프트웨어가 새로운 웹 페이지를 찾아 내용을 복사하는 과정이다. 색인 과정은 검색을 정확하고 빠르게 처리하기 위해서 크롤링에서 찾은 모든 정보와 그 정보가 수록된 사이트 주소를 짝지어 데이터베이스에 저장한다. 추출은 검색하려는 단어가 포함된 제목, 주제 등을 추출하는 과정이다.
검색엔진의 성능은 검색어와 검색 결과가 얼마나 일치하는지에 따라 판가름 난다. 수많은 검색 결과 중에서 가장 연관성이 높은 내용부터 순서대로 제시해야 한다. 네이버 블로그 검색의 예를 들어 보자.
네이버는 초기에는 매일매일 새로운 내용의 글을 꾸준히 게시하는 블로그에 높은 점수를 주었다. 블로그 글의 품질과 관계없는 이 방식은 ‘글을 쓰는 사람이 얼마나 오랫동안 한 분야의 글을 써왔는지’를 점수로 매기는 C(creater)-rank로 바뀐다. 하지만 이 방식도 새롭게 시작한 블로그는 아무리 내용이 좋아도 상위에 오를 수 없는 문제가 발생한다. 이를 보완하기 위해 DIA(Deep Intent Analysis) 알고리즘이 등장하는데 글의 내용을 분석해서 키워드별로 사용자가 좋아하는 글에 점수를 주는 방식이다.
구글의 페이지랭크
검색엔진 시장의 경쟁이 치열해지자 구글은 복잡한 내용으로 가득한 대부분의 검색포털 초기화면과 달리 오직 검색창 하나로 구성된 단순 전략을 선보였다. 그리고 웹페이지와 연결(link)된 페이지의 수가 많을수록 더 중요한 페이지로 판정하는 알고리즘인 페이지랭크(Page Rank)를 제안했다.
물론 구글이 페이지랭크 기술만으로 시장을 석권한 것은 아니다. 대규모 데이터를 효과적으로 처리하기 위한 전략으로 컴퓨터 장비(hardware)는 가능한 한 저렴한 것을 사용하고 그 성능을 최대한 끌어 낼 수 있는 소프트웨어(software)는 자신들이 직접 개발했다(니시다 케이스케, 2009/정용찬, 2013). 또한 대량의 정보를 효과적으로 저장하기 위한 분산파일 시스템(GFS, Google File System)과 대용량 데이터의 읽기와 쓰기를 위한 분산 스토리지 시스템인 빅테이블(Bigtable), 분산 데이터 처리를 위한 맵리듀스(MapReduce) 기술을 개발했다(정용찬, 2013).
현재 구글은 단순히 페이지랭크만으로 작동하지 않는다. 자신의 페이지를 상위에 위치시키기 위한 악의적인 시도가 많기 때문이다. 예를 들어 의미 없는 수만 개의 페이지를 만들어 특정 페이지에 링크를 한다든지, 검색에 많이 등장하는 특정 키워드(맛집 등)를 같은 페이지에 수백 번 반복해서 넣는 방식이다.
구글은 검색 알고리즘을 공개하고 있지 않지만 지금까지 알려진 것으로는 긴 글일수록, 해당 페이지가 자주 변경될수록, 페이지 내용이 복사한 것이 아니라 독창적인 것일수록, 저작권이 표기된 것일수록, 페이지에 접속할 수 없는 상황이 적게 발생할수록, 동영상 중에서는 유튜브 동영상이 더 우대받는다(크리스토프 드뢰서, 2018). 한편 구글은 2012년부터 PAGE LAYOUT 알고리즘을 적용하겠다고 발표했는데 이는 광고를 과다하게 노출하지 않는 글을 상위에 올리는 정책이다.
참고문헌
니시다 케이스케(2009), 김성훈 역(2009). 『구글을 지탱하는 기술』. 멘토르.
정용찬(2013). 빅데이터. 커뮤니케이션북스.
크리스토프 드뢰서(2018). 전대호 옮김. 알고리즘이 당신에게 이것을 추천합니다. 해나무.
Wikipedia, https://en.wikipedia.org/wiki/Web_search_engine