딥러닝의 발전과 함께 자연어 처리(NLP)는 큰 변화를 겪었습니다. 특히, 허깅페이스(Hugging Face)의 트랜스포머(transformers) 라이브러리는 NLP 작업을 위한 강력한 도구로 자리 잡았습니다. 이 강좌에서는 M2M100 모델을 활용한 다국어 번역 및 토크나이징 과정을 소개합니다.
M2M100 모델 개요
M2M100(Multilingual To Multilingual Translation) 모델은 100개 이상의 언어 간의 직접 번역을 지원하는 다국어 모델입니다. 기존의 번역 모델은 소스 언어에서 중간 언어(예: 영어)로 번역한 후 대상 언어로 변환하는 간접 번역 방식을 사용했습니다. M2M100은 이러한 한계를 극복하기 위해 다국어 간 변환을 가능하게 하여 다양한 언어 쌍 간의 번역 효율성을 크게 향상시킵니다.
토크나이징이란?
토크나이징(tokenization)은 입력된 텍스트를 더 작은 단위인 토큰(token)으로 나누는 과정입니다. 리스트 형식으로 변환한 후, 각각의 토큰에 대해 고유한 인덱스를 부여하게 됩니다. 토크나이징은 NLP에서는 필수적인 과정으로, 텍스트 데이터를 모델에 입력하기 전에 필요합니다.
환경 설정
강좌를 진행하기 전에 필요한 라이브러리를 설치해야 합니다. 특히 transformers
와 torch
를 설치할 것입니다. 아래의 명령어로 설치할 수 있습니다:
pip install transformers torch
토크나이저 불러오기
M2M100 모델에 대한 토크나이저를 불러오기 위해 transformers
라이브러리에서 제공하는 M2M100Tokenizer
클래스를 사용할 것입니다.
import torch
from transformers import M2M100Tokenizer
# M2M100 모델의 토크나이저 불러오기
tokenizer = M2M100Tokenizer.from_pretrained("facebook/m2m100_418M")
토크나이징 과정
이제 우리는 텍스트를 토크나이징할 준비가 되었습니다. 아래는 ‘안녕하세요, 여러분!’이라는 문장을 토크나이징하는 예시입니다.
# 입력 텍스트
text = "안녕하세요, 여러분!"
# 텍스트를 토크나이징
encoded_input = tokenizer(text, return_tensors="pt")
# 토큰과 인덱스 출력
print("토크나이즈된 토큰:", tokenizer.convert_ids_to_tokens(encoded_input['input_ids'][0]))
print("토큰 인덱스:", encoded_input['input_ids'])
토크나이징 결과
위 코드 실행 후 출력되는 결과는 입력된 텍스트가 어떻게 토크나이징되고 인덱스가 매겨졌는지 보여줍니다. convert_ids_to_tokens
메서드를 통해 토큰의 실제 값을 확인할 수 있습니다.
다국어 번역
토크나이징된 데이터를 사용하여 다국어 번역을 수행할 수 있습니다. M2M100 모델을 활용하여 한국어를 영어로 번역하는 예시를 보여드리겠습니다.
from transformers import M2M100ForConditionalGeneration
# M2M100 모델 불러오기
model = M2M100ForConditionalGeneration.from_pretrained("facebook/m2m100_418M")
# 한국어 텍스트
text = "안녕하세요, 여러분!"
encoded_input = tokenizer(text, return_tensors="pt")
# 번역
translated_tokens = model.generate(**encoded_input, forced_bos_token_id=tokenizer.get_lang_id("en"))
# 번역 결과
translated_text = tokenizer.batch_decode(translated_tokens, skip_special_tokens=True)
print("번역 결과:", translated_text[0])
번역 결과 해석
위 코드를 통해 한국어 문장이 영어로 잘 번역됐는지 확인할 수 있습니다. generate
메서드는 입력된 토큰 데이터를 기반으로 번역된 결과를 생성합니다.
결론
이번 강좌에서는 허깅페이스의 M2M100 모델을 활용하여 다국어 토크나이징 및 번역 과정에 대해 살펴보았습니다. 자연어 처리 분야의 발전은 앞으로도 계속될 것이며, 이러한 도구를 활용하여 보다 다양한 언어 간의 소통이 가능해질 것입니다. 앞으로도 NLP와 딥러닝에 대한 많은 관심과 연구가 지속되기를 바랍니다.