책결 골라 보기

책결 · 추천 알고리즘 풀어 보기

좋아요 열 번으로 어떻게 「읽는 결」이 나올까

넷플릭스나 왓챠 같은 추천은 흔히 별점 표의 빈칸을 채우는 계산으로 설명된다. 책결은 별점을 모으지 않는다. 전국 도서관이 이미 센 대출 기록에서 책과 책 사이를 읽는다. 실제 보기 화면 하나(좋아요 12권)를 처음부터 끝까지 따라가 본다.

숫자는 2026년 10월 22일 산 주소에서 잰 값 · 자료 국립중앙도서관 「도서관 정보나루」(CC BY)

별점 표에는 빈칸이 더 많다

흔히 쓰는 설명은 이렇다. 사람을 줄에, 작품을 칸에 놓고 매긴 별점을 적는다. 빈칸의 점수를 짐작해서 가장 높게 나온 작품을 권한다. 짐작하는 방법이 행렬 인수분해다. 큰 표를 「사람의 특성」과 「작품의 특성」 두 작은 표로 나누고, 둘을 곱하면 적힌 별점이 다시 나오도록 숫자를 맞춘다.

걸리는 곳은 표가 거의 비어 있다는 점. 한 사람이 본 작품은 전체의 아주 일부다. 처음 온 사람은 줄이 통째로 비어 있어서, 별점을 꽤 매기기 전에는 짐작할 거리가 없다.

작품 1작품 2작품 3작품 4작품 5작품 6작품 7
사람 1534
사람 242
사람 351
사람 445
사람 524
처음 온 사람???????
그림 1. 별점 표(설명용 그림). 칸 대부분이 비어 있고, 처음 온 사람의 줄은 통째로 비어 있다.

책결은 책과 책 사이를 본다

책결은 이 표를 채우지 않는다. 사람 대신 책을 줄에 놓는다. 「이 책을 빌린 사람들이 같이 빌린 책」은 국립중앙도서관 「도서관 정보나루」가 전국 도서관의 대출 기록으로 이미 세어 두었다. 정보나루에는 도서관 1,623곳이 들어 있고, 쌓인 대출 기록은 25억 3,583만 건이다(정보나루 첫 화면, 2026년 10월 22일).

책마다 이웃 목록이 셋 있다. 함께 대출된 책 10권, 그 분야를 많이 읽는 사람(마니아)이 고른 책 10권, 책을 많이 읽는 사람(다독자)이 고른 책 10권. 책결은 책 268,473권을 모았고, 그중 101,087권은 이웃 목록까지 들어 있다.

불편한 편의점

불편한 편의점

김호연

대출 234,845회 · 문학 › 한국문학 › 소설 · 많이 빌린 사람 40대 여성·30대 여성

함께 대출된 책 3점

  1. 불편한 편의점겹침
  2. 달러구트 꿈 백화점겹침
  3. 어서오세요, 휴남동 서점입니다
  4. 아버지의 해방일지
  5. 메리골드 마음 세탁소
  6. 달러구트 꿈 백화점겹침
  7. 순례 주택
  8. 망원동 브라더스
  9. 소년이 온다
  10. 바다가 들리는 편의점

마니아 추천 2점

  1. 불편한 편의점겹침
  2. 망원동 브라더스
  3. 연적
  4. 고스트라이터즈
  5. 불편한 편의점겹침
  6. 파우스터
  7. 나의 돈키호테
  8. 어서오세요, 휴남동 서점입니다
  9. 달러구트 꿈 백화점겹침
  10. 달러구트 꿈 백화점겹침

다독자 추천 1점

  1. 불편한 편의점겹침
  2. 나의 돈키호테
  3. 아버지의 해방일지
  4. 메리골드 마음 세탁소
  5. 달러구트 꿈 백화점
  6. 어서오세요, 휴남동 서점입니다
  7. 바다가 들리는 편의점
  8. 안녕이라 그랬어
  9. 혼모노
  10. 이중 하나는 거짓말
그림 2. 「불편한 편의점」 한 권에 딸린 이웃 서른 권. 목록에 「불편한 편의점」 자신의 다른 권·판과 「달러구트 꿈 백화점」 1·2권이 섞여 있다(겹침). 책결이 뒤에서 한 권으로 묶는 까닭이다.

사람마다 표를 학습하지 않으니 처음 온 사람도 첫 「좋아요」부터 쓸 수 있다. 추천 분야에서는 이런 방식을 아이템 기반 협업 필터링이라고 부른다. 아마존이 2003년 논문으로 알린 방식과 같은 계열이다. 다만 책결은 책 사이의 가까움을 따로 학습하지 않고, 도서관이 센 값을 그대로 쓴다. 좋아한 책의 이웃에게 표를 모아 세는 방식이라, 이 글에서는 도서관 이웃 투표라고 부른다.

1단계

첫 열 권은 낯익은 책부터

고르기는 표지 한 장마다 「좋아요 · 별로 · 안 읽었어요」 가운데 하나를 누른다. 처음 보여 줄 책은 대출 많은 어른 책 1,500권(첫 카드)이다. 표지와 이웃 목록이 있는 책만 골랐고, 어린이책과 같은 시리즈의 다른 권은 뺐다.

낯선 책이 먼저 나오면 「안 읽었어요」만 이어져 열 권을 못 채운다. 그래서 분야마다 대출 많은 순으로 세우고, 맨 앞 40권만 기기마다 다르게 섞는다. 문학만 열 장 내리 나오지 않게 분야를 돌아가며 뽑되, 큰 분야는 한 바퀴에 여러 장을 낸다.

한 바퀴에 나오는 장 수 = 6 × (그 분야 책 수 ÷ 1,500) × 분야 수 10 → 반올림, 적어도 한 장
예) 문학: 6 × 839 ÷ 1,500 × 10 = 33.6 → 34장

그림 3. 첫 카드 1,500권의 분야와, 분야를 한 바퀴 돌 때(62장) 분야마다 나오는 장 수.

2단계

좋아요 셋마다, 내 쪽으로

좋아요가 셋 모일 때마다 그 세 권의 이웃에게 표를 준다. 함께 대출된 책이면 3점, 마니아 목록이면 2점, 다독자 목록이면 1점. 같은 사람이 같이 빌린 기록에 가장 큰 무게를 둔다.

보기 화면의 첫 세 권은 「불편한 편의점」 「종의 기원」 「완전한 행복」. 세 권의 이웃 가운데 표를 받은 책은 35권이고, 「아버지의 해방일지」가 12점으로 가장 많았다. 세 권 모두의 함께 대출 목록(3점)과 다독자 목록(1점)에 들어 있었다.

불편한 편의점종의 기원완전한 행복

아버지의 해방일지함3다1함3다1함3다112
7년의 밤함3마2함3마210
28함3마2함3마210
영원한 천국마2다1함3마2다19
홍학의 자리함3다1함3다18
밝은 밤함3함3다17
진이, 지니마2함3마27
그림 4. 첫 세 권이 이웃에게 준 표, 위 일곱 권. 막대 마디 하나가 「어느 책의 어느 목록에서 몇 점」이다 — 함 = 함께 대출 3, 마 = 마니아 2, 다 = 다독자 1.

이미 본 책과 곧 나올 줄에 선 책은 빼고, 표가 많은 24권에서 어린이책·표지 없는 책·같은 책의 다른 권을 거른다. 남은 것에서 많아야 여섯 권을 고르기 줄 앞쪽에 한 장 걸러 하나씩 끼운다. 카드에는 「불편한 편의점」 곁의 책처럼 어느 책 때문에 나왔는지 카드에 적는다. 그래서 줄은 처음엔 누구에게나 비슷하고, 누를수록 사람마다 달라진다.

3단계

읽는 결 유형 — 네 축, 세 자리

좋아요가 열 권이 되면 첫 결과가 열린다. 좋아한 책을 네 축으로 잰다 — 이야기↔지식(문학 책의 몫), 우리 책↔번역서(옮긴이가 있는 책의 몫), 오래 읽힌↔요즘(2016년부터 나온 책의 몫), 한 장르↔여러 장르(좋아한 책의 장르가 흩어진 정도). 축마다 가름값 둘레에 「가운데」 띠를 두어 왼쪽·가운데·오른쪽 세 자리로 나눈다. 네 축 × 세 자리 = 81가지. 둘로만 가르면 가름값 가까이 있는 사람이 좋아요 몇 권에도 반대쪽으로 뒤집혀서, 가운데 자리를 두었다. 가운데는 「아직 정해지는 중」이라 좋아요가 쌓이면 대개 한쪽으로 또렷해진다. 결과 카드의 「도감」은 가운데를 뺀 16칸(역할 넷 × 결 넷)이다 — 가운데 자리가 있는 축은 양쪽 칸이 다 「들어갈 수 있는 칸」으로 밝아진다.

좋아한 책분류옮긴이나온 해장르
불편한 편의점813.7 문학 없음2021일반 소설
종의 기원813.7 문학 없음2016일반 소설
완전한 행복813.7 문학 없음2021일반 소설
라플라스의 마녀833.6 문학 있음2016추리/미스터리 · 스릴러
파친코843.6 문학 있음2018일반 소설
우리가 빛의 속도로 갈 수 없다면813.7 문학 없음2019SF
나미야 잡화점의 기적833.6 문학 있음2012일반 소설
어서오세요, 휴남동 서점입니다813.7 문학 없음2022일반 소설
지구 끝의 온실813.7 문학 없음2021SF
소년이 온다813.62 문학 없음2014일반 소설
사피엔스 유인원에서 사이보그까지, 인간 역사의 대담하고 위대한 질문909 역사 있음2015역사
밝은 밤813.7 문학 없음2021일반 소설
그림 5. 보기 화면에 심어 둔 좋아한 책 12권. 밝은 칸이 축의 오른쪽 끝(이야기·번역서·요즘)으로 센 칸이다.
  • 지식이야기

    문학(분류 800번대) 책의 몫 · 12권 가운데 11권 → 0.92 · 가운데 띠 0.49~0.71 → 이야기

  • 우리 책번역서

    옮긴이가 있는 책의 몫 · 12권 가운데 4권 → 0.33 · 가운데 띠 0.22~0.38 → 가운데

  • 오래 읽힌요즘

    2016년부터 나온 책의 몫(나온 해를 아는 책 가운데) · 12권 가운데 9권 → 0.75 · 가운데 띠 0.63~0.77 → 가운데

  • 한 장르여러 장르

    좋아한 책의 장르가 흩어진 정도(0~1) · 장르 5가지에 흩어짐 → 0.42 · 가운데 띠 0.50~0.69 → 한 장르

그림 6. 읽는 결 유형의 축 넷. 가는 세로 줄이 가름값, 그 둘레 흐린 띠가 「가운데」다 — 점이 띠 안에 있으면 그 축은 아직 정해지는 중이다. 이 예시는 이야기 단골 · 고루 섞인 결.

이름은 역할과 결을 잇는다. 역할은 이야기↔지식과 한 장르↔여러 장르로 넷 — 이야기 단골 · 이야기 산책자 · 지식 탐구자 · 지식 수집가. 결은 우리 책↔번역서와 오래 읽힌↔요즘으로 넷 — 요즘 우리 책 · 오래 읽힌 우리 책 · 요즘 번역서 · 오래 읽힌 번역서. 가운데 자리는 「이야기와 지식을 오가는」 「고루」처럼 풀어 쓴다. 좋아한 책에 평균보다 1.5배 넘게 몰린 장르가 있으면(4단계) 그 장르의 말을 이름 앞에 둔다. 이 예시는 SF가 평균의 9.9배라서 결과 화면의 이름은 「SF를 즐기는 이야기 단골」, 결은 「고루 섞인 결」. 미리 정해 둔 말을 잇는 방식이라 결과 문장을 AI가 지어내지 않는다. 설명 줄도 성격을 넘겨짚지 않고, 고른 책의 수(문학 몇 권 · 옮긴이가 있는 책 몇 권 · 2016년부터 나온 책 몇 권)만 적는다.

결마다 얼굴과 이야기가 있다(10월 23일). 얼굴은 그림 파일이 아니라 화면이 그때 그리는 선 그림이다 — 역할이 생김새(머리·눈·소품)를, 결이 바탕색과 작은 표식(우리 책 「한」·번역서 지구본 · 요즘 별·오래 읽힌 모래시계)을 정한다. 이야기는 열여섯 결마다 미리 써 둔 두세 문장으로, 성격을 단정하지 않고 그 결의 책장이 어떤지 말한다. 사람이 쓴 글만 잇고 그 자리에서 지어내지 않는다. 그 아래 「이 결의 책장에 흔한 책」 셋은 첫 카드 1,500권 가운데 그 결의 축(문학·번역·연도)에 맞는 책을 전국 도서관 대출 많은 순으로 고른 것이다.

그림 6-1. 열여섯 결의 얼굴 — 역할 넷(줄) × 결 넷(칸). 가운데 자리가 섞인 결은 역할 쪽 생김새만 바뀐다.

가름값(문학 0.60 · 옮긴이 0.30 · 2016년부터 0.70 · 장르 흩어짐 0.59)과 가운데 띠의 너비는 시험으로 정한 임시 값이다. 책결을 쓰는 사람의 기록이 모이면 그 기록으로 다시 정한다. 예전 결과 화면의 「널리↔드물게」 축은 첫 카드가 다 많이 읽힌 책이라 거의 모두가 「널리」로 나와서 뺐고, 「한 분야↔여러 분야」는 이야기↔지식과 겹쳐 장르로 잰 「한 장르↔여러 장르」로 바꿨다.

행렬 인수분해가 찾는 특성(기사들의 F1·F2)은 학습이 정하고 이름이 없다. 책결의 결 유형은 축과 이름과 계산이 처음부터 정해져 있어서, 왜 그 유형이 나왔는지 그림 5·6 한 장으로 되짚을 수 있다.

결과 화면의 친구와 결 견주기는 링크 하나로 두 사람의 결을 견준다(10월 22일). 링크에는 축 넷의 값과 좋아하는 장르 셋(평균의 몇 배)·좋아요 수만 담기고, 좋아한 책 목록과 기기 번호는 담기지 않는다. 서버에도 남지 않는다 — 받은 사람이 열 권을 고르면 그 사람 기기 안에서 견준다. 결 닮음은 축 넷이 가까운 정도 60%(축마다 두 사람의 차이를 그 축 표준편차의 두 배로 나눠 1에서 자른다 — 축 값이 가름값 둘레에 몰려 있어서, 그냥 차이로 재면 누구나 비슷하게 나온다)와 좋아하는 장르 셋이 겹치는 몫 40%를 더한 값이다. 친구의 책 목록은 모르니, 같이 보여 주는 책은 「내 다음 한 권 가운데 친구가 좋아하는 장르의 책」이라고만 부른다.

4단계

좋아하는 장르와 같이 읽는 사람 — 평균보다 몇 배

책마다 장르 이름표가 붙어 있다. 일반 소설·추리/미스터리·스릴러·SF·판타지·로맨스·역사소설·공포/호러·시·에세이·자기계발·경제경영·심리·교양과학·역사·철학·여행·전기·요리·만화·실화 범죄·청소년, 22가지다. 도서 분류번호, 책 소개에서 뽑은 키워드, 같이 빌린 책들의 장르로 정한다. 사람이 손으로 붙이지도, AI에게 묻지도 않는다.

장르 기준

도서관 분류번호(KDC)는 소설을 나라와 시대로 나눈다(813.7은 한국 현대 소설). KDC 제6판에도 소설을 역사·로맨스·추리·SF로 더 나누는 자리가 있지만 도서관 목록에는 거의 쓰이지 않는다 — 우리 자료의 소설 2만 4천여 권 가운데 분류번호가 그만큼 길게 적힌 책은 25권이다. 그래서 소설의 장르는 서점들이 쓰는 장르소설 갈래(추리/미스터리 · 스릴러 · SF · 판타지 · 로맨스 · 역사소설 · 공포/호러)를 따르고, 아래 순서로 단서를 찾는다. 단서가 없는 소설은 장르를 지어내지 않고 일반 소설로 둔다. 「순문학」이라는 말은 쓰지 않는다 — 무엇이 순문학인지는 분류번호로 가를 수 없다.

단서어떻게예
도서관 분류번호(KDC)시(8x1) · 에세이(8x4·8x6~8x8) · 자기계발(189·199·325.2) · 경제경영(32x) · 심리(181~188) · 교양과학(4xx) · 역사(900~979) · 여행(98x, 기행 산문) · 전기(99x) · 요리(594) · 만화(657) · 철학(1xx) · 실화 범죄(364.4 범죄학) · 청소년(ISBN 부가기호 독자 대상 4)「언어의 온도」 818 → 에세이
책 소개 낱말소설(8x3)은 정보나루가 책 소개에서 뽑은 낱말과 제목의 장르 말로 점수를 매긴다. 미스터리·추리소설·탐정 → 추리/미스터리, 우주·로봇·인공지능 → SF, 마법·드래곤 → 판타지처럼 3점이 넘으면 그 장르다.「살인자의 기억법」 → 스릴러
같은 책의 다른 판책 소개 낱말이 없는 판은, 제목·작가가 같은 다른 판들이 한 장르로 모일 때 그 장르를 나눈다. 판마다 갈리면 나누지 않는다.「검찰 측의 증인」 낱말 없는 판 → 추리/미스터리
함께 빌린 책함께 대출된 책·마니아 추천 책 가운데 장르가 선 책이 다섯 권 넘게, 60% 넘게 한 장르를 가리킬 때. 같은 작가의 책과 같은 시리즈는 한 표로 센다.「공허한 십자가」 → 추리/미스터리
같은 작가같은 작가의 다른 책 70% 넘게가 한 장르이고 이 책에도 그 장르 단서가 있을 때. 또는 작가 책 80% 넘게가 한 장르이고, 이 책을 낸 출판 브랜드의 소설도 절반 넘게 그 장르일 때.「이끼숲」(천선란) → SF
붙이지 않는 것문학 총류(80x — 글쓰기 책·전집)와 희곡에는 소설 장르를 붙이지 않는다. 그 밖의 나라 문학(89x)은 「소설」 단서가 있거나 함께 빌린 책이 문학일 때만 소설로 본다. 운문 서사시(「일리아스」)는 소설로 보지 않는다.「유시민의 글쓰기 특강」 802 → 장르 없음

결과 화면의 「좋아하는 장르」 아래에는 그 장르로 센 책과, 소설이면 나라(KDC 언어 자리 — 한국·일본·영미 …)가 함께 보인다. 장르가 틀렸으면 그 자리의 「이상해요」를 누르면 된다. 모아서 이 기준을 고친다.

참고: 한국도서관협회, 『한국십진분류법』 제6판 · 박은희·이미화(2020), 「학교도서관을 위한 소설장서의 장르 분류 방안에 관한 연구」, 『한국비블리아학회지』 31(1), 115–136쪽(KDC·DDC와 교보·영풍·알라딘·반디앤루니스·인터파크의 소설 장르 분류를 견준 표).

좋아한 책의 장르 비율을 첫 카드 1,500권의 평균 비율로 나누면 「평균보다 몇 배」가 나온다. 정보나루가 책마다 주는 연령·성별 대출 수도 평균과 견준다. 그냥 더하면 거의 누구에게나 도서관을 가장 많이 이용하는 무리가 1위로 나오기 때문이다(마케팅에서 쓰는 리프트(lift) 지표와 같은 계산). 다만 연령·성별은 좋아한 책마다 따로 잰다. 한데 합치면 평균 몫이 작은 무리(40대 남성은 첫 카드 대출의 2.7%)가 조금만 많아도 「몇 배」가 커진다. 그래서 책마다 잰 몫의 평균에서 책마다 흔들린 만큼을 덜어 낸 값으로 줄을 세운다. 한두 권에서만 튄 무리보다 여러 권에 고르게 많은 무리가 앞에 온다.

좋아하는 장르

SF9.9배
일반 소설2.1배

같이 읽는 사람

30대 여성1.2배
40대 여성1.0배
장르좋아한 책좋아한 책 가운데첫 카드 평균몇 배
SF2권16.7%1.7%9.9배
일반 소설8권66.7%32.2%2.1배
그림 7. 좋아하는 장르와 같이 읽는 사람 — 둘 다 「평균보다 몇 배」다. 같이 읽는 사람을 그대로 더하면 1위는 40대 여성(27.3%)였다. 그런데 40대 여성은 원래 첫 카드 1,500권 대출의 20.3%를 차지하는 무리라 평균과 견주면 1.3배에 그친다. 대출 수로 한데 합쳐 몇 배로 줄 세우면 1위는 40대 남성(몫 4.6%, 평균 몫 2.7%)이다 — 평균 몫이 작아 조금만 많아도 몇 배가 커진다. 좋아한 책 12권마다 따로 재면 30대 여성(책마다 평균 16.5%)이 여러 권에 고르게 많아 1위가 된다.

눈에 띄는 낱말

자이니치 15파친코미스터리 12라플라스의 마녀어머니 11종의 기원남편 7파친코치열 7종교 7인지혁명 7농업혁명 7
그림 8. 키워드 무게를 더하고 흔한 말·책 제목·작가 이름을 뺀 낱말(작은 글씨는 그 낱말이 온 책). 책 소개에서 뽑은 낱말에는 등장인물 이름·단편 제목·출판사 이름·도서 분류 이름이 섞여 있어서 책마다 미리 걸러 둔다. 출판사·다른 책 제목·분류 이름은 규칙으로, 문학 책의 등장인물 이름은 AI 모델에게 책 제목과 낱말을 한 번 보여 주고 골라내게 했다(결과를 내는 계산에는 AI가 없다).

5단계

다음 한 권 — 어디에나 끼는 책은 덜 친다

좋아한 책 12권이 이웃을 서른 권씩, 모두 360번 가리킨다. 겹친 것을 합치면 148권, 이미 고른 책과 책이 아닌 것을 빼면 후보는 139권이다. 후보마다 무게(함께 대출 3 · 마니아 2 · 다독자 1)를 더하고, 「별로」라고 한 책의 이웃은 1씩 뺀다.

  1. 360이웃을 가리킨 수12권 × 이웃 30
  2. 148서로 다른 책겹친 것을 합친다
  3. 139후보이미 고른 책·책이 아닌 것(DVD·음반) 뺌
  4. 40위쪽 후보흔한 책 보정·좋아하는 장르 점수 순
  5. 34한 줄로 묶은 뒤같은 책의 다른 권·판 묶음, 어린이책 뺌
  6. 5다음 한 권
그림 9. 다음 한 권까지 줄어드는 수.

여기에 흔한 책 보정을 곱한다. 「다독자 추천」 목록에는 어느 책이든 비슷한 인기 책이 들어 있어서, 보정이 없으면 어디에나 끼는 책이 늘 1위가 된다. 그래서 여러 책의 목록에 두루 든 책일수록 점수를 깎고, 내가 좋아한 책들과만 이어진 책은 덜 깎는다. 검색 엔진이 「은·는·이·가」처럼 어디에나 나오는 말은 덜 세고 드문 말을 더 세는 방식(TF-IDF)과 같은 원리다.

고치기 전 몇 권이 가리키나 먼저

  1. 안녕이라 그랬어안녕이라 그랬어김애란11권
  2. 아버지의 해방일지아버지의 해방일지정지아10권
  3. 혼모노혼모노성해나10권
  4. 이중 하나는 거짓말이중 하나는 거짓말김애란9권
  5. 절창절창구병모8권

고친 뒤 흔한 책 보정 점수 순

  1. 달러구트 꿈 백화점달러구트 꿈 백화점이미예215점
  2. 방금 떠나온 세계방금 떠나온 세계김초엽152점
  3. 아버지의 해방일지아버지의 해방일지정지아131점
  4. 채식주의자채식주의자한강127점
  5. 천 개의 파랑천 개의 파랑천선란125점

「안녕이라 그랬어」 고치기 전 1위

목록무게든 목록보정점수
다독자115,561× 3.033.1
합계33.1

「방금 떠나온 세계」 고친 뒤

목록무게든 목록보정점수
함께 대출349× 7.723.2
마니아48× 9.437.7
좋아하는 장르 「SF」× 2.50152.2
합계152.2
그림 10. 같은 열두 권, 다른 계산. 무게 = 좋아한 책들과 이어진 무게(함께 대출 3·마니아 2·다독자 1의 합) · 든 목록 = 이 책이 다른 책들의 그 목록에 든 수 · 보정 = log(이웃 목록이 있는 책 112,471권 ÷ (1 + 든 목록)). 「안녕이라 그랬어」는 좋아한 책 11권과 이어졌지만 거의 다 다독자 목록이고, 그 책은 다른 책 5,561권의 다독자 목록에 들어 있어 점수가 깎인다.

10월 22일에는 둘을 더했다. 「별로」라고 한 책의 이웃은 이웃 무게만큼 빼고, 별로라고 한 책들에 몰린 장르는 덜 친다. 그리고 4단계의 좋아하는 장르(평균보다 몇 배 — 두 권 이상 든 장르만, 세 배까지)를 후보 점수에 곱한다. 그림 10 오른쪽 표의 마지막 줄이 그 곱이다. 장르를 정답으로 쓰지 않는 두 시험으로 쟀다(10월 22일 밤 다시 — 같은 책의 판·권은 통째로 가리고 바구니는 6,000번) — 책결을 쓴 기기들에서(224번 — 표본이 작아 참고값) 좋아한 책 하나를 가리고 열 권 안에서 다시 찾기 39.7% → 42.0%, 도서관에서 한 책을 빌린 사람들이 함께 빌린 책 아홉 가운데 하나를 가리고 찾기 56.0% → 55.1% — 0.9점 내려갔다. 좋아하는 장르를 미는 만큼 「함께 빌린 책」에서는 조금 멀어진다. 곱하는 세기를 두 배로 올리면 장르는 더 맞지만 함께 빌린 책 찾기가 더 떨어져서, 이 세기에서 멈췄다.

다음 한 권 ↓ · 좋아한 책 →불편한 편의점1종의 기원2완전한 행복3라플라스의 마녀4파친코5우리가 빛의 속도로 갈 수 없다면6나미야 잡화점의 기적7어서오세요, 휴남동 서점입니다8지구 끝의 온실9소년이 온다10사피엔스 유인원에서 사이보그까지, 인간 역사의 대담하고 위대한 질문11밝은 밤12이어진 권수 · 점수
달러구트 꿈 백화점달러구트 꿈 백화점이미예11함마함마다3함7함함다7함함다3함5권 · 215점
방금 떠나온 세계방금 떠나온 세계김초엽5함마2마2권 · 152점
아버지의 해방일지아버지의 해방일지정지아4함다4함다4함다4함다1다4함다4함다3함1다4함다10권 · 131점
채식주의자채식주의자한강12함마다함마다1권 · 127점
천 개의 파랑천 개의 파랑천선란4함다4함다2권 · 125점

옆으로 밀면 열두 권까지 보인다 →

1 불편한 편의점 · 2 종의 기원 · 3 완전한 행복 · 4 라플라스의 마녀 · 5 파친코 · 6 우리가 빛의 속도로 갈 수 없다면 · 7 나미야 잡화점의 기적 · 8 어서오세요, 휴남동 서점입니다 · 9 지구 끝의 온실 · 10 소년이 온다 · 11 사피엔스 유인원에서 사이보그까지, 인간 역사의 대담하고 위대한 질문 · 12 밝은 밤

그림 11. 책결의 표는 사람×작품이 아니라 책×책이다. 칸의 숫자는 그 좋아한 책이 다음 책과 이어진 무게(함께 대출 3·마니아 2·다독자 1), 작은 글자는 어느 목록인지(함·마·다). 오른쪽 끝은 이어진 권수와 흔함 보정 뒤 점수다.

「달러구트 꿈 백화점」는 좋아한 12권 가운데 5권과 이어져 있다. 결과 화면의 근거 줄 「좋아한 책 5권과 이어짐 · 「불편한 편의점」, 「나미야 잡화점의 기적」 담기」는 그림 11의 첫 줄을 옮긴 것이다. 다섯 줄이 같은 근거로 끝나지 않게, 앞 줄에 덜 나온 책부터 짝을 돌린다. 근거는 그 책과 실제로 이어진 책에서만 고른다. 없는 관계를 지어내지 않는다.

처음 읽는 한 권 — 책을 거의 안 읽는 사람의 문

2025년 국민 독서실태 조사(문화체육관광부, 2026년 3월 발표)에서 성인의 연간 종합독서율은 38.5%였다 — 열에 여섯은 한 해에 책을 한 권도 읽지 않는다. 그 사람에게 「읽어 본 책인가요?」는 열리지 않는 문이다. 그래서 고르기에 다른 문을 하나 두었다(/고르기?첫책=1, 10월 23일). 읽어 봤나가 아니라 끌리나를 묻는다 — 끌려요·글쎄요 둘뿐이고, 다섯 장이면 처음 읽을 한 권이 나온다. 처음 읽는 사람은 첫 결과를 판단할 근거가 없으니 한 번에 한 권만 보여 준다 — 「이런 책은 어때요?」에서 바로 읽어 볼게요(담아 둔 책에) 아니면 더 찾아볼래요(다음 책)로, 셋까지만. 셋을 다 보면 표지를 더 고르게 한다.

후보는 첫 카드 1,500권 가운데 1,121권이다 — 어른 교양·실용·청소년 책이고, 2권 이상으로 이어지는 권차가 아니며, 국립중앙도서관 서지의 쪽수로 360쪽을 넘는 책은 뺐다(쪽수를 아는 1,209권 가운데). 짧은 책이 첫 책에 맞는다는 생각은 영국의 Quick Reads(짧은 책·인기 작가로 읽기 자신이 없는 어른을 들이는 사업, 2006년~)에서 빌렸다. 점수는 「다음 한 권」과 같은 계산이다 — 끌린 표지 다섯 장을 좋아한 책 자리에 놓고, 이웃 투표·흔한 책 보정·좋아하는 장르 무게를 그대로 쓴다. 흔한 책 보정을 줄이거나 없애는 판은 더 많은 사람에게 같은 책을 주어서 쓰지 않았다. 카드 아래에는 도서관 정보나루의 책 소개에서 한 문장을 보여 준다 — 표지만으로 고르기엔 모자란 사람을 위해서다.

끌린 표지는 그 사람 기기에만 남고 어디에도 보내지 않는다. 읽고 좋았던 책과 끌린 표지는 다른 것이라, 「좋아요 기록 제공」에도 「같은 책을 좋아한 사람들의 책」에도 섞이지 않는다. 다만 첫 책을 읽고 「읽었어요 · 좋았어요」를 누르면 그때부터는 읽은 책이 되어 평소 결에 들어간다.

재는 법은 아직 가설 위에 있다 — 끌린 표지가 좋아한 책과 같은 신호라고 놓았다. 책결을 쓴 기기 11대에서 좋아한 책 가운데 다섯 권을 끌린 표지로 삼고 나머지를 가린 채 첫 책 후보 셋을 냈을 때(한 기기에 스무 번씩 다르게 뽑아 220번), 셋 안에 가린 책이 든 시도가 45.9%, 한 권만 냈을 때 맞은 시도가 24.1%였다. 많이 빌린 순으로 내면 셋 안에 드는 시도는 51.4%로 더 높지만, 시도의 89%가 같은 책을 1위로 받는다 — 서점 매대처럼 모두에게 한 권을 내미는 것이다(책결은 11%). 책을 읽지 않던 사람의 기록은 아직 없다 — 첫 책 뒤의 「읽었어요」가 쌓이면 그 기록으로 다시 잰다.

새로 나온 책 알림 — 드물게, 근거가 있을 때만

좋아요가 열 권 넘은 사람이 다시 들어오면, 그사이 나온 새 책 가운데 꼭 맞을 만한 한 권을 맨 위에 띄운다. 새 책 자료는 국립중앙도서관 ISBN 서지 정보에서 매일 아침 받는다(종이책만, 하루 400~500권).

띄우는 근거는 넷뿐이다.

새 작품이 아닌 것은 뺀다 — 개정판·리커버·특별판·문고본, 전집·선집·작품집, 큰글자·필사책·다이어리 같은 판, 여러 출판사가 거듭 내는 고전의 새 판(한 작품을 다섯 곳 이상에서 낸 작가), 여러 사람이 쓰거나 엮은 책, 연도가 붙은 전망서, 수험서·어학 교재. 자비 출판 판과 어린이 책도 뺀다.

띄우는 횟수도 묶어 둔다. 화면을 열 때 한 권, 새로 띄우는 책은 이레에 두 권까지, 같은 작가는 60일에 한 번. 한 책은 두 번까지만 보여 주고, 「담아 두기」「읽었어요」「관심 없어요」 가운데 하나를 누르면 다시 띄우지 않는다. 별로라고 한 책이 있는 작가의 새 책은 띄우지 않는다. 작가·다음 권 알림은 나온 지 60일, 도서관 확인과 호응은 쌓이는 데 시간이 걸려 120일 안의 책까지 본다.

후보는 좋아한 책 목록을 받은 서버가 그 자리에서 맞춰 돌려주고 남기지 않는다. 띄울지와 몇 번 띄웠는지는 그 기기에만 적힌다.

좋아요 기록 제공 — 처음엔 도서관 기록, 갈수록 쓰는 사람의 기록

처음 추천은 전국 공공도서관에서 함께 빌린 기록으로 한다. 책결을 쓰는 사람의 좋아요·별로가 쌓이면 그 기록이 더해진다 — 「같은 책을 좋아한 사람들의 책」과 새 책 알림의 호응 근거가 여기서 나온다. 그래서 결과 보기 단추 옆에 「좋아요 기록 제공」 체크가 있다. 처음엔 체크되어 있다.

언제 보내나: 체크된 채로 결과를 처음 볼 때, 그때까지 누른 것을 한 번에 보낸다. 그 뒤로는 누를 때마다, 그리고 책결에 들어올 때마다 이 기기의 기록을 서버 장부와 맞춘다 — 빠지거나 바뀐 누름을 올린다. 그 전에는 「처음 눌렀다」는 횟수만 책 번호 없이 센다. 나만의 키를 만들거나 불러오면 같은 동의로 치고, 그 키로 쓰는 기기들을 한 사람으로 잇는다(체크를 일부러 끈 기기는 빼고).

보내는 것은 좋아요·별로를 누른 책의 ISBN과 누른 때, 그리고 화면을 열고 단추를 누른 횟수다. 이름·연락처·위치는 받지 않고, 기기마다 만든 무작위 번호로만 모인다. 체크를 풀면 앞으로 누르는 책은 그 기기에만 남고, 이미 보낸 기록과 키 이음도 지운다. 그 뒤로는 단추를 누른 횟수만 책 번호 없이 남는다. 도서관 기록으로 하는 추천은 그대로이고, 다른 사람의 기록으로 하는 추천만 빠진다.

고칠 때마다 측정한다

위의 장르·평균보다 몇 배·흔한 책 보정은 2026년 10월 19일에 고친 것이다. 고치기 전후를 같은 지표로 쟀다. 책결을 실제로 쓴 기기들의 기록으로 한 번, 도서관 대출 데이터로 만든 가상 독자로 한 번. 장르 취향을 아는 가상 독자가 책결을 처음부터 끝까지 눌러 보는 내부 시험에서도 같은 방향이 나왔다. 실제 쓰는 사람이 늘면 진짜 독자 기록으로 다시 잰다.

고치기 전고친 뒤
실제 기기 — 좋아한 책 하나를 가리고 다음 한 권 열 권 안에서 맞히기27.2%39.7%기기 11대 · 224번(같은 책의 판·권은 통째로 가림 · 10월 22일 밤 다시) — 표본이 작아 참고값
가상 독자 300명에게 나간 추천 책 가짓수46권239권인기 책 300권 가운데 열 권을 좋아한 독자
가장 많이 추천된 책을 받은 독자90%75%같은 시험
다독자 목록에만 기대 올라온 추천29%0%같은 시험
한 결로 읽는 가상 독자 300명에게 나간 추천 책 가짓수164권430권서로 이어진 책들을 좋아한 독자
그림 12. 흔한 책 보정 전후(이웃 목록이 있는 책 11만 2천 권으로 다시 측정 — 첫 줄은 10월 22일 밤, 나머지는 10월 20일. 처음 고친 2026년 10월 19일에 5만 4천 권으로 쟀을 때도 같은 방향이었다). 가상 독자는 도서관 대출 데이터만으로 만든 독자다 — 첫 카드의 책이나 서로 이어진 책을 열 권 좋아했다고 놓고 다음 한 권을 낸다.

해 보고 버린 것도 있다. 같은 작가는 한 권만 내게 하면 겹침은 없어지지만 맞히기가 떨어졌다. 첫 카드를 장르별로 번갈아 세우는 것도 나아지는 게 없었다. 측정해서 나빠지면 버린다.

10월 21일에는 네 가지를 더 고쳤다. 같이 읽는 사람을 좋아한 책마다 재게 했다(4단계). 장르 이름표의 낱말 규칙을 고쳐, 첫 카드 소설 120권의 장르를 미리 적어 둔 정답표와 견주면 맞는 비율이 82%에서 88%로 올랐다. 낱말에서 등장인물 이름·작품 제목·출판사를 미리 걸러 냈다(그림 8). 처음 고르는 카드도 앞쪽 60장은 많이 읽힌 책부터 보여 준다 — 같은 분류가 셋 내리 나오지 않게. 저녁에는 장르 이름을 서점 갈래에 맞추고(일반 소설·추리/미스터리·공포/호러·심리), 분류번호를 잘못 읽던 자리(글쓰기 책·희곡·형법 책)를 바로잡았다. 장르 기준은 4단계에 있다.

10월 22일에는 다음 한 권에 「별로」와 좋아하는 장르를 더 반영했다(5단계). 같은 날 해 보고 버린 것이 둘이다. 좋아한 책을 장르 묶음으로 나눠 묶음마다 한 권씩 내는 방식, 이웃의 이웃까지 걸어가 숨은 책을 찾는 방식 — 둘 다 위의 두 시험에서 오히려 떨어졌다.

같은 날 저녁에는 빠진 결 한 자리를 더했다. 좋아한 책의 15% 넘게(두 권 이상) 차지한 장르가 다섯 권에 하나도 없으면, 장르가 다른 책과 겹치는 가장 아래 한 권을 그 장르에서 점수가 가장 높은 책으로 바꾼다. 그 사람이 좋아한 장르 안의 책을 먼저 고르고, 한 자리까지만 바꾼다. 단서가 없는 「일반 소설」은 빠진 결로 치지 않는다. 추천 연구의 「장르 비율 맞추기」(Steck, 2018)를 좁힌 꼴이다 — 비율을 통째로 맞추면(세기 0.5) 이 보기 독자의 SF 한 권이 일반 소설로 바뀌어 좋아하는 장르의 색이 흐려져서, 빠진 결만 채운다. 이 예시는 빠진 결이 없어 다섯 권이 그대로다. 장르를 정답으로 쓰지 않는 시험으로는 도서관 바구니 맞히기 55.1% → 55.1%(그대로), 실제 기기 감추고 맞히기(224번 — 표본이 작아 참고값) 42.0% → 43.3%.

10월 22일 밤에는 다른 추천 방식 셋과 같은 시험에 세웠다 — 「이 책을 빌린 사람이 빌린 책」을 그대로 내는 방식(온라인 서점의 「함께 산 책」 꼴), 몇 권이 가리키나로 줄 세우는 방식(10월 19일 전 책결), 많이 빌린 순. 바구니 ①은 정답이 「함께 대출」 목록이라 그 목록을 그대로 쓰는 방식에 유리한 시험이어서, 마니아·다독자 목록으로 만든 바구니 ②도 같이 쟀다. ①을 이기려고 「함께 빌린 책」 쪽으로 기울여 보면 실제 기기 맞히기가 43.3% → 37.5%로 떨어져서 넣지 않았다. 섞는 정도·무게·인기 맞추기처럼 계산을 쉰세 가지로 바꿔 봤지만, 어느 쪽이든 한 시험이 오르면 다른 시험이 떨어져 지금 계산을 그대로 뒀다.

실제 기기 감추고 맞히기224번 · 참고값바구니 ① 함께 대출6,000번바구니 ② 마니아·다독자6,000번
책결43.3%55.1%41.4%
「이 책을 빌린 사람이 빌린 책」 그대로31.7%58.1%34.9%
몇 권이 가리키나 순(10월 19일 전 책결)27.2%51.1%39.7%
많이 빌린 순21.4%4.1%0.5%
그림 13. 같은 시험으로 견주기(10월 22일 밤). 같은 기기 기록·같은 바구니로 쟀다. 열마다 가장 높은 값을 굵게. 감추고 맞히기는 같은 책의 판·권을 통째로 가린다.

견주어 보면

별점 표 채우기행렬 인수분해책결도서관 이웃 투표
바탕사람들이 매긴 별점전국 도서관이 이미 센 대출 기록(정보나루)
처음 온 사람별점이 쌓일 때까지 짐작할 거리가 적다좋아요 열 번이면 첫 결과
결을 나타내는 값학습이 정한 특성(F1·F2) — 이름이 없다읽는 결 유형 — 축·자리·이름과 계산이 정해져 있다
계산하는 곳서버에서 미리 학습쓰는 사람의 폰·PC
추천의 근거짐작한 점수실제로 이어진 좋아한 책(「좋아한 책 N권과 이어짐」)
문장—AI가 짓지 않는다 — 없는 책을 지어내지 않게
그림 14. 두 방식 견주기.

결과 계산은 쓰는 사람의 폰·PC 안에서 한다. 서버는 좋아한 책의 이웃 자료를 날라 주고, 「같은 책을 좋아한 사람들의 책」과 새 책 알림의 후보만 그 자리에서 맞춰 돌려준다. 쓰는 사람이 늘어도 서버가 할 계산은 크게 늘지 않는다. 이름이나 연락처는 받지 않는다. 누른 기록은 기기마다 만든 무작위 번호로만 남고, 「좋아요 기록 제공」 체크를 풀면 지운다.

아직 못 한 것

참고 — 「넷플릭스, 왓챠…OTT플랫폼의 추천시스템은 어떻게 동작할까?」(IT비즈뉴스, 2021-08-10) · G. Linden, B. Smith, J. York, 「Amazon.com Recommendations: Item-to-Item Collaborative Filtering」(IEEE Internet Computing, 2003)
자료 — 국립중앙도서관 「도서관 정보나루」(CC BY). 표지는 각 서점의 것이다. 숫자는 2026년 10월 22일 산 주소의 보기 화면(/고르기?demo=1)에서 잰 값이라, 자료가 늘면 조금씩 달라질 수 있다.