최근 인공지능과 자연어 처리 분야에서 딥러닝 모델은 놀라운 발전을 거듭하고 있습니다. 특히, 허깅페이스(Hugging Face)의 Transformers 라이브러리는 다양한 자연어 처리(NLP) 모델을 손쉽게 사용할 수 있게 해줍니다. 실습에서는 BART(Bidirectional and Auto-Regressive Transformers) 모델을 활용하여 텍스트를 처리하고, 이의 결과를 넘파이(Numpy) 배열로 변환하는 방법에 대해 알아보겠습니다.
BART 모델 소개
BART는 Facebook AI Research에서 개발된 모델로, 텍스트 생성 및 요약 작업에서 우수한 성능을 보입니다. BART는 Encoder-Decoder 구조를 채택하여, 입력 텍스트를 이해하고 이를 기반으로 새로운 텍스트를 생성하는 데 강점을 가지고 있습니다. BART는 특히 그래픽 노드와 같은 복잡한 구조의 텍스트를 잘 처리하며, 다양한 NLP 태스크에서 성능을 발휘합니다.
허깅페이스 Transformers 설치하기
허깅페이스의 Transformers 라이브러리를 사용하기 위해서는 해당 라이브러리를 설치해야 합니다. 아래의 명령어를 통해 쉽게 설치할 수 있습니다.
pip install transformers
BART 토크나이저 사용하기
BART를 사용하기 위해 토크나이저를 초기화하고, 텍스트를 토큰화하는 과정을 살펴보겠습니다. 다음 코드는 기본적인 텍스트를 BART 토크나이저를 사용하여 토큰화하는 예시입니다.
from transformers import BartTokenizer
# BART 토크나이저 초기화
tokenizer = BartTokenizer.from_pretrained('facebook/bart-large')
# 입력 텍스트
text = "딥러닝은 미래의 기술이다."
# 텍스트를 토큰화
tokens = tokenizer(text)
print(tokens)
토큰화 결과
위의 코드에서는 BART 토크나이저를 사용하여 입력된 텍스트를 토큰화하였습니다. 토큰화의 결과는 딕셔너리 형태로 표현되며, 여러 가지 정보를 담고 있습니다.
Output:
{'input_ids': [0, 10024, 327, 1311, 1346, 231, 1620, 2], 'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1]}
넘파이 배열로 변환하기
토켄화된 결과를 넘파이 배열로 변환하여, 모델 입력으로 사용하기에 적합한 형태로 만들겠습니다. 먼저, NumPy 라이브러리를 설치하고 불러옵니다.
import numpy as np
코드 예제
전체 과정을 포함한 예제 코드는 다음과 같습니다:
import numpy as np
from transformers import BartTokenizer
# BART 토크나이저 초기화
tokenizer = BartTokenizer.from_pretrained('facebook/bart-large')
# 입력 텍스트
text = "딥러닝은 미래의 기술이다."
# 텍스트를 토큰화
tokens = tokenizer(text)
# input_ids를 넘파이 배열로 변환
input_ids_np = np.array(tokens['input_ids'])
attention_mask_np = np.array(tokens['attention_mask'])
# 출력
print("Input IDs:", input_ids_np)
print("Attention Mask:", attention_mask_np)
결과 확인하기
위 코드를 실행하면 토큰화 결과가 넘파이 배열로 변환된 것을 확인할 수 있습니다. 이 배열들은 이후 모델의 입력으로 사용할 수 있습니다.
모델에 입력하기
생성한 숫자 배열을 모델에 입력하여 텍스트 생성 또는 다른 NLP 태스크를 수행할 수 있습니다. 예를 들어, 문장을 요약하는 작업을 진행할 수 있습니다. 다음은 BART 모델을 사용하여 입력 텍스트를 요약하는 예제입니다.
from transformers import BartForConditionalGeneration
# BART 모델 불러오기
model = BartForConditionalGeneration.from_pretrained('facebook/bart-large')
# 모델에 입력하기
output_sequences = model.generate(input_ids_np[np.newaxis, :], attention_mask=attention_mask_np[np.newaxis, :])
# 결과 디코딩
summary = tokenizer.decode(output_sequences[0], skip_special_tokens=True)
print("Generated Summary:", summary)
모델의 출력
위 코드의 결과로 생성된 요약 텍스트를 확인할 수 있습니다. BART 모델은 입력된 문장을 바탕으로 자연스러운 텍스트 생성을 통해 유의미한 내용을 추출합니다.
결론
이번 강좌에서 우리는 허깅페이스의 Transformers 라이브러리를 활용하여 BART 모델을 통해 토크나이저를 사용하고, 그 결과를 넘파이 배열로 변환하는 방법에 대해 알아보았습니다. 이 과정을 통해 자연어 처리의 기초적인 이해를 돕고, 모델 활용의 기초적인 기술을 익힐 수 있습니다. 앞으로 다양한 텍스트 처리 작업에서 BART와 같은 접근법을 활용하여 더 많은 성과를 거두길 바랍니다.
이 강좌를 통해 얻은 지식을 바탕으로 더 많은 프로젝트를 시도하고, 딥러닝에 대한 이해를 넓힐 수 있기를 바랍니다. 감사합니다.