토큰화는 자연어 처리(NLP) 및 머신 러닝(ML)의 기본 단계로, 텍스트를 토큰이라는 작은 단위로 분해하는 작업을 포함합니다. 이러한 토큰은 작업의 특정 요구 사항과 사용 중인 모델에 따라 단어, 하위 단어, 문자 또는 기호가 될 수 있습니다. 원시 텍스트를 머신러닝 모델이 이해할 수 있는 숫자 형식으로 변환함으로써 토큰화는 다양한 AI 애플리케이션에 매우 중요합니다.
정의
토큰화는 텍스트 문자열을 개별 토큰으로 분할하는 과정입니다. 문장을 조각으로 자른다고 생각하면 됩니다. 이러한 조각, 즉 토큰은 컴퓨터가 처리할 수 있는 기본 단위가 됩니다. 예를 들어 "Ultralytics YOLO is fast."라는 문장은 ["Ultralytics", "YOLO", "is", "fast", "."]로 토큰화될 수 있습니다. 텍스트가 토큰화되는 방식은 모델이 언어를 얼마나 잘 이해하고 처리하는지에 큰 영향을 미칠 수 있습니다. 각기 장단점이 있는 다양한 토큰화 전략이 존재합니다. 일반적인 방법은 다음과 같습니다:
- 단어 토큰화: 가장 간단한 접근 방식으로, 일반적으로 공백과 구두점을 기준으로 텍스트를 개별 단어로 분할합니다. 예를 들어 "인공지능을 배워봅시다!"는 ["Let", "'s", "learn", "AI", "!"]가 됩니다.
- 캐릭터 토큰화: 여기서 각 문자는 토큰으로 간주됩니다. "인공지능을 배우자!"라는 동일한 문장은 ["L", "e", "t", "'", "s", " ", "l", "e", "a", "r", "n", " ", "A", "I", "!"]로 토큰화될 수 있습니다. 이 방법은 단어가 공백으로 명확하게 구분되지 않는 언어나 어휘에서 벗어난 단어를 다룰 때 유용합니다.
- 하위 단어 토큰화: 이 방법은 단어와 문자 토큰화 사이의 균형을 유지합니다. 자주 등장하는 문자 시퀀스를 기반으로 단어를 더 작은 단위(서브워드)로 나눕니다. 예를 들어, "unbreakable"은 ["un", "break", "able"]로 토큰화될 수 있습니다. 이 기술은 희귀 단어를 처리하고 어휘 크기를 줄이는 데 효과적이며, 특히 GPT-4 및 GPT-3을 포함한 BERT(Bidirectional Encoder Representations from Transformers) 및 GPT(Generative Pre-trained Transformer) 제품군과 같은 모델에서 유용합니다.
관련성 및 응용 분야
토큰화는 기계가 인간의 언어를 처리하고 이해할 수 있도록 하는 거의 모든 NLP 작업의 전제 조건입니다. 토큰화의 적용 범위는 방대하며 다양한 영역에 걸쳐 있습니다:
- 감성 분석: 감성 분석에서 토큰화는 고객 리뷰나 소셜 미디어 게시물을 개별 단어나 구문으로 분류한 다음, 이를 분석하여 전반적인 감성(긍정, 부정 또는 중립)을 파악하는 데 도움이 됩니다. 예를 들어 "이 Ultralytics 허브는 매우 사용자 친화적이다!"라는 문장을 분석할 때 토큰화를 사용하면 감성 분석 모델이 "매우", "사용자 친화적" 등의 개별 단어에 집중하여 긍정적인 감성을 측정할 수 있습니다.
- 기계 번역: 토큰화는 기계 번역에 필수적입니다. 한 언어에서 다른 언어로 문장을 번역하기 전에 먼저 문장을 토큰화합니다. 이렇게 하면 번역 모델이 텍스트를 단어 단위 또는 하위 단어 단위로 처리하여 문맥을 인식하는 정확한 번역을 수행할 수 있습니다. 예를 들어, " Ultralytics YOLO 모델을 훈련하는 방법"을 번역하려면 먼저 이를 단어 또는 하위 단어로 토큰화한 다음 이 토큰을 다른 언어로 매핑해야 합니다.
- 텍스트 생성: 대규모 언어 모델(LLM)과 같이 텍스트 생성에 사용되는 모델은 토큰화에 크게 의존합니다. 이러한 모델은 텍스트를 생성할 때 시퀀스의 다음 토큰을 예측합니다. 토큰화는 단어든 하위 단어든 의미 있는 단위로 출력을 구성하여 일관성 있고 문법적으로 올바른 텍스트로 이어지도록 보장합니다.
- 검색 엔진 및 정보 검색: 검색 엔진은 토큰화를 활용하여 웹 페이지를 색인하고 검색 쿼리를 처리합니다. " Ultralytics YOLO "를 검색하면 검색 엔진은 쿼리를 키워드로 토큰화하고 이 토큰을 색인된 콘텐츠와 대조하여 관련 결과를 검색합니다. 시맨틱 검색은 토큰의 의미와 그 문맥을 이해함으로써 이 프로세스를 더욱 세분화합니다.
토큰화 유형
토큰화의 기본 개념은 간단하지만, 다양한 언어와 NLP 작업에 맞는 다양한 기술이 존재합니다:
- 공백 토큰화: 이 간단한 방법은 공백 문자(공백, 탭, 개행)를 기준으로 텍스트를 분할합니다. 구현하기는 쉽지만 구두점을 효과적으로 처리하지 못할 수 있으며 공백을 사용하여 단어를 구분하지 않는 언어에서는 어려움을 겪을 수 있습니다.
- 규칙 기반 토큰화: 이 접근 방식은 사전 정의된 규칙을 사용하여 구두점, 축약 및 기타 언어별 뉘앙스를 처리합니다. 예를 들어 구두점을 개별 토큰으로 분리하거나 "can't"와 같은 축약어를 두 개의 토큰으로 처리하도록 규칙을 설정할 수 있습니다: "ca"와 "n't".
- 통계적 토큰화: 고급 기법은 대규모 텍스트 말뭉치에 대해 학습된 통계 모델을 활용하여 토큰 경계를 결정합니다. 바이트 쌍 인코딩(BPE) 및 워드피스와 같은 하위 단어 토큰화 알고리즘을 포함한 이러한 방법은 복잡한 언어와 어휘에서 벗어난 단어를 처리하는 데 특히 효과적입니다.
토큰화의 이점
토큰화는 AI와 ML의 맥락에서 몇 가지 주요 이점을 제공합니다:
- 텍스트 데이터를 단순화합니다: 토큰화는 텍스트를 더 작고 관리하기 쉬운 단위로 분해하여 복잡한 비정형 텍스트 데이터를 알고리즘이 효율적으로 처리할 수 있는 형식으로 변환합니다.
- 숫자 표현을 활성화합니다: 토큰은 머신러닝 모델의 표준 입력인 벡터와 같은 수치 표현으로 쉽게 변환할 수 있습니다. 이러한 변환은 모델이 텍스트 데이터의 패턴과 관계를 학습하는 데 필수적입니다. 단어 임베딩과 같은 기술은 의미적 의미를 포착하여 이러한 표현을 더욱 향상시킵니다.
- 모델 성능 향상: 효과적인 토큰화는 NLP 모델의 성능을 크게 향상시킬 수 있습니다. 특정 작업과 언어에 적합한 토큰화 전략을 선택하면 분류, 번역, 생성 등의 작업에서 정확도와 효율성이 향상될 수 있습니다.
- 어휘 크기를 관리합니다: 특히 서브워드 토큰화는 어휘 크기를 관리하는 데 도움이 됩니다. 단어를 하위 단어 단위로 세분화하면 모델이 학습해야 하는 고유 토큰의 수가 줄어들어 모델이 더 효율적이고 희귀하거나 잘 보이지 않는 단어를 포함하여 더 넓은 범위의 텍스트를 처리할 수 있게 됩니다.
요약하자면, 토큰화는 컴퓨터가 텍스트 데이터를 이해하고 처리할 수 있도록 하는 NLP 및 ML의 중요한 전처리 단계입니다. 그 효과는 선택한 기술과 특정 작업 및 언어에 대한 적합성에 따라 달라집니다. 토큰화에 대한 이해는 감정 분석부터 객체 감지를 위한 텍스트 프롬프트를 이해할 수 있는 Ultralytics YOLO -World와 같은 복잡한 언어 모델에 이르기까지 텍스트 기반 AI 애플리케이션을 사용하는 모든 사람에게 필수적인 요소입니다.