비전공자도 이해할 수 있는 AI지식20 -사람들은 어떻게 원하는 검색 결과만을 볼 수 있는가-

1. 책에서 원하는 단어가 나오는 부분을 찾는 방법

 

이제 문서를 수집했으니 '색인'을 만들 차례입니다. 색인은 과연 어떤 형태로 구성될까요?

 

당장 여러분의 책장에서 아무 책이나 꺼내 차례에서 '색인' 혹은 '찾아보기' 페이지를 열어보세요

 

특정 단어나 구절에 페이지 번호를 정리해 찾아보기 쉽게 만들어놓았죠

 

 

 

책에서 '갤럭시 노트'라는 단어가 등장하는 페이지를 찾는다고 가정해보죠.

 

첫 페이지부터 해당 항목을 찾을 때까지 계속 뒤져서 원하는 페이지를 찾기가 너무 힘듭니다.

 

하루 종일 찾아야할지도 모르죠. 이럴 때 참조하는 것이 바로 색인입니다.

 

책에서 원하는 내용을 빨리 찾기 위해서는 색인부터 펼쳐 위치를 알아내면 됩니다.

 

전체 과정은... 

 

1. 책의 맨 뒤에 있는 색인을 펼친다.

 

2. 가나다 순으로 정리된 색인에서 '갤럭시 노트'를 찾아 이 단어가 포함된 페이지 번호를 알아낸다.

 

3. 해당 페이지를 열어본다

 

이제 우리는 두꺼운 책에서도 손쉽게 '갤럭시 노트'라는 단어가 등장하는 페이지를 찾을 수 있습니다.

 

그리고 검색엔진이 웹 페이지를 찾아내는 과정도 이와 유사합니다.

 

 

2. 검색엔진이 검색 결과를 내놓는 방법

 

검색엔진도 무작정 모든 웹페이지를 살필 순 없죠. 2020년 기준으로 구글은 약 300조개의 문서를 색인하고 있을 것으로 추정된다고 이야기 했습니다

 

문서 하나를 살피는데 1초밖에 안 걸린다고 하더라도, 300조개를 살피려면 950만년이 넘게 걸립니다.

 

950만년 전이면 인류 문명은 커녕 인류가 원숭이에 더 가까웠을 시기입니다.

 

당연히 이런 방식으로는 원하는 정보를 찾을 수 없습니다.

 

책의 색인처럼 항목을 먼저 정리해두는 과정이 필요하죠. 이 과정을 색인 구축 과정이라고 합니다.

 

웹 페이지에서 색인을 위한 정보를 추출하는 작업은 생각보다 복잡합니다.

 

물론 잘 정리된 HTML에 데이터가 차례대로 기입되어 있다면 어렵지 않겠지만 복잡한 웹 페이지도 많고,

 

요즘은 자바스크립트로 사이트를 구성하여 어디가 제목이고 어디가 본문인지 소스만 봐서는 이해하기 힘든 경우도 많습니다

 

그래서 크롤러는 점점 더 정교하고 똑똑해지고 있고 이러한 크롤러가 해석한 데이터를 바탕으로 색인을 구축합니다

 

 

 

색인을 만들면 검색엔진은 어떻게 결과를 가져올까요?

 

위와 같이 구성되었다고 가정할때, '파란색'을 누군가 검색했다면.. 색인을 기준으로 어떤 페이지를 보여주어야할까요?

 

당연히 10, 11, 72, 101페이지만 보여주면 됩니다.

 

여러 단어로 구성된 경우에는 어떻게 하면 될까요? '태연 파란색 옷'이라고 한다면요?

 

 

 

이 경우 파란색, 태연, 옷이 모두 속한 페이지를 찾아서 보여주면 됩니다. 11페이지 하나밖에 없습니다. 

 

그러면 결과로 11페이지를 보여주면 됩니다.

 

다시 '파란색'으로 돌아가서, 10,11,72,101페이지를 보여주면 된다고 했는데, 어떤 페이지를 가장 먼저 보여주어야할까요?

 

그저 번호 순서대로 보여주면 될까요? 그렇게 해서는 좋은 결과를 보여줄 수 없습니다.

 

이제 랭킹이 등장할 차례입니다. 어떤 문서를 가장 먼저 노출할지 결정하는 알고리즘이죠.

 

구글이 등장하기 이전에 검색엔진들은 매우 단순하게 작동했습니다.

 

랭킹에도 그다지 신경을 쓰지 못했죠

 

이렇게 되면 누구나 문제점을 쉽게 예상할 수 있습니다. 한몫 챙기려는 사람들이 인기있는 쿼리에 자신의 사이트가 노출되도록 하려고 수단과 방법을 가리지 않게됩니다.

 

스팸이 등장합니다. 이제 인터넷 화면은 엉망이 되기 시작합니다. 검색엔진 또한 덩달아 엉망이 되죠.

 

분명히 '은행'을 검색했는데, 내가 찾는 '우리 은행' 사이트가 아니라 대출 광고가 가득한 '우리 함께 은행' 같은 이상한 사금융 사이트만 잔뜩 노출됩니다.

 

구글이 등장하기 이전에는 모든 검색엔진이 이런 상황을 벗어나지 못했습니다.

 

 

3. 순서를 정하기는 쉽지 않다

 

그렇다면 어떻게 해야 스팸을 줄일 수 있을까요? 정보를 어떤 순서로 나열해야 할까요? 이 문제는 생각보다 훨씬 더 복잡하고 어렵습니다.

 

인간의 위대한 발명품 중에는 자연에서 영감을 받는 경우가 많으니 자연에서 힌트를 찾아보고자 합니다.

 

1921년 노르웨이의 동물학자 토를레이프 슈엘데루프 에베는 마당에 닭들이 어울리는 행태를 지켜보다가 A라는 닭이 B라는 닭을 지배하고, 또 B가 C를 지배하는 관계를 발견했습니다.

 

닭들 사이에 존재하는 위계질서를 '모이를 쪼아 먹는 순서'로 보고 '쪼는 순서(pecking order)'라고 명칭도 붙였죠

 

이것이 바로 '서열'입니다. 얼핏 닭들은 아무 의미 없이 저마다 모이를 쪼아 먹는 것처럼 보이지만, 사실 무리 속에서 위계에 따라 각자의 자리를 인식하고 받아들였습니다.

 

'닭대가리'라는 비속어까지 있을 정도로 멍청하다고 여겨지는 것과 달리 닭은 무려 90마리나 되는 집단의 위계 질서를 기억하고 있습니다.

 

서열은 인류가 탄생하기 전부터 존재했던 랭킹의 기원이라고 할 수 있죠

 

인간의 사회적 순위도 서열의 한 형태라고 볼 수 있습니다.

 

이런 질서를 따르면 한정된 먹이를 앞에 두고도 서로 싸우지 않고 먹을 수 있습니다.

 

불필요한 경쟁으로 닭들이 시간과 에너지를 소모하거나 부상 등을 입을 필요가 없죠

 

제대로만 지켜진다면 합리적인 방식으로 보입니다.

 

그렇다면 과연 어떤 닭이 가장 먼저 모이를 "쪼아"먹어야 할까요?

 

서로 다른 성질을 가진 대상을 어떻게 정량적으로 비교할 수 있을까요? 헝가리의 경제학자 페렌츠 야노시는 말과 소의 몸집을 비교하는 문제를 두고 이렇게 얘기했습니다.

 

"아이들은 모두 코끼리가 참새보다 크다는 사실을 압니다. 아이들은 소가 코끼리보다는 작고 참새보다는 크다는 사실을 인정하는 데 한치의 망설임도 없습니다.

 

마찬가지로 동물을 크기 순서로 나열하는 문제라면 아이들은 고양이를 소와 참새 사이에 두는 데 전혀 주저하지 않습니다.

 

그러나 말이 등장하는 순간 난처해집니다. 말은 어디에 두어야할까요? 말은 소보다 클까요? 작을까요? 서로 다른 특성을 가진 대상을 비교할 때 순위 부여는 간단한 문제가 아닙니다.

 

서로 다른 특성을 고려하다 보면 순위가 모두 달라질 수 있기 때문입니다.

 

정답: 말은 소보다 키는 크지만 몸통은 작습니다."

 

단일한 기준으로 순서를 정할 수 있다면 정말 좋겠지만, 아쉽게도 세상은 그렇게 단순하지 않습니다. 

 

크다, 작다라는 단순한 비교를 할때조차 어떤 특성을 고려하느냐에 따라 (키와 몸통) 순서가 달라질 수 있기 때문입니다.

 

정리해보면..

 

1. 순서를 따르는 것은 합리적이다.

 

2. 하나의 기준으로 순서를 정하기는 어렵다.

 

순서는 합리적이지만 하나의 기준으로 순서를 정하기는 어렵습니다. 경제학에서도 단일 기준으로 가치를 측정하는 방법을 고민한 적이 있습니다.

 

그리고 그 방법을 '돈'이라는 방법으로 만들어냈죠

 

같은 원리로 검색 분야에서도 순서를 정하는 잣대를 고안해볼 수 있지 않을까요?

 

다양한 특징을 모두 점수로 치환하고, 점수의 총점으로 순서를 정하는 방식은 어떨까요?

 

아일랜드의 수학자 윌리엄 톰슨은 일찍이 "자신이 말하는 내용을 측정할 수 있고 또한 그것을 숫자로 표현할 수 있어야 비로소 그것을 안다고 말할 수 있다"라고 했습니다.

 

경영학에서는 이를 빗대어 "측정할 수 없다면 관리할 수 없고, 관리할 수 없다면 개선할 수도 없다"라고도 하죠.

 

이처럼 측정 가능한 숫자로 표현하는 일은 매우 중요합니다.

 

앞에서 여러 알고리즘을 소개하면서 숫자로 표현하는 것이 왜 중요한지 여러 차례 언급하기도 했습니다.

 

때로는 얼마나 숫자로 잘 표현하느냐가 알고리즘의 핵심이 되기도 합니다.

 

무엇보다 계산이 가능하려면 숫자로 표현할 수 있어야 하죠. 특히 컴퓨터는 0과 1로 모든 걸 표현하기 때문에 더욱 그렇습니다.

 

숫자로 표현해야 비로소 컴퓨터의 강력한 계산 능력을 활용할 수 있게 됩니다.

 

체스 선수들의 순위를 매기는 방식 또한 좋은 예입니다. 이미 2장에서 알파고를 설명하면서 체스 선수들이 순위를 매기는 방식을 살펴보았습니다.

 

ELO 평점을 이용해 정성적인 선수들의 역량을 정량적으로 판단할 수 있게 됐습니다.

 

이제 "그 체스 선수 실력이 어떻게 돼?"라고 물어보면 "엄청나게 강해"라는 모호한 답변 대신에 "엘로 평점이 2851점이야"라고 말할 수 있습니다.

 

엘로 평점은 나보다 점수가 높은 상대를 이겼을 때 더 많은 점수를 얻는 구조로 되어 있습니다.

 

반대로 점수가 낮은 사람을 이기면 점수가 거의 올라가지 않습니다.

 

나보다 강한 상대에게 승리해야 많은 점수를 획득하는 매우 합리적인 점수 산정 방식인 것이죠.

 

 

4. 검색 랭킹은 어떻게 점수를 매겨야할까

 

그렇다면 검색 랭킹을 매기기 위해서는 어떻게 점수를 매겨야 합리적일까요?

 

검색엔진이 문서의 점수를 정하는 과정은 말과 소의 비교처럼, 저마다 다른 특성을 지닌 문서를 비교하는 과정과 유사합니다.

 

단순히 한두가지 조건이 아니라 종합적인 면을 모두 고려해야합니다.

 

구글의 경우 약 200여가지 랭킹 조건을 이용하는 것으로 알려져있습니다.

 

Google’s 200 Ranking Factors: The Complete List (2022) (backlinko.com)

 

Google’s 200 Ranking Factors: The Complete List (2022)

A complete list of Google’s 200 ranking factors, sourced from SEO experiments, Google patents, and more.

backlinko.com

 

1) 쿼리가 문서 제목에 포함되어 있는가?

 

-지금은 예전만큼 중요도가 높진 않지만, 제목에 쿼리가 포함되어 있다면 중요한 문서라고 판단합니다.

 

2) 긴 문서인가?

 

- 짧은 글보다는 긴 글이 품질 점수가 높습니다

 

3) 문서 로딩이 빠른가?

 

- 빠른 문서는 더 좋은 경험을 줍니다

 

4) 사이트에 접속할 수 없는 상황이 자주 발생하는가?

 

-빠른 로딩과 함께 사이트의 안정성은 매우 중요합니다.

 

자주 다운되는 사이트에 있는 문서라면 아무리 내용이 좋아도 문서를 보기가 어렵겠죠

 

5) 모바일에서 잘 보이는가?

 

이제 모바일 인터넷 트래픽이 pc를 앞질렀습니다. 문서가 모바일에서 잘 보이느냐는 매우 중요한 사항이 되었습니다.

 

6) 문서 내에 쿼리가 많이 포함되어 있는가?

 

딱 한번 나오는 것보다는 여러 번 반복해서 나오는 게 좋겠죠. 이 개념은 유사도를 판별하는 TF-IDF 알고리즘의 바탕이기도 합니다.

 

7) 동일한 사이트에서 중복으로 나오는 콘텐츠인가?

 

긴 문서로 만들기 위해 불필요하게 내용을 반복하는 경우가 있는데 당연히 감점 요인이 됩니다.

 

8) 다른 문서에서 복사한 내용인가?

 

흔히 불펌이라고 하죠. 당연히 불펌한 문서는 점수가 낮고, 원본이 더 높은 점수를 받아야합니다.

 

9) 본문 내용의 수준이 지적인 내용인가, 욕설로 가득한 내용인가?

 

-글의 품위도 평가 기준으로 삼습니다.

 

10) 저작권이 정식으로 표기되어 있는가?

 

저작권을 제대로 표시한 문서가 좋은 문서일 가능성이 높습니다

 

11) SNS에 링크가 걸려있는가?

 

좋은 문서라면 트위터 등 SNS에 링크가 퍼진 경우가 많겠죠

 

이처럼 랭킹 조건의 종류는 매우 많습니다. 랭킹은 이 모든 조건의 점수를 합해 종합 정수가 가장 높은 문서를 1등으로 보여줍니다.

 

 

 

 

 

 

TAGS.

Comments