자연어처리(NLP)
자연어처리(Natural Language Processing, NLP)는 인간의 언어를 컴퓨터가 이해하고 처리할 수 있도록 하는 기술입니다. NLP에서 수행하는 과제는 크게 분석(Analysis) 과제와 생성(Generation) 과제로 나뉩니다.
1. 분석 과제 (Analysis Tasks): 사람의 말을 구조적으로 해석하거나 분류
의미 기반 분석 (Semantic)
- NER (Named Entity Recognition) 문장에서 사람, 조직, 위치, 날짜 등 고유 명사를 뽑아내는 작업
예: "Apple은 회사(ORG), Tim Cook은 사람(PERSON)" - 텍스트 유사도(Similarity) 두 문장이 얼마나 비슷한 의미인지 측정
예: “나는 밥을 먹었다” ≈ “식사를 했다” - 감성 분석(Sentiment Analysis) 문장이 긍정적인지, 부정적인지 판별
예: “이 영화 진짜 감동이에요!” → Positive - 주제 분류(Topic Modeling) 문장이 어떤 주제에 가까운지 분류
예: “주가 하락과 금리 인상…” → 경제 - 텍스트 분류(Text Claassfication) email -> spam, not spam / 리뷰 -> 긍정인지 부정인지
구문 기반 분석 (Syntactic Parsing) 문법적인 구조를 분석하는 작업
- 품사 태깅(Part of Speech Tagging) 각 단어가 문장에서 어떤 역할(명사, 동사 등)을 하는지 태깅
- 의존 구문 분석(Dependency Parsing) 문장 내 단어들 사이의 관계를 파악
2. 생성 과제 (Generation Tasks): 문장을 만들거나, 질문에 답하거나, 번역하는 작업
질의응답 (Question Answering)
- 사용자의 질문에 대한 답을 생성
Q: “대한민국의 수도는 어디야?”
A: “서울입니다.”
텍스트 생성 (Language Generation)
- 새로운 문장 생성
예: 챗봇 대화, 시 작성, 이메일 자동 작성 - 다음 단어 예측
예: “나는 오늘 아침에 [ ] 먹었다.” → '빵', '밥' 등
기계 번역 (Machine Translation)
- 한 언어를 다른 언어로 번역
예: “나는 학생입니다.” → “I am a student.”
NLP 다양한 입력-출력 매핑 방식
| 유형 | 설명 | 예시 |
| One-to-One | 하나의 입력 → 하나의 출력 | 감정 분류 (긍정/부정) |
| One-to-Many | 하나의 입력 → 여러 개 출력 | 이미지 → 캡션 생성 |
| Many-to-One | 여러 단어 → 하나의 출력 | 텍스트 분류 |
| Many-to-Many | 문장 → 문장 | 번역 |
| Many-to-Many (동기화) | 문장 → 문장 (단어별 1:1) | 품사 태깅 |
자연어처리(NLP)에서 가장 먼저 해야 할 일은 바로 텍스트 정제입니다. 말 그대로 자연어 데이터를 기계가 이해할 수 있는 상태로 정돈하는 과정이다.
왜 텍스트 정제가 필요할까?
실제 온라인 댓글이나 게시글, 블로그 데이터는 다음과 같은 다양한 문제를 포함하고 있다.
- 이모티콘, 특수문자, 중복 글자,
- 불필요한 단어들 (ㅋㅋㅋ, ㅎㅎㅎ, ㄷㄷ 등),
- 형식이 일관되지 않은 표현들.
예시: "지금 봐도 질리지 않음 ㅋㅋㅋㅋㅋ 개 웃겨ㅠㅠㅠㅠㅠ" → 의미를 분석하기 전 텍스트 정리(정제)가 필요하다
텍스트 정제 단계별 작업: 정제는 다음과 같은 여러 가지 세부 작업으로 구성된다
- 대소문자 통일 "The DOG" → "the dog"
- 문장부호/특수문자 제거 "!!!Wow~" → "Wow"
- 숫자 제거 "Born in 1990" → "Born in"
- 공백, 개행문자 정리
- 띄어쓰기 보정 "안녕하세요여러분" → "안녕하세요 여러분"
- 품사 분석(Part of Speech tagging) 각 단어가 어떤 역할을 하는지 분류하는 과정
- I like to read books. → I(PRP) like(VBP) to(TO) read(VB) books(NNS)
- 불용어(stopword) 제거 기능어는 문장에서 실질적인 의미를 가지고 있지 않기 때문에 제거한다
- 토큰화 (Tokenization) 텍스트를 단어 단위 또는 의미 단위로 나누는 과정
- His mother went to school with him → ["His", "mother", "went", "to", "school", "with", "him"]
- 어절: 문장 성분의 최소 단위로서 띄어쓰기의 단위
- 그의 어머니는 그와 함께 학교에 갔다 → ["그의", "어머니", "는", "그", "와", "함께", "학교", "에", "갔다"]
- 형태소: 의미를 가지는 요소로서 더 이상 분석할 수 없는 가장 작은말의 단위
- 주로 한글을 형태소 기준으로 나눈다
- His mother went to school with him → ["His", "mother", "went", "to", "school", "with", "him"]
- 어근 통일화
- Stemming(어간 추출) 단어의 어미나 접두사, 접미사 등으로 해서 형태가 달라진 단어들을 형태소 분석을 통해 그 어간을 추출하여 동일한 단어로 간주하는 작업
- "love", "loves", "loving", "loved" → "lov"
- Lemmatization(표제어 추출) 어간 추출의 단점 보완한다. 단어의 의미적 단위를 고려하지 않고 단어를 축약형으로 정리한다. 품사와 문맥을 고려하여 의미있는 기본형으로 변환한다
- "love", "loves", "loving", "loved" → "love"
- Stemming(어간 추출) 단어의 어미나 접두사, 접미사 등으로 해서 형태가 달라진 단어들을 형태소 분석을 통해 그 어간을 추출하여 동일한 단어로 간주하는 작업
Stemming은 빠르지만 부정확하고, Lemmatization은 느리지만 더 정확합니다.
정제의 최종 목적
정제된 텍스트는 특징 추출, 의미 분석, 모델 학습 등의 다음 단계에서 훨씬 더 정확하고 효율적인 결과를 만들어냅니다. 이런 정제된 텍스트는 벡터화(BoW, TF-IDF, Word2 Vec 등)를 거쳐서 모델에 입력되며, 텍스트 분류, 감성 분석, 기계 번역 등 다양한 NLP 과제에 활용됩니다.
4. 텍스트 마이닝(Text Mining)이란?
자연어로 이루어진 텍스트 데이터를 정형화하고, 그 안에서 유의미한 정보를 추출하기 위해 자연어처리 기술을 활용하는 전반적인 과정입니다.
텍스트 마이닝 전체 과정 요약
- 자연어 데이터 입력 (문장, 댓글, 리뷰 등)
- 텍스트 정제 및 전처리
- 특징 추출 (벡터화, 품사 분석 등)
- 분석 모델 적용 (예: 감성 분석, 텍스트 분류 등)
- 의미 있는 정보 도출
자연어 처리(Natural Language Processing)의 단계
1. 어휘 분석 (Lexical Analysis): 형태소(Morpheme), 단어 수준에서 텍스트를 분해
- 예: “먹었다” → “먹/었/다”
2. 구문 분석 (Syntax Analysis): 문법적 구조를 분석
- 예: 주어(S), 동사(V), 목적어(O) 구조 파악
3. 의미 분석 (Semantic Analysis): 단어 또는 문장의 의미를 파악, 문맥에 따라 다르게 해석되는 단어 구분
4. 대화 분석 (Discourse Analysis): 여러 문장이 연결되어 만들어내는 맥락을 분석
- 예: “그는 갔다” → 앞 문장에서 “그”가 누구인지 알아야 함
NLP 의 Dialogue System 구성도
대화형 시스템(Chatbot, Voice Assistant 등)은 다음과 같은 구성으로 이루어진다
- 입력 단계: Speech Recognition: 음성 인식을 통해 텍스트로 변환 / Text Input: 사용자의 질문 입력
- 이해 단계: Language Understanding (LU)
- 도메인 분류 (영화예약/쇼핑 등)
- 의도(Intent) 파악
- 슬롯(Slot) 채우기 (예: 날짜, 장소 등)
- 관리 단계: Dialogue Management (DM)
- 대화 상태 추적
- 다음 응답을 결정
- 출력 단계: Natural Language Generation (NLG):
- 응답 문장을 자연어로 생성

5. 자연어처리(NLP)의 핵심 과제: 텍스트에서 "의미 있는 정보"를 추출하는 것
NLP의 목표는 단순히 텍스트를 처리하는 것이 아니라 인간 언어에서 패턴을 분석하고 의미를 이해하는 것입니다.
그러기 위해선 먼저
- 어떤 단어가 중요한가? 핵심어 추출
- 어떤 단어와 단어가 자주 같이 등장하는가? 의미 연결 파악
이런 질문에 답해야 하며, 이를 해결하기 위해 아래 기법들이 등장합니다.
카운트 기반 핵심어 분석의 NLP 내 역할
| 요소 | 설명 |
| 목적 | 문서에서 중요한 단어(키워드)를 정량적 기준으로 추출 |
| 방식 | 단순 빈도 또는 TF-IDF (단어 빈도 × 문서 중요도) 사용 |
| 활용 | 문서 요약, 검색엔진 키워드 추천, 뉴스 트렌드 분석 등 |
| NLP 영역 | 어휘 분석 (Lexical Analysis) 단계에 속함 |
즉, ‘이 문서에서 어떤 단어가 자주 나오고 중요한가’를 판단하는 것은 기계가 의미를 이해하기 위한 첫걸음입니다.
의미 연결망 분석(SNA)의 NLP 내 역할
| 요소 | 설명 |
| 목적 | 단어 간의 의미 관계 구조 파악 |
| 방식 | 공동 등장(co-occurrence), 연결망 중심성 분석 등 |
| 활용 | 이슈 분석, 여론 흐름 파악, 텍스트 내 주제 구조 시각화 |
| NLP 영역 | 의미 분석 (Semantic Analysis) 또는 담화 분석 (Discourse Analysis) 단계에서 사용 |
단어 하나만 분석하는 것이 아니라, "어떤 단어와 어떤 단어가 같이 등장하나?" "어떤 단어가 중심에서 연결 역할을 많이 하는가?" 를 분석함으로써 텍스트 전체의 의미 구조를 이해하게 됩니다.
전체 흐름에서의 위치 정리
NLP 처리 흐름 속에서 이 두 기법이 위치하는 단계는 다음과 같습니다
텍스트 입력 → 전처리 (정제, 토큰화 등) → 어휘 분석 (빈도 계산 = Count / TF-IDF) → 의미 분석 (단어 간 관계 분석 = SNA) → 텍스트 요약, 분류, 감성 분석 등 downstream task 수행
| 분석 방법 | 목적 | NLP 내 위치 | 핵심 기능 |
| Count 기반 핵심어 분석 | 중요한 단어를 정량적으로 추출 | 어휘 분석 단계 | 단어 중요도 판단 (TF, TF-IDF) |
| 의미 연결망 분석 (SNA) | 단어 간 의미 관계를 분석 | 의미/담화 분석 단계 | 단어 간 구조적 관계 분석, 시각화 |
6. 자연어 처리 분야에서 사용되는 신경망의 이해
자연어 + 인공신경망의 핵심 개념
자연어 처리(NLP)에서 인공신경망을 활용하는 목적은 다음 세 가지입니다
- 자연어를 벡터로 변환한다.
- 자연어의 특징을 추출한다.
- 자연어의 시계열성(문맥 순서)을 학습한다.
이러한 처리는 신경망 구조 내에서 각각 다른 layer가 담당합니다.
자연어를 벡터로 변환: Embedding Layer
- 자연어 텍스트는 기계가 이해할 수 없으므로, 수치형 벡터로 변환해야 함.
- 이를 수행하는 계층이 Embedding Layer.
- 이 레이어는 단어를 고정된 차원의 밀집 벡터(dense vector)로 매핑함.
예시 구조: Text → Input Layer → Embedding Layer → Hidden Layer → Output Layer
자연어의 특징을 추출: Conv1D Layer
- 자연어 데이터를 벡터로 만든 후, 중요한 패턴(특징)을 뽑아내는 계층.
- Conv1D Layer는 CNN 계열로, 연속된 단어 간 특징을 인식하고 추출하는 역할을 함.
- 주로 텍스트 분류, 감정 분석 등에 사용.
예시 구조: Text → Input Layer → Embedding Layer → Conv1D Layer → Hidden Layer → Output Layer
자연어의 시계열성을 학습: RNN (Recurrent Neural Network)
- 문장의 순서, 이전 단어의 의미를 기억하는 구조가 필요 → 순차 데이터에 적합한 구조.
- RNN은 시간 축 방향의 연쇄 구조를 가지며 이전 정보를 다음 단계로 전달함.
- 내부에 은닉 상태(hidden state)를 유지하여 문맥을 고려한 학습이 가능함.
시간 흐름에 따라 구조: Input → RNN(t₀) → RNN(t₁) → … → RNN(tₙ)
- RNN은 다음과 같이 동작
- 과거 시점의 정보를 현재에 반영하는 구조 (yₖ₋₁ → yₖ → yₖ₊₁)
- 내부적으로는 반복 구조(recurrent weight) 를 통해 이전 상태 정보를 기억
- Directed Cycle(방향성을 가진 사이클 구조)을 통해 순환 구조 형성
| 구분 |
방식 | 주요 목적 | 분석 단위 | 대표 사용 | 특징 |
| 카운트 기반 (TF, TF-IDF 등) | 단어의 빈도(count)로 벡터화 | 핵심어 추출, 유사도 측정 | 단어 단위 (BOW, TF-IDF) | 키워드 분석, 검색엔진 | 통계적, 간단함 |
| 의미 연결망 분석 (SNA) | 단어 간 공동 출현 관계 | 단어 간 의미 관계 분석 | 단어 간 co-occurrence | 네트워크 분석, 인사이트 도출 | 시각화, 구조적 해석 |
| Conv1D Layer (딥러닝) | 수치 벡터에 필터 적용 → 패턴 감지 | 학습 기반의 특징 추출 | 단어 시퀀스의 벡터 | 텍스트 분류, 감정 분석 | 문맥 기반 자동 학습 |
| 분석 기법 |
인공신경망 기반? | 학습해서 특징 추출? | 방식 |
| TF / TF-IDF | ❌ | ❌ | 사람이 정한 규칙 기반, 단순 벡터화 |
| SNA | ❌ | ❌ | 단어 사이의 관계만 계산 |
| Conv1D | ✅ | ✅ | 필터(커널)를 학습해서 의미 있는 패턴 추출 |
'인공지능' 카테고리의 다른 글
| RNN 기반 Sequence-to-Sequence 모델과 Attention (3) | 2025.05.27 |
|---|---|
| 알고 있으면 쓸모 있는 AI 지식(14) (2) | 2025.05.26 |
| Embedding(12) (1) | 2025.05.24 |
| Computer Vision Task & CNN (11) (2) | 2025.05.23 |
| 머신러닝 회귀 알고리즘(10) (1) | 2025.05.22 |