텍스트 요약은 긴 문장이나 글을 간결하게 요약하는 과정을 말합니다. 정보의 품질을 유지하면서 길이를 줄이는 것은 정보 검색, 정보 정리, 자동 문서 생성 등 다양한 분야에서 중요한 요소입니다.
딥러닝은 최근 이러한 텍스트 요약 과제를 수행하는 데 큰 성과를 거두고 있습니다. 특히 자연어 처리 분야에서는 트랜스포머(Transformer) 아키텍처를 활용한 모델들이 탁월한 성능을 보이며 주목받고 있습니다.
이 글에서는 파인튜닝된 모델을 사용하여 텍스트를 요약을 해보겠습니다.
목차
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
T5 딥러닝 요약 모델: 트랜스포머 아키텍처와 딥러닝
트랜스포머 아키텍처는 기계 번역을 비롯한 다양한 자연어 처리 작업에서 혁신적인 성능을 보인 딥러닝 모델입니다. 이 아키텍처는 “어텐션” 메커니즘을 기반으로 하며, 입력 문장의 단어 간 상관 관계를 파악하여 효과적인 정보 전달과 문맥 파악을 가능하게 합니다. 트랜스포머 모델 중 하나인 T5(Tap-to-Text Transfer Transformer: T5 딥러닝 요약 모델)는 특히 텍스트 요약 작업에서 뛰어난 성능을 발휘합니다.
T5 모델은 다양한 자연어 처리 작업에서 사전 훈련된 모델을 활용하여 미세 조정(Fine-tuning)하는 방식으로 사용됩니다. 텍스트 요약을 위해서는 사전 훈련된 T5 모델을 가져와서 주어진 긴 문장을 입력으로 받아 간결하면서도 의미를 잘 전달하는 요약을 생성합니다. 이때 max_new_tokens
와 같은 하이퍼파라미터를 조절하여 요약 길이를 조정할 수 있습니다.
T5 딥러닝 요약 모델 다운로드 및 사용해보기
우선 새로운 환경을 만들어 줍니다. (아래글 참고)
함께 참고하면 좋은 글 인공지능 을 위한 아나콘다 와 VS code 설치법
터미널을 열어 git 명령어를 이용해 t5모델을 복제해줍니다.
(git clone https://huggingface.co/kimdwan/t5-base-korean-summarize-LOGAN)
필요한 T5 딥러닝 요약 모델을 설치해 줍니다.
pip install transformers
pip install sentence_transformers
아래는 간단한 코드 예시입니다. 텍스트 요약을 위해 T5 모델을 사용하고, 입력과 출력을 파일로 처리하도록 설계되었습니다.
import torch
from transformers import T5ForConditionalGeneration, AutoTokenizer
def generate_summary(input_text, model, tokenizer, max_new_tokens):
# 입력 문장을 문장 단위로 분할
sentences = input_text.split("\n")
num_sentences = len(sentences)
summary_parts = []
for i in range(0, num_sentences, max_new_tokens):
part = " ".join(sentences[i : i + max_new_tokens])
prefix = "summarize: " + part
token = tokenizer.encode(prefix, return_tensors="pt", max_length=max_new_tokens, truncation=True)
token = token.to(device) # GPU 사용을 위해 토큰을 디바이스로 이동
output = model.generate(input_ids=token, max_length=max_new_tokens, num_return_sequences=1)
summary_part = tokenizer.decode(output[0], skip_special_tokens=True)
summary_parts.append(summary_part)
# 작은 문장들의 요약을 합쳐서 전체 문장의 요약 생성
full_summary = " ".join(summary_parts)
return full_summary
# GPU 사용 설정
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
# 경로는 모델 폴더가 설치된 경로로 설정해야 합니다.
path = ".\\t5-base-korean-summarize-LOGAN"
model = T5ForConditionalGeneration.from_pretrained(path)
tokenizer = AutoTokenizer.from_pretrained(path)
# 모델을 GPU로 이동
model.to(device)
# 입력값을 input.txt에서 불러오기
input_file_path = "input.txt"
with open(input_file_path, "r", encoding="utf-8") as input_file:
input_text = input_file.read()
# 적절한 max_new_tokens 값 설정
# 여러 번 실험을 통해 적절한 값을 찾아보세요.
max_new_tokens = 2048 # 예시로 2048으로 설정
summary = generate_summary(input_text, model, tokenizer, max_new_tokens)
# 생성된 요약을 output.txt로 내보내기
output_file_path = "output.txt"
with open(output_file_path, "w", encoding="utf-8") as output_file:
output_file.write(summary)
아래 글의 내용이 input.txt 입니다. (Attention Is All You Need논문의 Abstract 부분입니다. )
입력측에는 적절한 문장 줄바꿈을 해 줘야 하고 길이를 적당히 조절해야 출력측에서 잘리지 않습니다.
지배적인 시퀀스 변환 모델은 인코더와 디코더를 포함하는 복잡한 순환 또는 합성곱 신경망을 기반으로 하고 있습니다.
최고 성능을 내는 모델들은 또한 attention 메커니즘을 통해 인코더와 디코더를 연결합니다.
우리는 순환과 합성곱을 완전히 배제하고 오직 attention 메커니즘만을 기반으로 한 새로운 단순한 네트워크 구조인 Transformer를 제안합니다.
두 가지 기계 번역 작업에서의 실험은 이러한 모델이 품질이 뛰어나면서도 더 병렬화가 가능하고 훨씬 적은 시간이 훈련에 필요하다는 것을 보여줍니다.
우리의 모델은 WMT 2014 영어-독일어 번역 작업에서 28.4 BLEU를 달성하여 기존의 최고 결과, 앙상블을 포함하여 2 BLEU 이상 향상시켰습니다.
WMT 2014 영어-프랑스어 번역 작업에서는 8개의 GPU에서 3.5일 동안 훈련한 후 새로운 단일 모델 최고 BLEU 점수인 41.8을 달성하였으며, 이는 문헌에서의 최고 모델의 훈련 비용의 일부분에 불과합니다.
우리는 Transformer가 크고 제한된 훈련 데이터를 가진 영어 구문 분석에도 성공적으로 적용됨으로써 다른 작업에도 잘 일반화된다는 것을 보여줍니다.
아래 글의 내용이 output.txt 입니다. 요약이 잘 되는 것을 알 수 있습니다.
지배적인 시퀀스 변환 모델은 인코더와 디코더를 포함하는 복잡한 순환 또는 합성곱 신경망을 기반으로 하고 있습니다. 우리는 순환과 합성곱을 완전히 배제하고 오직 attention 메커니즘만을 기반으로 한 새로운 단순한 네트워크 구조인 Transformer를 제안합니다
T5 딥러닝 요약 모델: 결론
“이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.”
딥러닝과 특히 T5 딥러닝 요약 모델을 활용한 텍스트 요약은 다양한 분야에서 매우 유용하게 사용될 수 있습니다. 이러한 모델을 사용하는 주된 장점 중 하나는 로컬 환경에서 안전하게 데이터를 처리할 수 있다는 것입니다.
이는 사용자 데이터의 보안과 프라이버시를 중요하게 여기는 현대 사회에서 큰 이점으로 작용합니다. 물론, 챗봇과 같은 서비스를 이용하는 것이 더 편리할 수 있지만, 로컬에서 딥러닝 모델을 활용하면 기록이 남지 않기 때문에 보안성이 높아집니다.
따라서 개인이나 기업, 연구 기관 등 다양한 사용자들이 자신들의 특별한 요구를 충족시키기 위해 이러한 방식을 선택할 수 있습니다.
함께 참고하면 좋은 글