딥러닝을 이용한 자연어 처리 모음 과정 복습 (NLP)
https://www.youtube.com/watch?v=Rf7wvs8ZbP4&list=PL7SDcmtbDTTzQ69rNQ85LyA2WAx438pxz&index=2
NLP 언어 전처리 완전 정리 — 텍스트를 숫자로 만드는 전 과정
전처리 전체 흐름
자연어 처리의 첫 번째 관문은 텍스트를 모델이 다룰 수 있는 형태로 바꾸는 전처리다. 전체 파이프라인은 다음 순서로 진행된다.
Sentence → 토큰화(Tokenization) → 정제(Cleaning) + 추출(Stemming/Lemmatization) → 인코딩(Encoding) → Padding / 유사도 분석
1. 토큰화 (Tokenization)
문장을 의미 있는 최소 단위인 토큰으로 분리하는 작업이다. 영어는 공백 기준으로 비교적 단순하게 분리할 수 있지만, 한국어는 형태소 구조가 복잡하기 때문에 별도의 형태소 분석기가 필요하다. 형태소란 의미를 가진 최소 언어 단위로, 어간과 접사 등으로 구성된다. 토큰화 이후 정제와 추출이 함께 진행된다.
2. 정제 (Cleaning)
정제는 데이터의 노이즈를 제거하는 과정이다. 핵심은 "이 데이터가 목적에 불필요한가"를 판단하는 것이며, 기계적으로 제거하는 것이 아니라 사용 목적에 맞게 판단이 필요하다.
주요 고려 사항은 세 가지다.
첫째, 대소문자 처리다. 단순히 소문자로 통일하면 안 되는 경우가 있다. "US"(미국)와 "us"(우리)는 의미가 완전히 다르기 때문에 도메인에 따라 처리 방식을 달리해야 한다.
둘째, 출현 빈도가 낮은 단어 처리다. 저빈도 단어는 제거 대상이 될 수 있지만, "Floras and faunas"처럼 빈도는 낮아도 전문적으로 중요한 단어일 수 있으므로 무조건 제거하면 안 된다. 데이터를 지워도 되는지 항상 확인하는 판단의 과정이다.
셋째, 관사 등 문법 기능어 처리다. "a", "the" 등 문법적 역할만 하고 의미에 기여하지 않는 단어들은 제거 대상이 된다.
3. 추출 (Stemming & Lemmatization)
단어는 문법적 쓰임에 따라 다양한 형태로 변형된다. 이 변형들을 하나의 대표 형태로 통일하는 것이 추출의 목적이다.
단어의 구조는 두 부분으로 나뉜다. 어간(Stem)은 단어의 핵심 의미를 담은 부분이고, 접사(Affix)는 시제, 복수 등 추가 용법을 부여하는 부분이다.
어간 추출 (Stemming): 접사를 기계적으로 제거해 어근 형태로 줄이는 방법이다. 대표 알고리즘인 Porter Algorithm은 "tolerance → toler"처럼 규칙 기반으로 접사를 잘라낸다. 빠르고 간단하지만 품사 정보를 고려하지 않기 때문에 문맥에 따라 부정확한 결과가 나올 수 있다.
표제어 추출 (Lemmatization): 문맥과 품사 정보를 함께 고려해 실제 사전에 등재된 기본형으로 변환하는 방법이다. "is, are → be", "having → have"처럼 어형 변화를 원형으로 복원한다. "bear"(곰/견디다)나 "taxi"(택시/택시를 타다)처럼 명사와 동사로 모두 쓰이는 단어의 경우, 품사 정보를 포함하는 표제어 추출이 더 정확하다. 처리 비용은 더 높지만 정확도가 중요한 태스크에서는 표제어 추출이 유리하다.
4. 불용어 제거 (Stopword Removal)
불용어란 문장에서 문법적 역할은 하지만 의미 분석에는 기여하지 않는 단어들이다. 한국어의 "은/는/이/가", 영어의 "a/the/is" 등이 대표적이다. 모델이 중요한 단어에 더 집중할 수 있도록 사전 목록(stopword list)과 대조해 제거한다.
5. 인코딩 (Encoding)
정제와 추출을 마친 토큰을 모델이 처리할 수 있는 숫자로 변환하는 단계다.
정수 인코딩: 각 단어에 고유한 정수를 부여하는 가장 기본적인 방법이다. 어휘 사전을 만들고 각 단어에 인덱스를 매긴다.
Padding: 배치(batch) 내 문장들의 길이를 동일하게 맞추기 위해 짧은 시퀀스 뒤에 0을 채워 넣는 작업이다. 딥러닝 모델은 입력 길이가 고정되어야 하기 때문에 반드시 필요하다.
One-hot Encoding: 단어 하나를 어휘 사전 크기만 한 벡터로 표현하되, 해당 단어의 인덱스 위치만 1이고 나머지는 모두 0으로 채우는 방식이다. 구현이 단순하지만 두 가지 치명적 한계가 있다.
- 메모리 문제: 어휘가 많아질수록 벡터 크기가 선형적으로 커진다.
- 희소 표현(Sparse Representation) 문제: 모든 단어가 서로 직교하기 때문에 "강아지"와 "개" 사이의 의미적 연관성을 전혀 담지 못한다. 1이 극히 적고 0이 대부분인 벡터는 계산상으로도 비효율적이다.
이 두 문제를 해결하기 위해 Word Embedding이 등장했다.
TF-IDF: 단어의 중요도를 빈도 기반으로 수치화하는 방법이다. TF(Term Frequency)는 특정 문서 안에서 단어가 얼마나 자주 등장하는지를 나타내고, IDF(Inverse Document Frequency)는 여러 문서에 걸쳐 흔하게 등장하는 단어일수록 가중치를 낮춰 준다. 두 값을 곱하면 자주 등장하되 해당 문서에서만 특별히 중요한 단어를 부각시킬 수 있다.
6. 텍스트 마이닝 — Word2Vec과 GloVe
One-hot Encoding의 한계를 극복하기 위해 등장한 것이 밀집 표현(Dense Representation) 기반의 단어 임베딩이다. 희소 벡터 대신 낮은 차원의 실수 벡터로 단어를 표현하며, 벡터의 차원 수는 원하는 대로 설정할 수 있고, 이 표현을 데이터로부터 직접 학습한다.
Word2Vec
뉴럴 네트워크를 이용해 단어 간 유사도를 학습하는 대표적인 임베딩 방법이다. 의미적으로 유사한 단어는 벡터 공간에서 가까이, 관련 없는 단어는 멀리 배치된다. 학습 방식은 두 가지다.
CBOW (Continuous Bag of Words): 주변 단어들을 입력으로 받아 중심 단어를 예측하는 방식이다. 주변 단어의 범위(window size)는 하이퍼파라미터로 조절할 수 있다.
Skip-Gram: 반대로 중심 단어를 입력으로 받아 주변 단어들을 예측하는 방식이다. 드문 단어에 더 강하고 일반적으로 CBOW보다 성능이 좋다.
GloVe (Global Vectors)
Word2Vec이 지역적 문맥 창(window)만 보는 것과 달리, GloVe는 전체 말뭉치에서 단어 쌍이 함께 등장한 빈도를 담은 동시 등장 행렬(Co-occurrence Matrix)을 분석해 전역적인 통계 정보까지 임베딩에 반영한다. Word2Vec의 예측 기반 방식과 행렬 분해 기반 방식의 장점을 결합한 알고리즘으로, 대규모 말뭉치에서 강점을 보인다.
7. 언어 모델과 유사도 분석
언어 모델(Language Model)은 단어 시퀀스에 확률을 부여하는 모델로, 다음에 올 단어를 예측하는 방식으로 언어의 통계적 패턴을 학습한다. 통계 기반의 대표 방법인 BoW(Bag of Words)는 단어의 등장 빈도만으로 문서를 표현하는 방식이다.
유사도 분석은 두 텍스트 또는 단어가 얼마나 비슷한지를 측정하는 기법이다.
벡터 유사도에는 두 가지 방법이 있다. 코사인 유사도는 두 벡터의 방향이 얼마나 같은지를 측정하며, 자연어에서는 방향이 의미를 반영하기 때문에 가장 많이 쓰인다. 유클리드 거리는 두 벡터 사이의 직선 거리를 측정한다.
레벤슈타인 거리(Levenshtein Distance)는 단어 수준의 유사도를 측정하는 대표적인 척도다. 단어 A를 단어 B로 바꾸기 위해 필요한 최소 편집 횟수(삽입, 삭제, 교체)를 나타내며, Tabular Method(동적 프로그래밍 표)로 효율적으로 계산할 수 있다.
정리: 전처리 파이프라인 한눈에 보기
단계 핵심 내용
| 토큰화 | 문장을 의미 단위로 분리 |
| 정제 | 노이즈 제거 (대소문자, 저빈도 단어, 관사 등) |
| 어간/표제어 추출 | 단어 변형을 하나의 기본형으로 통일 |
| 불용어 제거 | 중요도 낮은 단어 제거 |
| 정수 인코딩 | 단어에 고유 번호 부여 |
| Padding | 시퀀스 길이 통일 |
| One-hot Encoding | 희소 벡터로 표현 (연관성 반영 불가) |
| Word2Vec / GloVe | 밀집 벡터로 의미 관계 학습 |
| TF-IDF | 빈도 기반 단어 중요도 수치화 |
결국 전처리의 모든 과정은 하나의 목표로 수렴한다. 인간의 언어를 모델이 의미를 학습할 수 있는 수치 공간으로 변환하되, 그 과정에서 정보의 손실은 최소화하고 노이즈는 제거하는 것이다.
'ML & AI' 카테고리의 다른 글
| 선형대수 복습 겸 정리 (0) | 2026.04.28 |
|---|---|
| [딥러닝, 인공지능] - P1_Ch4 : 파이토치(PyTorch) (1) (1) | 2025.12.28 |