허깅페이스 트렌스포머 활용강좌, 자동 음성 인식 데이터세트 불러오기

이 강좌에서는 허깅페이스의 트렌스포머(Transformers) 라이브러리를 활용하여 자동 음성 인식(ASR: Automatic Speech Recognition) 데이터셋을 어떻게 불러오고 사용할 수 있는지를 설명하겠습니다. 말씀드리자면, 딥러닝 기반의 음성 인식 기술은 최근 몇 년 동안 급격히 발전하였고, 특히 허깅페이스 라이브러리는 이러한 기술을 손쉽게 적용할 수 있는 도구를 제공합니다.

1. 허깅페이스 트렌스포머 소개

허깅페이스(Hugging Face)는 다양한 자연어 처리 (NLP) 모델을 쉽게 사용할 수 있도록 돕는 라이브러리로 잘 알려져 있습니다. 최근에는 음성 인식 모델도 지원하여, 연구자와 개발자들이 음성 인식 기술을 direkt 통합할 수 있도록 하고 있습니다. 트렌스포머 라이브러리는 전이 학습(Transfer Learning) 및 다양한 사전 훈련된 모델을 제공하여, 복잡한 알고리즘 구현 없이도 고성능 모델을 빠르게 구축할 수 있습니다.

2. 자동 음성 인식(ASR) 개요

자동 음성 인식(ASR)은 음성을 텍스트로 변환하는 과정입니다. 이 과정은 음향 모델, 언어 모델, 그리고 발음 모델을 포함하여 이루어집니다. 최근의 딥러닝 기반 ASR 시스템은 대량의 음성 데이터셋을 활용하여 사람의 음성을 인식하는 데 높은 정확도를 보여줍니다.

3. 충분한 데이터셋 확보하기

**허깅페이스는 ASR을 위해 다양한 데이터셋을 제공합니다.** 예를 들어, Common Voice, LibriSpeech, TED-LIUM 등이 있습니다. 위의 데이터셋은 모두 허깅페이스의 데이터셋 허브에서 쉽게 접근할 수 있습니다. 이를 통해 필요한 데이터셋을 직접 불러올 수 있습니다.

4. 데이터셋 불러오기

이제 실제로 자동 음성 인식 데이터셋을 불러오는 예제를 살펴보겠습니다. 이를 위해 먼저 필요한 패키지를 설치해야 합니다. 아래는 필요한 패키지를 설치하는 명령어입니다:

pip install transformers datasets

4.1. 데이터셋 불러오기 예제

이제 datasets 라이브러리를 활용하여 Common Voice 데이터셋을 불러오겠습니다. 아래의 코드는 Python으로 작성된 예제입니다.


from datasets import load_dataset

# Common Voice 데이터셋 로드
dataset = load_dataset("common_voice", "ko", split="train")

# 데이터셋의 첫 몇 개의 샘플 출력
for i in range(5):
    print(dataset[i])

4.2. 코드 설명

위의 코드에서 load_dataset 함수는 허깅페이스 datasets 라이브러리에서 제공하는 다양한 데이터셋을 손쉽게 불러오는 기능을 합니다. 여기서는 Common Voice 데이터셋의 한국어 버전을 불러오고 있습니다. 불러온 데이터셋은 dataset 변수에 저장되며, 이 데이터를 사용하여 음성 인식 모델을 훈련할 수 있습니다.

4.3. 데이터셋 구조

Common Voice 데이터셋은 여러 필드를 가지고 있습니다. 각 샘플은 보통 다음과 같은 형태로 이루어져 있습니다:

  • audio: 녹음된 음성 데이터에 대한 정보
  • sentence: 음성으로 인식된 텍스트
  • speaker_id: 발화자의 ID
  • lang: 언어 정보

5. 간단한 음성 인식 모델 학습

데이터셋을 불러왔으니, 이제 간단한 음성 인식 모델을 학습시켜 보겠습니다. pretrained 모델을 가져와서 transfer learning을 적용하는 방식으로 진행할 것입니다.

5.1. 모델 로드 및 훈련 데이터 준비


from transformers import Wav2Vec2ForCTC, Wav2Vec2Tokenizer
import torch

# pretrained 모델과 토크나이저 로드
model_name = "facebook/wav2vec2-large-960h"
tokenizer = Wav2Vec2Tokenizer.from_pretrained(model_name)
model = Wav2Vec2ForCTC.from_pretrained(model_name)

# 음성 신호를 텍스트로 변환
def transcribe(input_audio):
    inputs = tokenizer(input_audio, return_tensors="pt", padding="longest")
    with torch.no_grad():
        logits = model(inputs.input_values).logits
    predicted_ids = torch.argmax(logits, dim=-1)
    transcription = tokenizer.batch_decode(predicted_ids)
    return transcription[0]

# 첫 번째 오디오 샘플에 대해 전사 수행
transcription_result = transcribe(dataset[0]['audio']['array'])
print("Transcription:", transcription_result)

5.2. 코드 설명

위의 코드는 사전 학습된 Wav2Vec2 모델을 사용하여 음성 데이터를 텍스트로 전사하는 과정입니다. 이 모델은 Facebook이 개발했고, 960시간의 다양한 음성 데이터를 기반으로 학습되었습니다. transcribe 함수는 입력된 오디오 샘플을 사용하여 텍스트로 변환하며, 결과는 콘솔에 출력됩니다.

6. 결과 분석

모델의 성능을 평가하기 위해, 여러 오디오 샘플에 대해 전사를 수행하고, 실제 텍스트와 비교해 볼 수 있습니다. 일반적으로, 음성 인식 모델은 발화자의 발음, 말의 속도, 배경 소음 등에 따라 인식 정확도가 달라질 수 있습니다. 여러 샘플을 비교하여 모델의 강점과 약점을 분석하는 것이 중요합니다.

7. 결론

이번 강좌에서는 허깅페이스의 트렌스포머 라이브러리를 활용하여 자동 음성 인식 데이터셋을 불러오고, 간단한 음성 인식 모델을 구축하는 방법을 살펴보았습니다. 동영상이나 음성 데이터는 많지만, 어떤 모델을 사용할지, 어떻게 학습 시킬지를 고민하는 것이 중요합니다. 향후 더욱 발전된 모델을 통해 다양한 상황에서도 높은 정확도를 낼 수 있기를 기대합니다.

앞으로도 다양한 딥러닝 기술을 학습하고 적용하는 데에 도움이 되는 글을 계속 작성할 예정이니 많은 기대 부탁드립니다!

8. 참고 자료

허깅페이스 트렌스포머 활용강좌, 재현율, 정밀도, F1값

오늘날 딥러닝의 발전과 함께 자연어 처리(NLP) 분야에서도 많은 혁신이 이루어졌습니다.
그중에서도 허깅페이스(Hugging Face)의 트랜스포머는 많은 연구자와 개발자들에게
인기를 끌고 있는 도구입니다. 이번 강좌에서는 허깅페이스 트랜스포머를 활용하여 자연어 처리
태스크를 수행하는 방법과 함께 모델 성능을 평가하는 지표인 재현율, 정밀도, F1값에 대해 깊이
있게 살펴보겠습니다.

1. 허깅페이스 트랜스포머란?

허깅페이스 트랜스포머는 Hugging Face에서 개발한
오픈소스 라이브러리로, 다양한 사전 학습된 트랜스포머 모델을 쉽게 사용할 수 있도록
지원합니다. 이 라이브러리는 BERT, GPT-2, T5와 같은 최신 모델을 포함하고 있으며,
사용자 친화적인 API를 제공하여 개발자들이 NLP 태스크를 쉽게 구현할 수 있도록 돕습니다.

2. 재현율, 정밀도, F1값이란?

딥러닝 모델의 성능을 평가할 때 여러 지표를 사용할 수 있습니다.
그중에서 중요한 세 가지 지표에 대해 설명하겠습니다.

2.1. 정밀도(Precision)

정밀도는 모델이 양성으로 예측한 데이터 중 실제 양성으로 틀린 비율을 의미합니다.
정밀도를 계산하는 공식은 다음과 같습니다:

Precision = TP / (TP + FP)

  • TP: True Positives (진짜 양성)
  • FP: False Positives (가짜 양성)

2.2. 재현율(Recall)

재현율은 실제 양성 중에서 모델이 올바르게 양성으로 예측한 비율을 나타냅니다.
재현율을 계산하는 공식은 다음과 같습니다:

Recall = TP / (TP + FN)

  • FN: False Negatives (가짜 음성)

2.3. F1값

F1값은 정밀도와 재현율의 조화 평균으로, 두 지표 간의 균형을 제공합니다.
F1값을 계산하는 공식은 다음과 같습니다:

F1 = 2 * (Precision * Recall) / (Precision + Recall)

3. 허깅페이스 트랜스포머 설치하기

허깅페이스의 트랜스포머 라이브러리를 사용하기 위해서는 먼저 해당 라이브러리를
설치해야 합니다. 아래 명령어를 통해 설치할 수 있습니다.

pip install transformers

4. 모델 로딩 및 데이터 준비

트랜스포머를 활용하기 위해, 먼저 사전 훈련된 모델을 로딩하고,
데이터를 적절히 준비해야 합니다. 예를 들어, 다음의 코드는 BERT 모델을 로딩하고
데이터를 텍스트로 준비하는 방법을 보여줍니다.

from transformers import BertTokenizer, BertForSequenceClassification
import torch

# 모델과 토크나이저 로딩
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertForSequenceClassification.from_pretrained('bert-base-uncased', num_labels=2)

# 예시 데이터
texts = ["I love using Hugging Face!", "This is a bad experience."]
labels = [1, 0]  # 긍정(1), 부정(0)

# 데이터 토큰화
inputs = tokenizer(texts, padding=True, truncation=True, return_tensors="pt")

5. 모델 훈련 및 평가

모델이 준비되었다면, 이제 확률적 경사 하강법을 사용하여 모델을 훈련할 수 있습니다.
아래의 코드는 파이토치(PyTorch)를 사용해 모델을 훈련하고 평가하는 과정을 보여줍니다.

# 옵티마이저 설정
optimizer = torch.optim.AdamW(model.parameters(), lr=5e-5)

# 훈련 루프
model.train()
for epoch in range(3):
    optimizer.zero_grad()
    outputs = model(**inputs, labels=torch.tensor(labels))
    loss = outputs.loss
    loss.backward()
    optimizer.step()
    print(f'Epoch {epoch + 1}, Loss: {loss.item()}')

# 평가
model.eval()
with torch.no_grad():
    logits = model(**inputs).logits
    predictions = torch.argmax(logits, dim=1).numpy()

6. 성능 평가 지표 계산

모델의 예측 결과를 바탕으로 정밀도, 재현율, F1값을 계산할 수 있습니다.
이를 위해 sklearn 라이브러리를 사용할 수 있습니다.

from sklearn.metrics import precision_score, recall_score, f1_score

# 정밀도, 재현율, F1값 계산
precision = precision_score(labels, predictions)
recall = recall_score(labels, predictions)
f1 = f1_score(labels, predictions)

print(f'Precision: {precision:.2f}, Recall: {recall:.2f}, F1 Score: {f1:.2f}')

7. 결론

이번 강좌에서는 허깅페이스 트랜스포머를 활용하여 NLP 모델을
훈련시키고, 성능 평가를 위한 정밀도, 재현율, F1값을 계산하는 과정을
살펴보았습니다. 허깅페이스의 다양한 도구와 모델을 활용하여 여러분의 프로젝트에
강력한 NLP 기능을 추가해보세요.

참고 자료

허깅페이스 트렌스포머 활용강좌, 위키피디아 영문 키워드 검색

딥러닝과 자연어 처리(NLP) 분야에서 Hugging Face의 Transformers 라이브러리는 강력한 도구로 자리 잡았습니다. 이 강좌에서는 Hugging Face Transformers와 함께 Wikipedia API를 활용하여 주어진 키워드로 위키피디아에서 적절한 문서를 검색하는 방법을 설명합니다.

1. Hugging Face Transformers란?

Hugging Face는 자연어 처리 모델의 학습, 추론 및 배포를 위한 라이브러리를 제공하는 플랫폼입니다. Transformers 라이브러리는 사전 훈련된 모델을 쉽게 사용할 수 있게 해주며, PyTorch 및 TensorFlow와 호환됩니다. 이 라이브러리를 통해 다양한 NLP 작업을 수행할 수 있습니다. 예를 들어, 텍스트 분류, 질문 답변, 텍스트 생성 등 다양한 태스크에서 성능을 발휘합니다.

2. 위키피디아 API 소개

위키피디아는 개방형 온라인 백과사전으로, 다양한 주제에 대한 정보를 제공합니다. 위키피디아는 API를 통해 사용자들이 프로그램적으로 정보를 검색할 수 있도록 지원합니다. API를 활용하면 특정 키워드에 따라 위키피디아 페이지를 검색하고, 필요한 정보를 쉽게 가져올 수 있습니다.

3. 필요한 라이브러리 설치하기

작업에 필요한 라이브러리를 설치하려면 아래의 명령어를 사용합니다. Hugging Face 라이브러리와 Wikipedia API를 사용하기 위해 transformerswikipedia-api 패키지를 설치해야 합니다.

pip install transformers wikipedia-api

4. Hugging Face 모델 선택하기

우리는 문서의 관련성을 평가하기 위해 사전 훈련된 모델을 사용할 것입니다. 예를 들어 distilbert-base-uncased 모델을 사용할 수 있습니다. 이 모델은 변형된 BERT 모델입니다. 문서의 임베딩을 얻고 두 문서 간의 유사성을 측정하는 데 사용됩니다.

5. 코드 설명

이제 위에서 설명한 내용을 바탕으로 Python 코드를 작성하겠습니다. 코드의 단계별 설명을 포함하겠습니다.

5.1 필요한 라이브러리 임포트


import wikipediaapi
from transformers import AutoTokenizer, AutoModel
import torch
        

5.2 모델과 토크나이저 준비

이제 변환기를 사용하여 모델과 토크나이저를 초기화합니다.


# Hugging Face 모델과 토크나이저 초기화
model_name = 'distilbert-base-uncased'
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModel.from_pretrained(model_name)
        

5.3 위키피디아 검색 함수 구현

위키피디아에서 키워드를 검색하고, 관련 문서를 반환하는 함수를 정의합니다.


def search_wikipedia(keyword):
    wiki_wiki = wikipediaapi.Wikipedia('en')
    page = wiki_wiki.page(keyword)
    if page.exists():
        return page.text
    else:
        return None
        

5.4 문서의 임베딩 생성

검색된 문서의 임베딩을 생성하는 함수를 만듭니다.


def create_embedding(text):
    inputs = tokenizer(text, return_tensors='pt', truncation=True, padding=True, max_length=512)
    with torch.no_grad():
        outputs = model(**inputs)
    return outputs['last_hidden_state'].mean(dim=1)
        

5.5 키워드 관련 문서 찾기

주어진 키워드에 대해 관련 정보와 비슷한 페이지를 찾기 위해 생성한 임베딩을 활용합니다.


keyword = "Deep Learning"
wiki_text = search_wikipedia(keyword)

if wiki_text:
    embedding = create_embedding(wiki_text)
    print("제목:", keyword)
    print("내용의 임베딩:", embedding)
else:
    print("해당 키워드에 대한 위키피디아 페이지를 찾을 수 없습니다.")
        

6. 코드 실행 및 결과

위의 코드를 실행하면 주어진 키워드에 대한 위키피디아 문서의 내용과 임베딩을 얻을 수 있습니다. 이러한 임베딩은 나중에 다른 문서와의 유사도를 계산하는 데 사용될 수 있습니다.

7. 유사도 계산하기

추가적으로 다른 문서들과의 유사도를 계산하여, 입력한 키워드와 관련된 다른 주제들도 탐색할 수 있습니다. 임베딩 간의 코사인 유사도를 계산하여 유사한 문서들을 검색해 봅시다.


from sklearn.metrics.pairwise import cosine_similarity

# 임베딩을 두 개 생성한 후, 유사도를 계산합니다
other_keyword = "Machine Learning"
other_wiki_text = search_wikipedia(other_keyword)

if other_wiki_text:
    other_embedding = create_embedding(other_wiki_text)
    similarity_score = cosine_similarity(embedding.numpy(), other_embedding.numpy())
    print(f"{keyword}와 {other_keyword}의 유사도:", similarity_score[0][0])
else:
    print("해당 키워드에 대한 위키피디아 페이지를 찾을 수 없습니다.")
        

8. 결론

이 강좌에서는 Hugging Face의 Transformers 라이브러리와 위키피디아 API를 사용하여 특정 키워드에 대한 관련 정보를 검색하고, 해당 내용의 임베딩을 생성하여 다른 문서와의 유사도를 평가하는 방법을 알아보았습니다. 이는 검색 엔진 구축, 추천 시스템, 정보 추출 등 다양한 분야에 응용될 수 있습니다.

9. 다음 단계

이제 이 기초적인 구조를 바탕으로 추가 기능을 구현해 보십시오. 예를 들어, 여러 문서 검색 및 클러스터링, 또는 사용자 인터페이스를 만들어 사용자들이 쉽게 키워드를 검색할 수 있도록 하는 방법이 있습니다. Hugging Face의 다양한 모델과 위키피디아 API를 활용하여 더 많은 기능을 구현해 보세요.

10. 참고 자료

Hugging Face Transformers Documentation
Wikipedia API Documentation

허깅페이스 트렌스포머 활용강좌, 인코딩 및 디코딩

딥러닝 분야에서 자연어 처리(NLP)는 특히 주목받고 있는 영역 중 하나입니다. 2018년 공개된 Hugging Face의 Transformers 라이브러리는 NLP 모델을 손쉽게 사용할 수 있도록 도와주는 강력한 도구입니다. 본 강좌에서는 Hugging Face Transformers 라이브러리를 활용하여 인코딩과 디코딩을 수행하는 방법에 대해 알아보겠습니다.

1. Transformers 라이브러리 소개

Transformers 라이브러리는 BERT, GPT-2, T5와 같은 다양한 신경망 아키텍처를 지원합니다. 이 라이브러리를 통해 복잡한 NLP 모델을 쉽게 구현할 수 있으며, 개인적인 연구나 상업적인 프로젝트 모두에서 활용됩니다.

1.1 설치

Transformers 라이브러리를 설치하기 위해서는 pip를 이용합니다. 다음 명령어를 실행해주세요.

pip install transformers

2. 텍스트 인코딩

인코딩은 텍스트 데이터를 모델이 이해할 수 있는 형식으로 변환하는 과정입니다. Transformers 라이브러리에서는 토크나이저를 사용하여 텍스트를 인코딩합니다. 다음은 BERT 모델의 토크나이저를 사용하여 텍스트를 인코딩하는 예제입니다.

2.1 BERT 토크나이저 예제

아래 코드는 BERT 모델의 기본 토크나이저를 사용하여 입력 문장을 인코딩하는 과정을 보여줍니다.

from transformers import BertTokenizer

# BERT 모델의 토크나이저 초기화
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')

# 인코딩할 텍스트
text = "Hello, how are you?"

# 텍스트 인코딩
encoded_input = tokenizer(text, return_tensors='pt')

# 결과 출력
print(encoded_input)

위 코드에서 BertTokenizer.from_pretrained() 메서드를 사용하여 사전학습된 BERT 토크나이저를 로드합니다. 그리고 tokenizer() 메서드를 통해 입력 문장을 인코딩합니다. return_tensors='pt'는 텐서플로우 대신 파이토치 텐서를 반환하도록 합니다.

2.2 인코딩 결과 설명

인코딩 결과는 다음과 같은 구조를 가집니다:

  • input_ids: 각 단어를 숫자로 인코딩한 리스트.
  • token_type_ids: 문장의 구분을 위한 ID 리스트.
  • attention_mask: 패딩을 제외한 실제 토큰을 나타내는 마스크.

2.3 인코딩 결과 출력

input_ids = encoded_input['input_ids']
token_type_ids = encoded_input['token_type_ids']
attention_mask = encoded_input['attention_mask']

print("Input IDs:", input_ids)
print("Token Type IDs:", token_type_ids)
print("Attention Mask:", attention_mask)

인코딩 결과를 출력하면 각 리스트의 내용을 확인할 수 있습니다. 이는 모델이 입력을 처리하는 데 필요한 정보를 제공합니다.

3. 텍스트 디코딩

디코딩은 모델의 출력 결과를 인간이 이해할 수 있는 형태로 변환하는 과정입니다. Hugging Face의 Transformers 라이브러리에서는 디코딩 기능도 간단하게 사용할 수 있습니다.

3.1 간단한 디코딩 예제

아래 코드는 모델의 예측 결과를 디코딩하는 과정을 보여줍니다.

from transformers import BertForSequenceClassification
import torch

# BERT 모델 로드
model = BertForSequenceClassification.from_pretrained('bert-base-uncased')

# 예측을 위한 모델 작동
with torch.no_grad():
    outputs = model(**encoded_input)

# 결과에서 logits 추출
logits = outputs.logits

# logits를 확률로 변환
probabilities = torch.nn.functional.softmax(logits, dim=-1)

# 디코딩 수행
predicted_class = probabilities.argmax().item()
print("Predicted Class:", predicted_class)

위 코드에서는 BERT 모델을 사용하여 인코딩된 입력에 대한 예측을 수행합니다. 얻어진 logits를 소프트맥스 함수를 통해 확률값으로 변환하고, 가장 높은 확률을 가진 클래스를 예측합니다.

3.2 다중 클래스 분류

자연어 처리에서 다중 클래스 분류 문제도 자주 발생합니다. 다음은 다중 클래스 분류 지표에 대해 설명합니다.

  • 정확도(Accuracy): 정답으로 분류된 샘플의 비율.
  • 정밀도(Precision): 예측한 양성 중 실제 양성의 비율.
  • 재현율(Recall): 실제 양성 중 예측한 양성의 비율.
  • F1 Score: 정밀도와 재현율의 조화 평균.

이러한 지표는 모델의 효과성을 평가하는 데 유용합니다.

4. 결론

Transformers 라이브러리를 활용하여 NLP 모델을 손쉽게 인코딩하고 디코딩하는 방법을 알아보았습니다. 본 강좌에서 제공한 예제를 통해 모델을 활용한 다양한 작업을 수행할 수 있습니다. 앞으로의 연구나 프로젝트에 많은 도움이 되길 바랍니다.

5. 참고 자료

허깅페이스 트렌스포머 활용강좌, 소스 언어 M2M100 토크나이징

딥러닝의 발전과 함께 자연어 처리(NLP)는 큰 변화를 겪었습니다. 특히, 허깅페이스(Hugging Face)의 트랜스포머(transformers) 라이브러리는 NLP 작업을 위한 강력한 도구로 자리 잡았습니다. 이 강좌에서는 M2M100 모델을 활용한 다국어 번역 및 토크나이징 과정을 소개합니다.

M2M100 모델 개요

M2M100(Multilingual To Multilingual Translation) 모델은 100개 이상의 언어 간의 직접 번역을 지원하는 다국어 모델입니다. 기존의 번역 모델은 소스 언어에서 중간 언어(예: 영어)로 번역한 후 대상 언어로 변환하는 간접 번역 방식을 사용했습니다. M2M100은 이러한 한계를 극복하기 위해 다국어 간 변환을 가능하게 하여 다양한 언어 쌍 간의 번역 효율성을 크게 향상시킵니다.

토크나이징이란?

토크나이징(tokenization)은 입력된 텍스트를 더 작은 단위인 토큰(token)으로 나누는 과정입니다. 리스트 형식으로 변환한 후, 각각의 토큰에 대해 고유한 인덱스를 부여하게 됩니다. 토크나이징은 NLP에서는 필수적인 과정으로, 텍스트 데이터를 모델에 입력하기 전에 필요합니다.

환경 설정

강좌를 진행하기 전에 필요한 라이브러리를 설치해야 합니다. 특히 transformerstorch를 설치할 것입니다. 아래의 명령어로 설치할 수 있습니다:

        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와 딥러닝에 대한 많은 관심과 연구가 지속되기를 바랍니다.

참고 자료