문장의 토큰 수를 확인하는 방법

문장의 토큰 수를 확인하는 방법

자연어 처리(NLP)에서 문장을 분석할 때, 문장을 구성하는 단위인 **토큰(token)**을 확인하는 것은 매우 중요합니다. 이번 글에서는 Transformers 라이브러리를 활용하여 문장의 토큰 수를 확인하는 방법을 소개합니다.


1. 토큰이란?

토큰(Token)이란 NLP에서 문장을 분석할 때 가장 작은 단위로 분리된 요소를 의미합니다. 일반적으로 단어, 서브워드(subword), 문자(character) 단위로 나뉘며, 사용되는 모델에 따라 다르게 처리됩니다.

예를 들어, 다음 문장이 있다고 가정해 보겠습니다.

"이미지에는 분홍색 담요 위에 두 마리의 고양이가 누워 있습니다."

이 문장을 토큰화하면 모델에 따라 다음과 같은 결과가 나올 수 있습니다.

  • 단어 기반 토큰화: ['이미지에는', '분홍색', '담요', '위에', '두', '마리의', '고양이가', '누워', '있습니다.']
  • 서브워드 기반 토큰화: ['이미지', '##에는', '분홍색', '담', '##요', '위', '##에', '두', '마리', '##의', '고양이', '##가', '누워', '있습니다', '.']
  • 문자 기반 토큰화: ['이', '미', '지', '에', '는', ' ', '분', '홍', '색', ...]

이번 글에서는 Hugging Face의 Transformers 라이브러리를 이용하여 BERT 모델을 기반으로 문장을 토큰화하고, 토큰 수를 확인하는 방법을 살펴보겠습니다.


2. 토큰 수 확인하는 코드 예제

(1) 필요한 라이브러리 설치

먼저, transformers 라이브러리를 설치해야 합니다.

pip install transformers

(2) 토크나이저 로드 및 토큰 수 계산

이제 Python 코드에서 토큰 수를 계산하는 방법을 살펴보겠습니다.

from transformers import AutoTokenizer

# 사용할 모델의 토크나이저 로드 (예: BERT)
tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-multilingual-cased")

# 주어진 문장
text = "이미지에는 분홍색 담요 위에 두 마리의 고양이가 누워 있습니다. 왼쪽 고양이는 줄무늬 털을 가진 태비 품종이고, 오른쪽 고양이는 점박이 무늬 털을 가진 칼리코 품종입니다. 두 고양이 모두 눈을 감고 잠을 자거나 휴식을 취하고 있습니다. 담요 옆에는 각각 왼쪽 고양이와 오른쪽 고양이 근처에 흰색 리모컨 두 개가 평행하게 놓여 있습니다. 배경은 분홍색으로, 담요와 같은 색상입니다. 이미지에는 텍스트나 다른 물체는 포함되어 있지 않습니다."

# 문장을 토큰화하고 토큰 수 계산
tokens = tokenizer.tokenize(text)
num_tokens = len(tokens)

print(f"토큰 수: {num_tokens}")

(3) 코드 설명

  • 토크나이저 로드: AutoTokenizer.from_pretrained("google-bert/bert-base-multilingual-cased")를 사용하여 BERT 모델의 토크나이저를 불러옵니다.
  • 문장 입력: 토큰화할 문장을 text 변수에 저장합니다.
  • 토큰화 수행: tokenizer.tokenize(text)를 호출하여 문장을 토큰으로 변환합니다.
  • 토큰 수 계산: len(tokens)을 통해 총 토큰 개수를 확인합니다.

3. 실행 결과 예시

위 코드를 실행하면 다음과 같은 출력이 나올 수 있습니다.

토큰 수: 67

이 값은 모델과 토크나이저에 따라 달라질 수 있습니다. BERT 기반 모델의 경우, 서브워드 토크나이저를 사용하기 때문에 한 단어가 여러 개의 토큰으로 분리될 수 있습니다.


4. 다른 모델을 사용한 토큰 수 비교

BERT 이외에도 다양한 NLP 모델을 사용하여 토큰 수를 비교해볼 수 있습니다. 예를 들어, GPT-3.5text-davinci-003 모델을 사용하면 다르게 토큰화될 수도 있습니다.

from transformers import AutoTokenizer

# GPT-3.5 기반 모델 토크나이저 로드
tokenizer = AutoTokenizer.from_pretrained("gpt2")

# 문장 입력
text = "이미지에는 분홍색 담요 위에 두 마리의 고양이가 누워 있습니다."

# 토큰화 및 토큰 수 확인
tokens = tokenizer.tokenize(text)
num_tokens = len(tokens)

print(f"GPT-3.5 토큰 수: {num_tokens}")

이처럼 NLP 모델에 따라 토큰화 방식이 다르므로, 프로젝트에서 사용하는 모델이 어떤 토크나이저를 적용하는지 확인하는 것이 중요합니다.


5. 결론

이번 글에서는 Transformers 라이브러리를 활용하여 문장의 토큰 수를 확인하는 방법을 살펴보았습니다.

  • 토큰이란 무엇인지 설명하였고,
  • BERT 모델을 기반으로 문장을 토큰화하고 토큰 개수를 세는 코드를 실행해 보았습니다.
  • 다양한 NLP 모델에 따라 토큰화 방식이 달라질 수 있음을 확인하였습니다.

이제 여러분도 직접 다양한 문장을 입력해보고, 다른 모델을 활용하여 토큰 수를 비교해보세요! 



from transformers import AutoTokenizer

# 사용할 모델의 토크나이저 로드 (예: BERT)

tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-multilingual-cased")


# 주어진 문장

text = "이미지에는 분홍색 담요 위에 두 마리의 고양이가 누워 있습니다. 왼쪽 고양이는 줄무늬 털을 가진 태비 품종이고, 오른쪽 고양이는 점박이 무늬 털을 가진 칼리코 품종입니다. 두 고양이 모두 눈을 감고 잠을 자거나 휴식을 취하고 있습니다. 담요 옆에는 각각 왼쪽 고양이와 오른쪽 고양이 근처에 흰색 리모컨 두 개가 평행하게 놓여 있습니다. 배경은 분홍색으로, 담요와 같은 색상입니다. 이미지에는 텍스트나 다른 물체는 포함되어 있지 않습니다."


# 문장을 토큰화하고 토큰 수 계산

tokens = tokenizer.tokenize(text)

num_tokens = len(tokens)


print(f"토큰 수: {num_tokens}")




댓글 쓰기

0 댓글