20260411 인공지능기초실습 6주차
인공지능 기초 실습 – 토큰화와 임베딩 정리
1. 텍스트 처리 개요
-
인공지능은 자연어 자체를 이해하지 못하고 숫자로 변환하여 처리함
-
따라서 자연어 → 숫자 변환 과정이 핵심
-
주요 과정
- 토큰화 (Tokenization)
- 임베딩 (Embedding)
2. 토큰화 (Tokenization)
2.1 개념
- 문장을 의미 있는 작은 단위(토큰)로 분리하는 과정
- 컴퓨터가 처리할 수 있도록 텍스트를 분해하는 단계
2.2 토큰화 방식
1) 띄어쓰기 기반 토큰화
-
공백 기준으로 단어 분리
-
예:
- 입력: "아버지가 방에 들어가신다"
- 출력: ["아버지가", "방에", "들어가신다"]
-
단점: 한국어처럼 조사/어미가 붙는 언어에서 부정확
2) 음절 단위 토큰화
-
글자를 하나씩 분리
-
예:
- "아버지가" → ["아", "버", "지", "가"]
-
장점: 모든 언어 적용 가능
-
단점: 의미 손실 큼
3) 서브워드 토큰화
-
단어를 더 작은 의미 단위로 분리
-
예:
- "tokenization" → ["token", "ization"]
-
장점:
- 처음 보는 단어 처리 가능
- 데이터 효율성 증가
2.3 BPE (Byte Pair Encoding)
-
자주 등장하는 문자 쌍을 점점 합쳐서 토큰 생성
-
과정:
- 문자 단위로 분리
- 빈도 높은 쌍 찾기
- 반복적으로 병합
-
특징:
- Vocabulary 자동 구성
- OOV(미등록 단어) 문제 감소
3. 토큰화 실습 개념
3.1 Tokenizer
- 문장을 토큰으로 분리하는 객체
tokens = tokenizer.tokenize(text)
3.2 토큰 분리 예시
-
입력:
"I am studying tokenization." -
출력:
['I', 'Ġam', 'Ġstudying', 'Ġtoken', 'ization', '.'] -
특징:
- Ġ : 공백 포함 의미
- "tokenization" → "token" + "ization"
3.3 토큰을 숫자로 변환
token_ids = tokenizer.convert_tokens_to_ids(tokens)
-
예:
[40, 1097, 21630, 4037, 2065, 13] -
핵심:
- 각 토큰은 고유 ID를 가짐
- 모델은 이 숫자로 학습함
4. 임베딩 (Embedding)
4.1 개념
- 토큰을 의미를 가진 벡터로 변환
- 단순 숫자가 아닌 의미 정보 포함
4.2 특징
- 벡터 공간에서 의미적 유사성 표현
- 비슷한 단어는 가까운 위치에 배치됨
예:
- hot dog ↔ shawarma (유사)
- apple strudel ↔ dessert 계열
4.3 임베딩 공간
- 다차원 공간 (보통 100~1024차원)
- 각 축은 추상적 의미 (예: sweetness, sandwichness)
5. Word2Vec
5.1 개념
-
단어를 dense vector로 변환하는 모델
-
핵심 가설:
- "비슷한 문맥에서 등장하는 단어는 의미가 비슷하다"
5.2 One-hot vs Word2Vec
| 방식 | 특징 |
|---|---|
| One-hot | 희소 벡터, 의미 없음 |
| Word2Vec | 밀집 벡터, 의미 포함 |
5.3 유사도 계산 (코사인 유사도)
- 1: 동일 방향 (유사)
- 0: 무관
- -1: 반대 의미
5.4 모델 종류
CBOW
- 주변 단어 → 중심 단어 예측
- 빠르고 안정적
Skip-gram
- 중심 단어 → 주변 단어 예측
- 성능 좋음 (특히 데이터 적을 때)
6. 임베딩 활용
6.1 단어 관계 계산
-
예:
King - Man + Woman ≈ Queen Paris - France + Italy ≈ Rome
6.2 활용 분야
- 감성 분석
- 문서 유사도
- 추천 시스템
- 기계 번역
7. 임베딩 시각화
7.1 t-SNE
- 고차원 벡터 → 2차원으로 축소
- 비슷한 단어끼리 군집 형성
7.2 특징
- 같은 카테고리 단어끼리 가까이 위치
- 의미적 관계 시각적으로 확인 가능
8. 실습 코드 흐름
- 데이터 준비
- 토큰화
- Word2Vec 학습
- 벡터 추출
- t-SNE로 차원 축소
- 시각화
한줄 핵심 요약
- 토큰화: 문장을 쪼갠다
- 임베딩: 의미 있는 숫자로 바꾼다
- Word2Vec: 단어 의미를 벡터로 학습한다