본문 바로가기
카테고리 없음

(11/10일) 자연어처리(NLP) 핵심 정리: 토큰화부터 임베딩, 코사인 유사도까지

by proprocess-manager 2026. 11. 10.
반응형

자연어처리(NLP) 핵심 정리: 토큰화부터 임베딩, 코사인 유사도까지

오늘 수업에서는 자연어처리(NLP)의 기본이 되는 토큰화(Tokenization), 임베딩(Embedding), 코사인 유사도(Cosine Similarity)를 중심으로 학습했다. 텍스트를 컴퓨터가 처리할 수 있는 숫자 데이터로 변환하고, 문장 사이의 의미적 유사성을 계산하는 과정은 챗봇과 추천 시스템을 구현하는 데 중요한 기반이 된다.

특히 CountVectorizer와 TF-IDF 같은 전통적인 텍스트 분석 기법부터 SentenceTransformer와 Transformer 기반 모델까지 연결해서 이해하는 것이 중요했다.


1. 자연어처리(NLP) 전체 흐름

오늘 수업 내용을 전체적으로 연결하면 다음과 같은 흐름으로 이해할 수 있다.

텍스트(Text)
↓
전처리(Preprocessing)
↓
토큰화(Tokenization)
↓
임베딩(Embedding)
↓
유사도 계산(Similarity)
↓
RNN / Transformer
↓
BERT / GPT / SentenceTransformer
↓
ChatBot / 추천 시스템 / 검색 서비스

위 흐름은 NLP 기술을 이해하기 위한 개념적인 구조다. RNN과 Transformer는 서로 다른 신경망 구조이며, BERT와 GPT는 Transformer를 기반으로 발전한 모델 계열이다. SentenceTransformer는 문장 임베딩과 유사도 검색에 활용되는 모델 및 라이브러리다.


2. 토큰화(Tokenization)

2-1. 정의

토큰화란 텍스트를 컴퓨터가 처리할 수 있는 의미 단위(Token)로 분리하는 과정이다.

즉, 하나의 문장을 여러 개의 토큰으로 나누어 모델이 처리할 수 있도록 만드는 작업이다.

문장
↓
토큰들의 집합

교재에서는 토큰화를 텍스트를 의미 있는 단위로 나누는 작업이라고 설명한다.

2-2. 문장 토큰화(Sentence Tokenization)

하나의 텍스트를 문장 단위로 분리하는 방법이다.

오늘 날씨가 좋다.
점심을 먹었다.

↓

[
    "오늘 날씨가 좋다.",
    "점심을 먹었다."
]

2-3. 단어 토큰화(Word Tokenization)

문장을 단어 단위로 분리하는 방법이다.

I love you

↓

["I", "love", "you"]

2-4. 형태소 토큰화(Morpheme Tokenization)

형태소는 의미를 가지는 가장 작은 언어 단위다. 한국어는 조사와 어미가 단어에 결합하는 특성이 있어 형태소 분석이 중요하다.

꽃밭에 꽃이 많이 피었다.

↓

꽃밭 / 에 / 꽃 / 이 / 많이 / 피 / 었 / 다

2-5. 주요 토큰화 도구

도구 주요 기능
NLTK 영어 문장 및 단어 토큰화
Mecab 한국어 형태소 분석 및 품사 태깅
Okt(Konlpy) 한국어 형태소 분석, 정규화

NLTK를 이용한 영어 토큰화 예시:

from nltk.tokenize import sent_tokenize, word_tokenize

text = "I love AI. Natural Language Processing is interesting."

# 문장 단위 토큰화
sentences = sent_tokenize(text)

# 단어 단위 토큰화
words = word_tokenize(text)

print(sentences)
print(words)

한국어 NLP에서는 단순히 공백으로 나누는 것보다 형태소 분석이나 서브워드 토큰화가 중요한 경우가 많다.

핵심 정리

토큰화는 텍스트를 모델이 처리할 수 있는 단위로 분리하는 첫 번째 핵심 단계다.


3. 임베딩(Embedding)

3-1. 정의

임베딩이란 텍스트의 토큰이나 문장을 일정한 크기의 숫자 벡터로 표현하는 방법이다.

컴퓨터가 텍스트 데이터를 수학적으로 처리하고 학습할 수 있도록 문자 정보를 숫자 배열로 변환하는 과정이다.

문자(Text)
↓
숫자 벡터(Vector)

예를 들어 다음과 같이 표현할 수 있다.

삽살개

↓

[0.11, 0.80, 0.52, 0.76, 0.91]

3-2. 임베딩이 필요한 이유

컴퓨터는 사람, 강아지, 행복이라는 단어를 사람처럼 직접 이해하지 못한다. 따라서 텍스트를 숫자로 표현해야 통계 분석이나 머신러닝, 딥러닝 모델의 입력으로 활용할 수 있다.

임베딩은 단순한 숫자 변환을 넘어 학습 방식에 따라 단어 또는 문장의 의미적 특성과 문맥 정보를 벡터 공간에 표현할 수 있다.

3-3. 임베딩의 주요 종류

① CountVectorizer

BoW(Bag of Words)를 기반으로 문서에 등장하는 단어의 출현 횟수를 계산한다.

  • 단어의 등장 횟수를 수치화한다.
  • 단어 사전을 기준으로 벡터를 생성한다.
  • 구현이 간단하고 결과를 해석하기 쉽다.
  • 단어의 문맥이나 의미적 관계를 직접 반영하지 못한다.

② TF-IDF

TF-IDF는 단순히 단어의 출현 횟수만 계산하는 것이 아니라, 전체 문서에서 해당 단어가 얼마나 흔하게 등장하는지도 고려한다.

TF-IDF의 핵심 개념

자주 등장하는 일반적인 단어는 가중치를 낮추고, 특정 문서에서 상대적으로 중요한 단어는 가중치를 높인다.

일반적으로 자주 등장하는 단어
↓ 가중치 감소

특정 문서에서 중요한 단어
↓ 가중치 증가

TF-IDF는 문서 검색, 키워드 추출, 문서 유사도 분석 등에 활용된다.

③ SentenceTransformer

SentenceTransformer는 문장 전체를 하나의 밀집 벡터(Dense Vector)로 변환하는 데 활용되는 라이브러리다.

문장 임베딩 모델을 사용하면 문장의 의미를 벡터로 표현하고, 벡터 간 유사도를 계산해 의미가 비슷한 문장을 검색할 수 있다.

문장 A → [0.12, 0.85, 0.31, ...]
문장 B → [0.15, 0.82, 0.29, ...]

벡터 차원은 사용하는 모델에 따라 달라진다. 예를 들어 일부 SentenceTransformer 모델은 768차원 벡터를 생성하지만, 모든 모델이 768차원을 사용하는 것은 아니다.


4. 코사인 유사도(Cosine Similarity)

4-1. 정의

코사인 유사도는 두 벡터 사이의 각도를 이용해 벡터가 얼마나 유사한 방향을 가지고 있는지 측정하는 방법이다.

텍스트를 숫자 벡터로 변환했다면, 이제 두 문장의 의미가 얼마나 비슷한지 수학적으로 비교할 수 있다.

4-2. 공식

Cosine Similarity

(A · B) / (||A|| × ||B||)

두 벡터의 내적을 각 벡터의 크기로 나눈 값

  • A · B : 두 벡터의 내적
  • ||A|| : 벡터 A의 크기
  • ||B|| : 벡터 B의 크기

4-3. 결과 해석

유사도 의미
1 두 벡터의 방향이 동일함
0 두 벡터가 직교함
-1 두 벡터의 방향이 정반대임

일반적인 코사인 유사도의 수학적 범위는 -1부터 1까지다. 다만 CountVectorizer나 TF-IDF처럼 음수가 없는 벡터를 사용하는 경우에는 일반적으로 0부터 1 사이의 값이 나타난다.

또한 유사도 0은 벡터가 직교한다는 뜻이지, 두 문장이 현실적으로 아무런 관련이 없다는 것을 항상 의미하지는 않는다.

4-4. 실제 활용 사례

① 챗봇(ChatBot)

사용자 질문 A:
"이 요리 레시피 알려줘."

사용자 질문 B:
"이 요리 만드는 방법 알려줘."

          ↓

문장 임베딩 생성

          ↓

코사인 유사도 계산

          ↓

의미가 비슷한 질문으로 판단

          ↓

저장된 동일한 답변 반환

표현은 다르지만 의미가 유사한 질문을 찾아 적절한 답변을 반환할 수 있다. 이것이 검색 기반 챗봇의 기본적인 원리다.

② 추천 시스템(Recommendation System)

사용자가 선택한 영화
        ↓
영화 설명 및 줄거리 임베딩
        ↓
다른 영화의 벡터와 유사도 계산
        ↓
유사도가 높은 영화 검색
        ↓
추천 결과 제공

영화의 줄거리나 설명을 벡터로 변환하면 사용자가 선택한 영화와 내용이 비슷한 다른 영화를 추천하는 데 활용할 수 있다.


5. 오늘 수업의 핵심 연결

오늘 배운 세 가지 개념은 자연어처리의 가장 기본적인 연결 구조다.

① 토큰화(Tokenization)

텍스트를 의미 있는 단위로 분리한다.

↓
② 임베딩(Embedding)

토큰이나 문장을 숫자 벡터로 변환한다.

↓
③ 코사인 유사도(Cosine Similarity)

벡터 간 방향을 비교해 유사도를 계산한다.

특히 오늘 수업에서 가장 중요하게 이해해야 할 부분은 다음과 같다.

문장을 숫자로 변환하고(임베딩), 숫자로 바뀐 문장들 사이의 유사도를 계산한다.

이 원리를 이해하면 검색 기반 챗봇, 문서 검색, 추천 시스템 등 다양한 NLP 서비스의 기본 구조를 이해할 수 있다.


6. 오늘 학습 전체 키워드 복습

NLP 기초

  • 자연어 처리(NLP)
  • 토큰화(Tokenization)
  • 형태소 분석
  • Mecab
  • Okt
  • NLTK
  • 불용어 제거(Stopwords Removal)
  • Corpus(말뭉치)

임베딩

  • Sparse Representation
  • Dense Representation
  • BoW(Bag of Words)
  • CountVectorizer
  • TF-IDF
  • Embedding
  • Word Embedding
  • Sentence Embedding

유사도

  • Cosine Similarity
  • Text Similarity
  • ChatBot
  • 추천 시스템

딥러닝 - RNN

  • RNN(Recurrent Neural Network)
  • BPTT(Backpropagation Through Time)
  • Vanishing Gradient
  • Long-Term Dependency

Transformer

  • Self-Attention
  • Query
  • Key
  • Value
  • Attention Score
  • Attention Weight
  • Contextual Embedding

BERT

  • Encoder
  • MLM(Masked Language Model)
  • NSP(Next Sentence Prediction)
  • CLS
  • SEP
  • Segment Embedding
  • Position Embedding

GPT

  • Decoder
  • Language Model
  • Next Token Prediction
  • Text Generation

SentenceTransformer

  • 문장 임베딩
  • Mean Pooling
  • Cosine Similarity
  • 문장 검색
  • 검색 기반 챗봇

Hugging Face

  • pipeline()
  • text-classification
  • sentiment analysis
  • text-generation
  • inference

7. 오늘 한 줄 요약

토큰화로 텍스트를 나누고 → 임베딩으로 숫자 벡터로 변환하고 → 코사인 유사도로 문장 간 유사성을 계산한다. RNN은 순차 데이터의 관계를 학습하고, Transformer는 Self-Attention으로 문맥을 반영한다. BERT는 양방향 문맥을 활용해 문장을 이해하고, GPT는 다음 토큰을 예측해 새로운 문장을 생성한다.

8. 학습 회고 및 다음 학습 방향

이번 수업을 통해 자연어처리의 기본 개념들이 서로 독립적인 기술이 아니라 하나의 흐름으로 연결되어 있다는 점을 이해할 수 있었다.

특히 텍스트를 벡터로 변환하는 임베딩과 코사인 유사도는 앞으로 챗봇이나 추천 시스템을 구현할 때 직접 활용할 수 있는 핵심 기술이라고 생각한다.

다음에는 단순히 개념을 암기하는 데 그치지 않고, CountVectorizer와 TF-IDF의 검색 결과를 비교하고 SentenceTransformer를 이용한 문장 검색을 직접 구현해 보고자 한다. 또한 Transformer의 Self-Attention 구조를 코드와 수식으로 다시 확인하면서 BERT와 GPT의 차이를 명확하게 정리할 계획이다.


참고 자료

#AI캠프 #자연어처리 #NLP #토큰화 #임베딩 #TFIDF #코사인유사도 #RNN #Transformer #BERT #GPT #SentenceTransformer #HuggingFace #챗봇 #추천시스템

```

반응형