-
텍스트 데이터의 특징과 자연어 처리 파이프라인 완벽 이해AI 2026. 2. 20. 07:38
자연어(Natural Language)란?
사람들이 일상생활에서 의사소통을 위해 자연적으로 만들어진 언어(한국어, 영어 등)를 말합니다.
- vs 인공어(Programming Language): 특정 목적(컴퓨터 제어)을 위해 인위적으로 설계된 프로그래밍 언어와 달리, 자연어는 문맥에 따라 의미가 변하고 구조가 매우 복잡하며 예외가 많다는 특징이 있습니다.
자연어 처리(NLP, Natural Language Processing)란?
컴퓨터가 인간의 언어를 이해하고, 해석하며, 생성할 수 있게 만드는 인공지능의 한 분야입니다. 단순한 텍스트 분석을 넘어 감성 분석, 기계 번역, 챗봇 등 다양한 영역에 활용됩니다.
텍스트 데이터의 3가지 핵심 핵심 특징
텍스트는 단순한 데이터의 나열이 아닙니다. 컴퓨터가 텍스트를 '이해'하기 힘든 이유는 바로 다음과 같은 특징 때문입니다.
순서성 (Sequence): 순서가 곧 논리다
텍스트는 단어가 나타나는 순서에 따라 의미가 완전히 달라집니다. 동일한 단어 집합이라도 순서가 바뀌면 주체와 객체, 사실관계가 뒤바뀝니다.
- 예시: "A가 B에게 돈을 빌려주었다." (A: 채권자, 돈 있는 사람)
- "B가 A에게 돈을 빌려주었다." (A: 채무자, 돈 빌린 사람)
- 중요성: 모델은 단순한 단어의 등장을 넘어, '어떤 단어 뒤에 어떤 단어가 오는지'라는 시계열적 특성을 학습해야 합니다.
관계성 (Context): 주변을 봐야 정체가 보인다
단어는 고유한 의미를 가지기도 하지만, 주변 단어들과의 관계에 의해 의미가 확정되는 중의성(Ambiguity)을 가집니다.
- 예시: "배"라는 단어
- "마트에서 배를 샀다." (Fruit)
- "항구에 배가 들어왔다." (Ship)
- "밥을 먹으니 배가 부르다." (Stomach)
- 중요성: 모델은 특정 단어의 의미를 파악하기 위해 앞뒤 문맥(Attention)을 계산하여 '문맥적 의미'를 도출해야 합니다.
계층성 (Hierarchy): 겹겹이 쌓인 구조체
문장은 단순히 단어를 옆으로 나열한 평면적인 구조가 아닙니다. [단어 → 구 → 절 → 문장]으로 이어지는 계층적 구조를 가집니다.
- 예시: "[ 어제 공원에서 친구와 함께 맛있게 먹었던 ] 사과는 정말 달콤했다."
- 평면적 해석: '달콤했다'와 가까운 '먹었던'을 연결하려 함.
- 계층적 해석: 수식어구([])를 걷어내고 주어(사과는)와 서술어(달콤했다)의 핵심 뼈대를 파악함.
- 중요성: 딥러닝 모델은 레이어(Layer)를 깊게 쌓으며 이러한 복잡한 문법적 계층 구조를 추상화하여 학습합니다.
텍스트 데이터 파이프라인 (Text Data Pipeline)
컴퓨터는 텍스트를 직접 읽을 수 없습니다. 오직 '숫자'만 처리할 수 있죠. Raw Text가 딥러닝 모델의 입력값이 되기까지의 과정을 순서대로 정리합니다.

Step 1. Preprocessing (전처리)
데이터의 노이즈를 제거하는 단계입니다.
- 내용
- 단어레벨 정제: HTML 태그 제거, 특수문자 제거, 대소문자 통합, 반복줄임, 불용어(Stopwords, 의미 없는 단어) 제거 등이 포함됩니다.
- 문장레벨정제:
- 모델에 들어가는 벡터의 차원은 정해져 있어서 적절한 문장의 길이를 찾아야한다
Step 2. Tokenizing (토큰화)
텍스트를 최소 단위인 토큰(Token)으로 나누는 과정입니다.
- 방법:
- 단어 단위, 문자 단위, 혹은 형태소 단위(한국어 필수)로 나눕니다. 최근에는 Subword Tokenizing(단어를 더 잘게 쪼개어 모르는 단어에 대응) 방식을 주로 사용합니다.
- 특수토큰을 붙여준다. 문장의 시작에응 <sos> --> 1번 , 문장의 끝에는 <eos> --> 2번
- 단어 단위, 문자 단위, 혹은 형태소 단위(한국어 필수)로 나눕니다. 최근에는 Subword Tokenizing(단어를 더 잘게 쪼개어 모르는 단어에 대응) 방식을 주로 사용합니다.
Step 3. Vocab (어휘 사전 구축)
중복을 제거한 고유한 토큰들의 집합을 만들고, 각 토큰에 고유한 번호(인덱스)를 부여합니다.
- OOV(Out of Vocabulary) 문제: 사전에 없는 단어가 등장하면 모델이 처리하지 못하는 문제입니다. 이를 방지하기 위해 <UNK>(Unknown) 토큰 --> 3번 을 예약해 두기도 합니다.
Step 4. To_sequence (정수 인코딩)
텍스트를 Vocab의 인덱스 번호로 변환합니다. 단어마다 할당되는 고유 ID
- 예시: "I love apple" → [12, 5, 87]
Step 5. Padding (패딩)
모델에 들어가는 벡터의 차원은 고정되어 있습니다.
문장마다 길이가 다르기 때문에, 이를 동일한 길이로 맞춰주는 작업입니다.- 방법
- 짧은 문장 뒤에 0을 채워 넣어(Zero-padding) 모델이 행렬 연산을 수행할 수 있게 합니다.
- 문장이 넘치면 자릅니다.
- RNN에서 는 앞에채워야 시간이 지날수록 가중치가 작아진다.
: 초반에 0을 먼저 처리하고, 마지막에 실제 데이터를 몰아서 처리합니다. 이렇게 하면 모델이 최종 출력을 내놓는 시점에 가장 최근에 본 "진짜 데이터"의 영향력이 가장 강하게 남아 있게 됩니다.
- 문제점: 패딩이 너무크면 다른 문자들또한 패등을 가지게된다. 그런데 다른 문장들에 포함되는 패딩이리 너무 많으면 모델은 패딩을 지나치게 너무 많이 학습하게된다.
Step 6. Embedding Layer (임베딩)
정수 인덱스를 고차원의 밀집 벡터(Dense Vector)로 변환합니다.
- 왜 하는가?: 단순 인덱스(1, 2, 3...)는 단어 간의 유사도를 표현할 수 없습니다. 임베딩을 통해 '사과'와 '배'는 가까운 공간에, '사과'와 '컴퓨터'는 먼 공간에 위치하게 학습됩니다.
우리가 마주하는 문제들
- 차원의 저주 (Curse of Dimensionality): 단어의 종류가 너무 많아지면(Sparse 데이터), 데이터를 표현하기 위해 필요한 차원이 기하급수적으로 늘어나 학습 효율이 떨어지는 현상입니다. 이를 해결하기 위해 Embedding을 통한 차원 축소가 필수적입니다.
- 희소성 (Sparsity): 원-핫 인코딩(One-hot encoding)처럼 대부분이 0이고 하나만 1인 벡터는 메모리 낭비가 심하고 단어 간 관계를 설명하지 못합니다. Dense Representation(밀집 표현)으로의 전환이 현대 NLP의 핵심입니다.
텍스트는 인간의 사고를 담은 가장 복잡한 데이터입니다. 이를 순서, 관계, 계층이라는 관점에서 바라보고, 체계적인 파이프라인을 통해 숫자 데이터로 변환하는 과정을 이해하는 것이 자연어 처리 공부의 첫걸음입니다.
'AI' 카테고리의 다른 글
텍스트 벡터화(Text Vectorization) (0) 2026.02.20 토큰화(Tokenization)의 진화: 단어에서 서브워드까지 (1) 2026.02.20 이미지 인식의 핵심: Inductive Bias, Locality, 그리고 특징 추출의 상관관계 (0) 2026.02.20 세그멘테이션 성능 평가의 핵심: IoU, mIoU, Boundary IoU (0) 2026.02.19 Segmentation부터 DSLR의 이해 (0) 2026.02.10