Skip to main content

NLP 개론

학습 목표

  • 자연어 처리(NLP)의 정의와 연구 범위를 설명할 수 있습니다
  • 규칙 기반에서 LLM까지의 발전 패러다임을 시간순으로 구분할 수 있습니다
  • NLP의 주요 태스크(분류, 생성, 추출, 변환)를 분류하고 각각의 활용 사례를 들 수 있습니다
  • 핵심 마일스톤(Word2Vec, Transformer, BERT, GPT)이 왜 중요한지 설명할 수 있습니다
  • NLP 기술이 현재 AI/ML 생태계에서 어떤 위치를 차지하는지 이해할 수 있습니다

왜 중요한가

자연어 처리는 인간의 언어를 컴퓨터가 이해하고 생성할 수 있게 만드는 AI 분야입니다. 검색 엔진, 번역기, 챗봇, 음성 비서 등 우리가 매일 사용하는 서비스의 핵심 기술이며, ChatGPT 이후 그 중요성은 더욱 커졌습니다. NLP를 이해하면 단순히 LLM API를 호출하는 것을 넘어, 왜 특정 프롬프트가 더 잘 작동하는지, 왜 한국어 처리가 영어보다 어려운지, 어떤 모델이 어떤 태스크에 적합한지를 근본적으로 이해할 수 있습니다. 이는 RAG, Agent, Fine-Tuning 등 후속 학습의 필수 기반이 됩니다.

핵심 개념

NLP란 무엇인가

자연어 처리(Natural Language Processing, NLP)는 인간이 사용하는 자연어를 컴퓨터가 처리할 수 있도록 하는 인공지능의 하위 분야입니다. 여기에는 두 가지 핵심 방향이 있습니다.
  • 자연어 이해(NLU, Natural Language Understanding): 텍스트의 의미를 파악하는 것. 감성 분석, 개체명 인식, 질의응답 등이 포함됩니다.
  • 자연어 생성(NLG, Natural Language Generation): 의미 있는 텍스트를 생성하는 것. 요약, 번역, 대화 생성 등이 포함됩니다.

NLP 발전의 네 가지 패러다임

NLP는 크게 네 가지 패러다임을 거쳐 발전해 왔습니다. 각 패러다임은 이전 접근법의 한계를 극복하며 등장했습니다.

1단계: 규칙 기반 NLP (1950s~1990s)

초기 NLP는 언어학자들이 직접 규칙을 작성하는 방식이었습니다. 문법 규칙, 사전 기반 매칭, 정규 표현식 등을 활용했습니다.
# 규칙 기반 감성 분석 예시
def rule_based_sentiment(text):
    """규칙 기반으로 텍스트의 감성을 판별합니다."""
    positive_words = {"좋다", "훌륭하다", "최고", "만족", "추천"}
    negative_words = {"나쁘다", "별로", "최악", "불만", "실망"}

    pos_count = sum(1 for word in text.split() if word in positive_words)
    neg_count = sum(1 for word in text.split() if word in negative_words)

    if pos_count > neg_count:
        return "긍정"
    elif neg_count > pos_count:
        return "부정"
    return "중립"
한계: 규칙을 모든 상황에 대해 작성하는 것이 불가능하며, 언어의 모호성과 맥락 의존성을 처리하기 어렵습니다. “이 영화 진짜 죽인다”와 같은 표현은 규칙만으로 올바른 감성을 파악하기 어렵습니다.

2단계: 통계적 NLP (1990s~2010s)

대량의 텍스트 데이터에서 통계적 패턴을 학습하는 방식으로 전환되었습니다. 나이브 베이즈(Naive Bayes), 은닉 마르코프 모델(HMM), 조건부 랜덤 필드(CRF) 등이 대표적입니다.
# 통계 기반: TF-IDF + 나이브 베이즈 예시
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB

# TF-IDF로 텍스트를 수치 벡터로 변환합니다
vectorizer = TfidfVectorizer(max_features=5000)
X_train = vectorizer.fit_transform(train_texts)

# 나이브 베이즈로 분류합니다
classifier = MultinomialNB()
classifier.fit(X_train, train_labels)
발전: 규칙을 수동으로 작성하지 않아도 데이터에서 패턴을 자동으로 학습합니다. 한계: 단어의 순서와 문맥을 충분히 반영하지 못하며, 특성 공학(Feature Engineering)에 많은 노력이 필요합니다.

3단계: 딥러닝 NLP (2013~2018)

Word2Vec(2013)의 등장과 함께 시작된 딥러닝 시대는 단어를 밀집 벡터(Dense Vector)로 표현하면서 의미적 관계를 포착할 수 있게 되었습니다. RNN, LSTM, Seq2Seq 모델이 번역, 요약 등의 시퀀스 태스크에서 성능을 크게 높였습니다.
# Word2Vec으로 단어 의미 관계를 학습합니다
from gensim.models import Word2Vec

# "왕 - 남자 + 여자 ≈ 여왕" 과 같은 의미 연산이 가능합니다
model = Word2Vec(sentences, vector_size=300, window=5, min_count=5)
result = model.wv.most_similar(positive=["왕", "여자"], negative=["남자"])
# [('여왕', 0.85), ...]
발전: 특성 공학 없이 원시 텍스트에서 직접 학습하며, 단어 간 의미 관계를 포착합니다. 한계: 긴 시퀀스에서 정보 손실이 발생하며, 문맥에 따라 달라지는 단어 의미를 처리하기 어렵습니다.

4단계: LLM 시대 (2017~현재)

Transformer(2017)의 등장 이후, BERT(2018), GPT-3(2020), ChatGPT(2022)로 이어지는 대규모 언어 모델 시대가 열렸습니다. 사전학습(Pre-training)과 미세조정(Fine-tuning) 패러다임이 NLP의 모든 태스크를 혁신했습니다.
# Transformer 기반 모델로 감성 분석을 수행합니다
from transformers import pipeline

# 사전학습된 모델을 바로 활용할 수 있습니다
classifier = pipeline("sentiment-analysis", model="nlptown/bert-base-multilingual-uncased-sentiment")
result = classifier("이 식당 음식이 정말 맛있어요!")
# [{'label': '5 stars', 'score': 0.72}]
발전: 하나의 사전학습 모델로 다양한 태스크를 수행하며, 프롬프트만으로 새로운 태스크를 처리할 수 있습니다. 현재 상태: 모델 크기, 학습 데이터, 정렬(Alignment) 기법의 발전이 계속되고 있습니다.

NLP 주요 태스크 분류

NLP 태스크는 크게 네 가지 유형으로 분류할 수 있습니다.
유형태스크입력 → 출력대표 모델
분류감성 분석, 주제 분류, 스팸 탐지텍스트 → 레이블BERT, RoBERTa
추출개체명 인식(NER), 키워드 추출, QA텍스트 → 텍스트 spanBERT, SpanBERT
생성요약, 대화 생성, 스토리 작성텍스트 → 텍스트GPT, T5, BART
변환기계 번역, 패러프레이징, 문법 교정텍스트 → 변환된 텍스트T5, mBART, NLLB
각 태스크 유형은 모델 아키텍처 선택에 직접적인 영향을 미칩니다. 분류와 추출은 인코더 모델(BERT 계열)이, 생성은 디코더 모델(GPT 계열)이, 변환은 인코더-디코더 모델(T5 계열)이 유리합니다.

NLP 핵심 마일스톤 타임라인

연도사건의의
2013Word2Vec 발표단어의 분산 표현(Distributed Representation) 대중화. 의미적 유사도 연산이 가능해짐
2014Seq2Seq 모델가변 길이 입출력 처리. 기계 번역의 새로운 패러다임
2014GloVe 발표전역 통계 정보를 활용한 단어 임베딩
2015Attention 메커니즘시퀀스 내 중요한 부분에 선택적으로 집중. 긴 문장의 정보 손실 문제 완화
2017Transformer 발표”Attention Is All You Need” — RNN 없이 Attention만으로 시퀀스를 처리하는 아키텍처. 병렬 처리로 학습 속도 혁신
2018BERT 발표양방향(Bidirectional) 사전학습. NLU 태스크에서 인간 수준 달성
2018GPT-1 발표단방향 사전학습 + 미세조정 패러다임의 시작
2019GPT-2 발표모델 스케일 확대 (1.5B 파라미터). 제로샷 학습 가능성 시사
2020GPT-3 발표175B 파라미터. Few-shot In-context Learning으로 미세조정 없이 태스크 수행
2020T5 발표”Text-to-Text” 프레임워크. 모든 NLP 태스크를 텍스트 생성으로 통합
2022ChatGPT 출시RLHF(인간 피드백 강화학습)를 통한 정렬. LLM의 대중화
2023GPT-4, LLaMA멀티모달, 오픈소스 LLM의 확산
2024~추론 모델, Agento1, Claude, 추론 특화 모델과 자율형 에이전트의 발전

AI/ML에서의 활용

NLP 기술은 현재 AI/ML 생태계에서 가장 활발하게 발전하는 분야입니다.
  • 검색과 추천: 시맨틱 검색, 질의 이해, 개인화 추천
  • 고객 서비스: 챗봇, 자동 응답, 감성 모니터링
  • 콘텐츠 생성: 기사 작성, 코드 생성, 마케팅 카피
  • 정보 추출: 문서 분석, 계약서 검토, 의료 기록 처리
  • 다국어 서비스: 실시간 번역, 다국어 고객 지원
특히 LLM 기반 애플리케이션(RAG, Agent)이 산업 전반으로 확산되면서, NLP 기초 지식의 중요성은 더욱 커지고 있습니다.
NLP는 자연어 처리 전체를 아우르는 상위 개념입니다. NLU(자연어 이해)는 텍스트의 의미를 파악하는 방향이고, NLG(자연어 생성)는 의미 있는 텍스트를 만들어내는 방향입니다. 최신 LLM은 NLU와 NLG를 모두 수행할 수 있습니다.
딥러닝 NLP는 특정 태스크에 맞게 모델을 학습시키는 접근법입니다. LLM은 대규모 텍스트로 사전학습한 범용 모델로, 미세조정이나 프롬프팅만으로 다양한 태스크를 수행합니다. LLM도 딥러닝 기반이지만, 학습 규모와 활용 방식에서 큰 차이가 있습니다.
현대 NLP에서 언어학 지식은 필수는 아닙니다. 딥러닝 모델이 언어 구조를 데이터에서 자동으로 학습하기 때문입니다. 다만 토큰화, 형태소 분석 등 전처리 단계에서는 기본적인 언어학 개념(형태소, 구문 구조)이 도움이 됩니다. 특히 한국어 NLP에서는 교착어의 특성을 이해하는 것이 중요합니다.
한국어는 교착어로서 조사와 어미가 어근에 붙어 다양한 형태를 만듭니다. 이로 인해 토큰화가 영어보다 복잡하고, 띄어쓰기 오류에 더 민감합니다. 또한 한국어 학습 데이터가 영어에 비해 상대적으로 부족합니다. 이러한 특수성은 한국어 형태소 분석 문서에서 자세히 다룹니다.

체크리스트

  • NLP의 정의와 NLU/NLG 구분을 설명할 수 있다
  • NLP 발전의 4단계 패러다임을 나열하고 각각의 특징을 설명할 수 있다
  • NLP 주요 태스크를 4가지 유형으로 분류할 수 있다
  • Word2Vec, Transformer, BERT, GPT 등 핵심 마일스톤의 의의를 설명할 수 있다
  • 현재 NLP가 AI/ML 생태계에서 차지하는 위치를 이해하고 있다

다음 문서