허깅페이스 트렌스포머 활용강좌, 학습 모델 이전에 BART 토크나이징

최근 인공지능과 자연어 처리(NLP) 분야는 눈부신 발전을 이루었습니다. 특히, 트랜스포머(Transformers) 아키텍처는
다양한 NLP 작업에서 혁신적인 결과를 가져왔습니다. 이번 글에서는 허깅페이스(Hugging Face) 라이브러리의
BART(Bidirectional and Auto-Regressive Transformers) 모델을 중심으로,
데이터 전처리에서 중요한 역할을 하는 토크나이징(Tokenization) 과정에 대해 자세히 알아보도록 하겠습니다.
BART는 단순한 비지도 학습과 다수의 감독 학습 작업에서 GPT와 BERT의 장점을 결합한 모델로서, 텍스트 요약, 번역,
질문 생성 등의 다양한 과제에 활용됩니다.

1. BART 모델 이해하기

BART는 인코더-디코더 구조를 갖춘 모델로, 주로 덮어쓰기 복원(auto-regressive)과 입력을 리커버하는
(denoising) 방식 모두를 통해 훈련됩니다. 이러한 구조 덕분에 BART는 텍스트의 다양한 변화를 잘 처리할 수 있으며,
텍스트 생성, 요약, 번역 등 다양한 NLP 작업에서 높은 성능을 발휘합니다.
BART의 주요 특징을 요약하자면 다음과 같습니다.

  • 인코더와 디코더가 모두 존재하여 다양한 작업에 유연하게 사용 가능
  • 이전 문맥을 기반으로 단어를 생성하는 다이나믹한 능력
  • 넉넉한 사전 훈련 데이터에 기반하여 다양한 텍스트 특징을 학습

2. 토크나이징의 필요성

자연어 처리 모델을 훈련시키기 위한 첫 번째 단계는 데이터를 적절한 형식으로 변환하는 것입니다.
토크나이저(tokenizer)는 텍스트를 더 작은 단위, 즉 토큰(token)으로 나누어 모델이 이해할 수 있도록 돕습니다.
이를 통해 모델은 문장과 단어 간의 관계를 더 잘 이해할 수 있게 됩니다. BART에서도 토크나이징은
필수적으로 필요한 과정이며, 텍스트 데이터를 준비하는데 중요한 역할을 합니다.

3. 허깅페이스 라이브러리 설치

토크나이징 과정을 시작하기 전에, 허깅페이스의 트랜스포머 라이브러리를 설치해야 합니다.
아래의 명령어로 쉽게 설치할 수 있습니다.

pip install transformers

4. BART 토크나이저 사용하기

이제 BART 모델의 토크나이저를 사용하여 텍스트를 토크나이징하여 보겠습니다.
여기에서는 BART의 사전 훈련된 모델을 불러오고, 간단한 예제로 텍스트를 토크나이징하여
토큰과 그 토큰의 인덱스를 출력해 보겠습니다.

4.1. 파이썬 코드 예제


from transformers import BartTokenizer

# BART 토크나이저 불러오기
tokenizer = BartTokenizer.from_pretrained('facebook/bart-base')

# 테스트 텍스트
text = "딥러닝은 인공지능의 한 분야입니다."

# 토크나이징
tokens = tokenizer.tokenize(text)
print("토큰화 결과:", tokens)

# 토큰의 인덱스 확인
token_ids = tokenizer.convert_tokens_to_ids(tokens)
print("토큰 ID:", token_ids)
    

위의 코드를 실행하면 아래와 같은 결과를 얻을 수 있습니다:


토큰화 결과: ['▁딥', '러', '닝', '은', '▁인', '공지', '능', '의', '▁한', '▁분야', '입니다', '.']
토큰 ID: [31050, 17381, 2804, 1839, 1507, 7138, 5390, 1839, 2269, 2252, 2872, 2]
    

5. 디코딩 과정

토크나이징 후, 모델에 데이터를 입력하기 전에 디코딩 과정을 통해 토큰의 원래 문장을 복원할 수 있습니다.
다음의 코드는 인덱스를 원래 문장으로 디코딩하는 방법을 보여 줍니다.


# 토큰 ID를 원래 문장으로 디코딩
decoded_text = tokenizer.decode(token_ids)
print("디코딩 결과:", decoded_text)
    

이를 통해 우리는 원래의 문장을 복구할 수 있습니다.
이 과정을 통해 모델이 이해할 수 있는 입력을 어떻게 준비하고,
다시 원래의 형태로 복원할 수 있는지를 보여주었습니다.

6. BART를 활용한 텍스트 요약

토크나이징 후 다음 단계로는 BART 모델을 사용하여 입력된 텍스트를 요약하는 과정입니다.
사용자는 입력 텍스트를 모델에 주고 요약된 결과를 얻을 수 있습니다.
다음은 BART를 활용한 텍스트 요약의 간단한 예제입니다.


from transformers import BartForConditionalGeneration

# BART 모델 불러오기
model = BartForConditionalGeneration.from_pretrained('facebook/bart-base')

# 입력할 텍스트
input_text = "인공지능은 기계가 인간의 지능을 모방하여 수행하는 작업을 의미합니다. 이러한 기술은 최근 몇 년 동안 비약적인 발전을 이루었습니다."

# 텍스트를 토크나이즈 후 인덱스로 변환
input_ids = tokenizer.encode(input_text, return_tensors='pt')

# 요약 생성
summary_ids = model.generate(input_ids, max_length=50, num_beams=5, early_stopping=True)

# 요약 결과 디코딩
summary = tokenizer.decode(summary_ids[0], skip_special_tokens=True)
print("요약 결과:", summary)
    

위의 코드를 실행하면 입력 텍스트의 요약을 생성하게 됩니다.
BART 모델은 입력된 문장을 이해하고, 그것을 간결한 형식으로 변환하는 능력을 가지고 있습니다.

7. 마치며

이번 글에서는 허깅페이스의 BART 모델을 활용한 텍스트 토크나이징 과정과
간단한 요약 예제를 다루었습니다. BART를 비롯한 트랜스포머 모델들은
자연어 처리의 다양한 과제를 효과적으로 수행할 수 있는 뛰어난 성능을 보이고 있습니다.
데이터 전처리 과정에서 토크나이징의 중요성을 인식하고, 이를 통해 모델의 학습 효율성을 높일 수 있습니다.
다음 글에서는 BART의 활용 사례 및 추가적인 응용 방법에 대해 다루어 보겠습니다.

감사합니다!