딥러닝 A to Z · 3-5

텍스트 — 글자가 숫자 벡터가 되기까지

컴퓨터에게 "초파리"는 처음부터 숫자다. 글자마다 정해진 번호(유니코드)가 있고, 그 번호를 바이트로 저장한다. 신경망에 넣으려면 문장을 토큰으로 나누고, 토큰마다 번호를 붙이고, 번호를 의미가 담긴 벡터(임베딩)로 바꾸고, 순서 정보를 더해야 한다. 36문장짜리 작은 말뭉치로 모든 단계를 직접 계산한다.

11,172자조합할 수 있는 현대 한글 음절 (19 × 21 × 28)
3바이트한글 한 글자의 UTF-8 크기
10 → 3개"초파리가 꽃을 좋아한다"의 토큰 수 (BPE 합치기 0번 → 60번)
0.970"초파리는"과 "모기는"의 임베딩 코사인 유사도
36문장이 페이지의 말뭉치
2개Colab에서 바로 돌리는 코드
1유니코드

유니코드 — 글자마다 붙은 번호, 그리고 바이트

한글 음절 번호 = 0xAC00 + (초성 × 21 + 중성) × 28 + 종성유니코드 표준 3.12절

예시 문장
2토큰 나누기

토큰 나누기 — 글자도 단어도 아닌 "자주 나오는 조각"

글자 단위로 나누면 토큰이 너무 많아지고, 단어 단위로 나누면 처음 보는 단어를 다루지 못한다. BPE는 말뭉치에서 가장 자주 붙어 나오는 두 조각을 하나로 합치기를 되풀이해 그 중간을 찾는다.

합치기 횟수
문장
3토큰 번호

토큰 번호 — 사전에서 몇 번째 칸인가

BPE를 60번 합친 뒤 말뭉치에 나오는 토큰을 모으면 사전이 된다. 토큰마다 사전의 칸 번호가 붙는다. 사전에 없는 토큰은 "모름" 번호를 받는다.

문장
4임베딩

임베딩 — 번호를 "뜻이 담긴 좌표"로

번호 54와 55는 이웃 번호지만 뜻은 아무 상관이 없다. 그래서 번호마다 여러 칸짜리 벡터를 붙인다. 비슷하게 쓰이는 단어끼리 가까운 좌표를 갖게 하는 것이 목표다. 여기서는 "같은 문장 ±2칸 안에서 함께 나온 횟수"로 단어 55개마다 8칸짜리 벡터를 만들었다.

단어

초보자를 위한 풀이

"함께 나오는 단어가 비슷하면 뜻도 비슷하다"는 생각은 오래되었다. 단어와 문서의 출현 표를 특잇값 분해로 줄여 숨은 의미 구조를 찾는 잠재 의미 분석(LSA)이 대표적인 초기 방법이다 [R2]. 이 페이지는 단어끼리 함께 나온 횟수 표에 log(1 + 횟수)를 취하고 고윳값 분해로 8칸을 뽑았다. 오늘날의 언어 모델은 임베딩을 다음 토큰 맞히기 학습의 일부로 함께 배운다. 섹션 5의 위치 정보도 이 벡터에 더한다.

5위치 정보

위치 정보 — 토큰 주머니로는 순서를 모른다

토큰을 순서 없이 주머니에 담아 세면(토큰 주머니) 순서가 사라진다. 한국어는 조사가 역할을 알려 주어 어순이 바뀌어도 뜻이 같을 때가 많지만, 늘 그렇지는 않다.

비교
6모델 처리

모델이 처리하는 방법 — 다음 토큰의 확률

글 → 토큰 → 번호 → 벡터(+위치) → 트랜스포머(3-8) → 다음 토큰의 확률. 가장 단순한 언어 모델은 바로 앞 단어만 보고 다음 단어를 센다. 이 말뭉치로 직접 계산해 보고, 트랜스포머가 무엇을 더 하는지 본다.

앞 단어

Colab 코드 — 이 페이지를 직접 실행해 보기

두 코드 모두 Colab에 기본으로 설치된 라이브러리만 쓴다. "노트북(.ipynb) 내려받기" 후 Colab에서 파일 → 노트북 업로드로 열거나, 복사해서 새 노트북 칸에 붙여 넣는다.

코드 1 · 글자가 숫자가 되기까지 — 유니코드, 토큰, 번호, 임베딩섹션 1~6과 연결 · numpy, matplotlib · CPU 1초

유니코드·UTF-8, 한글 자모 공식, BPE 학습과 적용, 토큰 번호, 함께 나온 횟수로 만든 임베딩, 바로 앞 단어 확률을 라이브러리 없이 계산한다. 내 데이터로 바꾸려면 CORPUS를 바꾼다.

실행 결과 (2026-10-03 실행, Python 3.12 · numpy 2.4 · CPU). 계산에 난수가 없어 언제 실행해도 같다.
코드 2 · scikit-learn으로 같은 흐름 — 토큰 번호, 문장 벡터, 비슷한 문장섹션 2·3·4와 연결 · numpy, scikit-learn · CPU 1초

실무 라이브러리로 문장을 "문장 × 토큰" 행렬로 바꾸고, 단어 단위와 글자 조각 단위를 비교하고, TF-IDF와 잠재 의미 분석으로 비슷한 문장을 찾는다.

실행 결과 (2026-10-03 실행, scikit-learn 1.8 · numpy 2.4 · CPU). TruncatedSVD는 시드 0으로 고정했다.

AI 응용 프롬프트 — 이 코드를 출발점으로 삼기

ChatGPT, Qwen, Claude 같은 AI 도우미에 붙여 넣는 프롬프트다. "복사"를 누르면 프롬프트 뒤에 고른 코드가 함께 붙는다. 〔 〕 안을 내 상황으로 바꿔 쓰면 된다.

함께 붙일 코드

AI의 답은 출발점일 뿐이다. 제안된 논문·수치·라이브러리 함수는 반드시 원문과 공식 문서로 확인한다. 공모전·논문에 AI 도움을 받았다면 주최 측과 학술지의 규정에 따라 사용 사실과 범위를 밝힌다.

용어 정리

본문의 노란 점선 밑줄과 같은 사전이다. 시리즈 전체에서 같은 표기를 쓴다. 섹션 이름을 누르면 처음 나온 곳으로 간다.

비유 모음 — 그리고 비유가 틀리는 지점

비유는 이해의 첫걸음이지만 오해의 씨앗도 된다. 초파리·뇌 비유에는 강도를 표시했다. 직접 실제로 같은 일을 한다는 근거가 있음 · 부분 일부 성질만 닮음 · 없음 대응하는 것이 알려지지 않음

개념일상 비유초파리·뇌 비유비유가 틀리는 지점
유니코드전 세계 글자에 붙인 주민등록번호없음번호는 글자를 구별할 뿐, 글자끼리 얼마나 비슷한지는 알려 주지 않는다
BPE자주 함께 쓰는 단어를 줄임말로 만들기 ("초파리" 한 덩어리)없음줄임말은 사람이 뜻을 보고 만들지만, BPE는 횟수만 보고 합친다. 뜻과 상관없는 조각도 생긴다
토큰 번호도서관 책의 청구 번호없음청구 번호는 주제별로 모이지만, 토큰 번호는 가나다순이나 등장 순서일 뿐이다
임베딩지도 위 좌표: 가까운 동네끼리 비슷하다부분 초파리 버섯체는 냄새를 여러 케니언 세포의 활성 패턴(벡터)으로 나타낸다버섯체는 냄새를 넓게 퍼뜨려 구별하기 쉽게 만들지만(희소), 임베딩은 몇백 칸에 촘촘히 담는다. 만드는 방법도 다르다
토큰 주머니문장을 낱말 카드로 잘라 봉투에 넣기없음봉투에서 카드를 꺼내도 원래 순서는 알 수 없다. 한국어는 조사 카드가 일부 단서를 준다
다음 토큰 확률끝말잇기에서 다음에 올 말 짐작하기부분 뇌도 다음에 올 말소리를 예측한다는 연구가 있다뇌의 예측은 뜻·상황·몸의 경험과 얽혀 있다. 모델은 글자 조각의 통계만으로 계산한다

저자 소개와 레퍼런스

E-1 저자 소개 · E-2 학술 레퍼런스 · E-3 그림 참고 자료

E-1 저자 소개

안상선 ((주)M-Robo 대표)

한국전기안전공사, 매일경제신문을 거쳐 현재 매일경제 사외벤처 (주)M-Robo를 창업해 대표로 재직하고 있다. (주)M-Robo는 언론사 사내 벤처로 시작한 미디어 벤처로, 국민일보에 로봇기자(스톡봇)을 서비스 했으며, 한국인터넷진흥원, 한국언론진흥재단, 한국방송통신전파진흥원 등에서 다수의 프로젝트를 진행했다. 이후 자체 A.I 뉴스 신문인 Money-Robo를 서비스 중이다. 대표 재직 중 아시아오픈 데이터 해커톤 우승, 데이터창업 분야 공로로 행정안전부 장관상을 2회 수상했으며, 인공지능 및 블록체인 분야에 대한 5개 특허 발명 및 등록자이다. 저서로는 “AI범죄와 자기방어”가 있으며, 핀테크분야, 통계학, 인공지능 분야에 대해서 한국기술교육대학교 온라인평생교육원 이러닝 콘텐츠 개발을 진행했다. 최종학위는 경제학 박사(동국대, 미시수리경제학)이다. 국민대학교, 호서대학교 등 여러 대학교에서 데이터 및 인공지능과 관련한 과목을 강의하고 있다. 자세한 프로필

강의

  • 안상선 (2025). 「비즈니스를 위한 데이터 과학」 강의안. 한국열린사이버대학교 인공지능융합학과.
  • 안상선 (2025). [K-디지털] 인공지능 자연어 처리. STEP(스마트직업훈련플랫폼), 한국기술교육대학교 온라인평생교육원.
  • 안상선 (2024). [K-디지털] 핀테크 데이터 분석 기초. STEP(스마트직업훈련플랫폼), 한국기술교육대학교 온라인평생교육원.

STEP 강의 바로가기: link.step.or.kr/1qyVoJ · link.step.or.kr/M9na9N · link.step.or.kr/brqEyc
사이트 개편으로 접속이 원활하지 않을 경우에는 www.step.or.kr로 접속 바랍니다.

논문과 발표

  • 안상선 (2025). 국민노후보장패널데이터를 활용한 가구지출 예측 모델 연구: 인공지능 모델 기반 접근. 「미래사회」, 16(2). 원문
  • 안상선 (2025). 국민노후보장패널데이터를 활용한 가구지출 예측 모델 연구: 인공지능 접근. 국민노후보장패널 학술대회 발표자료(2025.05.13), 국민연금공단 국민연금연구원. 발표자료
  • 안상선 (2025). SNS 텍스트 기반 마약 의심 거래 탐지 알고리즘에 대한 연구: 패턴 및 맥락 분석을 중심으로. 「미래사회」, 16(1). 원문
  • 안상선 (2024). 금융분야의 이상탐지 모델 보안을 위한 통계 기반의 적대적 데이터 대응 방안: 실증적 분석과 시뮬레이션 결과. 「미래사회」, 15(3). 원문
  • 안상선 (2024). 인공지능을 활용한 가상 캐릭터 특성 기반 SNS 포스팅 탐지 솔루션. 2024 Summer Newmedia Party 포스터 발표(2024.06.19), 서울미디어대학원대학교.
  • 안상선 (2024). 산업재해 패널 데이터를 활용한 머신러닝 모델. 제10회 산재보험패널 학술대회 포스터 발표(2024.05.17), 근로복지공단 근로복지연구원.
  • 안상선 (2024). 가상 자산 시계열 데이터의 분석과 예측: 시계열 모델 및 인공지능 모델의 비교, 개선점 제시. 「미래사회」, 15(1). 원문

E-2 학술 레퍼런스

  1. [R1] Sennrich, R., Haddow, B., & Birch, A. (2016). Neural machine translation of rare words with subword units. Proceedings of the 54th Annual Meeting of the ACL, 1715–1725. doi:10.18653/v1/P16-1162 — 섹션 2 (BPE 토큰 나누기)
  2. [R2] Deerwester, S., Dumais, S. T., Furnas, G. W., Landauer, T. K., & Harshman, R. (1990). Indexing by latent semantic analysis. Journal of the American Society for Information Science, 41(6), 391–407. doi:10.1002/(SICI)1097-4571(199009)41:6<391::AID-ASI1>3.0.CO;2-9 — 섹션 4, 코드 2 (잠재 의미 분석)
  3. [R3] The Unicode Consortium. The Unicode Standard, 3.12절 Conjoining Jamo Behavior (한글 음절의 조합·분해 공식). unicode.org — 섹션 1

E-3 말뭉치와 그림 참고 자료

  • 말뭉치는 36문장짜리 예시다
  • 숫자는 코드 1과 같은 계산이다

교육자를 위한 TIP

강사, 실무 OJT 담당자, 튜터를 위한 운영 안내다. 시간은 예상치이므로 실제 수업에 맞춰 조정한다.

대상고객 문의·리뷰·문서 같은 글 데이터를 다루려는 대학생·실무자. 언어 모델이 글을 어떻게 받아들이는지 궁금한 사람
선수 지식벡터와 코사인 유사도의 개념. 3-8의 위치 정보를 알면 섹션 5·6이 쉽다
학습 목표① 글자 → 유니코드 → 바이트를 설명한다 ② BPE가 토큰 사전을 만드는 과정과 처음 보는 단어를 다루는 방법을 설명한다 ③ 번호 · 임베딩 · 위치 정보가 각각 왜 필요한지 설명한다
예상 시간읽기 35~45분 · 시연 20분 · Colab 실습 25분 (코드 1 15분, 코드 2 10분)

운영안 세 가지

강의형 50분

개념 중심

도입 5분(섹션 1 이모지 4바이트) → 섹션 2 BPE 15분 → 섹션 3·4 15분 → 섹션 5 dog bites man 5분 → 섹션 6 5분 → 확인 문제 5분.

실무 OJT 90분

업무 적용 중심

우리 팀 문서 30문장으로 말뭉치 만들기 15분 → 코드 1의 CORPUS 바꿔 BPE·임베딩 다시 계산 30분 → 코드 2로 비슷한 문의 찾기 25분 → "모름" 토큰과 개인정보 처리 토론 20분.

1:1 튜터링

수준별 진도

입문자는 섹션 1·2·4만. 중급자는 BPE 합치기 세 번을 손으로 해 보게 한 뒤(단어 빈도 세기 → 가장 잦은 쌍 찾기) 섹션 2의 규칙 목록과 대조한다.

섹션별 운영 포인트

섹션멈춰서 물어볼 질문조작 팁
1 유니코드"같은 글자 수라도 저장 크기가 다른 이유는?"한글 문장 → "Hello 초파리" → 이모지 문장 순서
2 토큰 나누기"왜 어미 '한다'가 가장 먼저 합쳐졌을까?"0 → 60번, 이어서 처음 보는 단어 문장
3 토큰 번호"54번이 5번보다 크다는 게 뜻이 있을까?""AI가 꽃을 본다"에서 "모름" 토큰을 짚는다
4 임베딩"'곤충'을 가르친 적이 없는데 왜 곤충끼리 모였을까?"초파리는 → 신경망은 순서로 이웃의 성격을 비교한다
5 위치 정보"한국어는 어순이 자유로운데 위치 정보가 왜 필요할까?"세 비교를 차례로 누른다
6 모델 처리"앞 단어 하나만 보는 모델의 약점은?""초파리는"과 "꿀벌은"의 확률을 비교한다

흔한 오해 Top 5

오해바른 설명보여 줄 장면
토큰 = 단어토큰은 말뭉치에 따라 정해지는 조각이다. 글자일 수도, 단어일 수도, 그 중간일 수도 있다섹션 2
한글 한 글자는 1바이트UTF-8에서 한글 음절은 3바이트다섹션 1
토큰 번호가 가까우면 뜻도 가깝다번호는 사전의 칸 위치일 뿐이다. 뜻은 임베딩에 담긴다섹션 3·4
임베딩이 가까우면 동의어다함께 쓰이는 단어도 가까워진다. "비슷함"의 뜻은 만드는 방법에 달려 있다섹션 4 "신경망은"
모델은 글을 사람처럼 이해한다번호와 벡터로 다음 토큰의 확률을 계산한다. 이해했는지는 따로 따져야 할 문제다섹션 6

확인 문제 (해설은 눌러서 펼치기)

Q1. "가"의 유니코드 번호는 0xAC00이다. 초성 ㄱ(0), 중성 ㅏ(0), 종성 ㄱ(1)인 "각"의 번호는?

0xAC00 + (0 × 21 + 0) × 28 + 1 = 0xAC01.

Q2. "초파리 🙂"(공백 포함 5글자)를 UTF-8로 저장하면 몇 바이트인가?

한글 3자 × 3 + 공백 1 + 이모지 4 = 14바이트.

Q3. BPE에서 "가장 자주 붙어 나오는 쌍"은 무엇을 세는가?

말뭉치의 모든 단어에서 이웃한 두 조각의 쌍을, 그 단어가 나온 횟수만큼 세어 더한다. 가장 큰 쌍을 하나로 합친다.

Q4. 처음 보는 단어 "초파리들이"는 단어 단위와 BPE 단위에서 각각 어떻게 처리되나?

단어 단위에서는 사전에 없어 통째로 "모름"이 된다. BPE에서는 ["초파리", "들", "이"]처럼 아는 조각으로 나뉜다.

Q5. "dog bites man"과 "man bites dog"를 토큰 주머니로 나타내면? 무엇이 필요한가?

둘 다 {dog:1, bites:1, man:1}로 같다. 순서를 구별하려면 위치 정보가 필요하다.

Colab 과제

기본

코드 1의 CORPUS에 "나비는 꽃을 좋아한다", "나비는 날개가 있다"를 더해 다시 실행한다. "나비는"의 가장 가까운 단어를 확인하고, 섹션 4의 설명과 연결해 이유를 쓴다.

도전

코드 1의 bpe_train에서 합치기 횟수를 10·30·60·100으로 바꿔 가며 사전 크기와 문장당 평균 토큰 수를 표로 만든다. 사전 크기와 토큰 수의 맞바꿈을 설명하고, 업무 문서라면 어느 값을 고를지 근거를 쓴다.

난이도 조절과 더 배우기

입문자섹션 1의 자모 공식과 섹션 3은 건너뛰어도 흐름이 끊기지 않는다
심화BPE 말고 다른 토큰 나누기 방법(유니그램 언어 모델, 형태소 분석기 기반)을 조사해 비교하게 한다. 조사한 논문은 원문으로 확인한다
더 배우기안상선, 「비즈니스를 위한 데이터 과학」 강의안 (데이터 과학 전반) · STEP [K-디지털] 인공지능 자연어 처리 (이 편과 직접 연결) · STEP [K-디지털] 핀테크 데이터 분석 기초 (3-6과 연결)
강사용 자료확인 문제의 채점 기준과 과제 예시 답안은 교육자용 정답 페이지 (3-5)에서 볼 수 있다

수고하셨습니다!

「3-5 텍스트」 편을 끝까지 읽었어요. 연구실 식구들이 한마디씩 정리해 드립니다.

박사
박사글자가 숫자 벡터로 바뀌는 마법 같은 과정을 풀어 봤어요.
  • 한글 한 글자는 UTF-8로 3바이트
  • BPE는 자주 붙어 나오는 조각을 합쳐 토큰을 만든다
  • "초파리는"과 가장 가까운 단어는 "모기는"(0.970)
조수
조수곤충을 가르친 적도 없는데 곤충끼리 모였어요.
초파리 연구원
초파리 연구원모기랑 한 묶음이라니, 좀 섭섭한데.