Vocabulary
Vocabulary
자연어 처리(Natural Language Processing, NLP) 분야에서 어휘(Vocabulary)는 언어를 컴퓨터가 이해하고 처리할 수 있도록 구성하는 가장 기본적이면서도 핵심적인 요소입니다. 어휘는 특정 언어나 텍스트 집합에서 사용되는 모든 단어 또는 토큰(token)의 집합을 의미하며, 자연어 처리 시스템의 성능과 일반화 능력에 직접적인 영향을 미칩니다. 이 문서에서는 자연어 처리에서의 어휘의 개념, 구조, 구성 방식, 그리고 관련 기술적 이슈에 대해 설명합니다.
개요
자연어 처리 시스템은 인간 언어를 해석하고 생성하기 위해 텍스트를 수치적 형태로 변환해야 합니다. 이 과정에서 가장 먼저 수행되는 작업 중 하나가 어휘 구축(Vocabulary Construction)입니다. 어휘는 모델이 인식할 수 있는 단어의 사전(dictionay) 역할을 하며, 이를 통해 텍스트는 토큰(token) 단위로 분할되고, 각 토큰은 고유한 식별자(ID) 또는 임베딩 벡터로 매핑됩니다.
어휘는 단순한 단어 목록을 넘어서, 언어의 다양성과 복잡성을 반영하며, 시스템의 효율성과 정확성에 중요한 영향을 미칩니다. 특히 대규모 언어 모델(Large Language Models, LLMs)에서는 어휘의 크기와 구조가 계산 비용, 메모리 사용량, 그리고 모델의 일반화 능력에 직접적인 영향을 줍니다.
어휘의 구성 요소
1. 토큰(Token)
어휘의 기본 단위는 토큰입니다. 토큰은 단어, 서브워드(subword), 문자, 또는 특수 기호일 수 있습니다. 예를 들어, 문장 "I love NLP."는 다음과 같이 토큰화될 수 있습니다:
- 단어 기반:
["I", "love", "NLP", "."]
- 서브워드 기반 (Byte Pair Encoding):
["I", "love", "NL", "P", "."]
토큰의 선택 방식은 모델의 성능에 큰 영향을 미칩니다.
2. 토큰 ID 매핑
각 토큰은 고유한 정수 ID로 매핑됩니다. 이를 통해 모델은 단어를 수치 벡터로 변환하여 처리할 수 있습니다. 예를 들어:
토큰 | ID |
---|---|
I | 1 |
love | 2 |
NLP | 3 |
. | 4 |
이러한 매핑은 어휘 사전(vocabulary dictionary)에 저장됩니다.
3. 특수 토큰(Special Tokens)
자연어 처리 모델은 일반적인 단어 외에도 다양한 특수 토큰을 포함합니다. 대표적인 예는 다음과 같습니다:
<UNK>
: 사전에 없는 단어(Unknown)를 나타냄<PAD>
: 시퀀스 길이를 맞추기 위한 패딩 토큰<SOS>
,<EOS>
: 문장의 시작과 끝을 나타냄<MASK>
: 마스크 언어 모델(MLM)에서 사용
어휘 구축 방법
1. 단어 기반 어휘 (Word-based Vocabulary)
가장 전통적인 방식으로, 각 단어를 하나의 토큰으로 간주합니다. 장점은 직관적이며 해석이 쉽다는 점이지만, 다음과 같은 문제점이 있습니다:
- 어휘 크기 폭발: 고유한 단어가 많아질수록 어휘가 커짐
- 형태소 다양성 무시: "run", "running", "ran"이 모두 별개의 토큰으로 처리됨
- 미등록 단어(OOV, Out-of-Vocabulary) 문제 발생
2. 서브워드 기반 어휘 (Subword-based Vocabulary)
형태소보다 작은 단위를 사용하여 어휘를 구성합니다. 대표적인 알고리즘은 다음과 같습니다:
- Byte Pair Encoding (BPE)
빈도가 높은 문자 쌍을 반복적으로 병합하여 토큰을 생성합니다. 예를 들어, "low"와 "er"이 자주 함께 나타나면 "lower"를 하나의 토큰으로 만듭니다. GPT 계열 모델에서 사용됩니다.
- WordPiece
BERT에서 사용하는 방식으로, BPE와 유사하지만 확률 기반으로 토큰을 선택합니다. 최대 우도를 기준으로 토큰을 분할합니다.
- SentencePiece
공백을 특수 토큰으로 취급하지 않고, 원시 텍스트에서 직접 토큰을 학습합니다. 다국어 모델에서 유리합니다.
서브워드 기반 어휘는 어휘 크기를 제어하면서도 OOV 문제를 완화할 수 있어 현대 언어 모델의 표준으로 자리 잡았습니다.
어휘의 크기와 모델 성능
어휘의 크기는 모델의 성능과 계산 효율성 사이의 트레이드오프를 결정합니다.
- 작은 어휘 (e.g., 5,000~10,000): 메리율적이지만, 표현력이 제한됨
- 큰 어휘 (e.g., 30,000~50,000): 표현력은 높지만, 임베딩 레이어의 파라미터 수가 증가 → 계산 비용 증가
예를 들어, BERT-base는 약 30,000개의 서브워드 토큰을 사용하며, GPT-3는 약 50,000개의 BPE 토큰을 사용합니다.
어휘의 도전 과제
1. 다국어 및 코드스위칭
다국어 환경에서는 각 언어의 어휘를 통합해야 하며, 코드스위칭(예: 한국어와 영어 혼용) 시 어휘가 유연하게 대응해야 합니다. mBERT, XLM-R 같은 다국어 모델은 공유 어휘(shared vocabulary)를 사용하여 이 문제를 해결합니다.
2. 어휘의 동적 확장
특정 도메인(예: 의학, 법률)에 맞춰 어휘를 확장해야 할 때, 기존 모델의 임베딩 레이어와 호환되도록 처리해야 합니다. 이는 어휘 확장(vocabulary expansion) 기술이 필요합니다.
참고 자료 및 관련 문서
- Jurafsky, D., & Martin, J. H. (2023). Speech and Language Processing.
- Devlin, J., et al. (2019). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding.
- Sennrich, R., et al. (2016). Neural Machine Translation of Rare Words with Subword Units.
관련 문서
자연어 처리에서 어휘는 단순한 단어 목록을 넘어, 언어를 컴퓨터가 효과적으로 이해하고 생성할 수 있도록 하는 핵심 구조입니다. 올바른 어휘 설계는 모델의 정확도, 효율성, 그리고 일반화 능력을 크게 향상시킬 수 있으며, 현대 언어 모델 연구의 중심 과제 중 하나로 계속 주목받고 있습니다.
이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.