허깅페이스 트렌스포머 활용강좌, 전처리 후 이미지 확인

딥러닝 분야에서는 데이터 전처리가 매우 중요합니다. 특히 이미지 처리와 같이 고차원 데이터를 다룰 때는 더욱 그렇습니다. 본 강좌에서는 허깅페이스(Hugging Face)에서 제공하는 트랜스포머 모델을 활용하는 방법을 자세히 설명하고, 이미지 전처리 과정을 통해 결과를 직접 확인하는 방법을 제시하겠습니다. 이번 강좌에서는 이미지 분류 문제를 다루며, 각 단계별로 필요한 파이썬 코드와 함께 설명하도록 하겠습니다.

1. 허깅페이스란?

허깅페이스는 자연어 처리(NLP) 및 다른 머신러닝 작업을 위한 라이브러리를 제공합니다. 특히, 트랜스포머 모델의 구현 및 사전 훈련된 다양한 모델을 제공하여, 연구자나 개발자가 모델을 쉽게 활용할 수 있도록 돕고 있습니다.

2. 전처리 과정의 중요성

데이터 전처리는 모델의 성능에 유의미한 영향을 미칩니다. 이미지 데이터의 경우, 다음 작업이 포함됩니다:

  • 크기 조정: 다양한 크기의 이미지를 동일한 크기로 일관되게 맞춥니다.
  • 정규화: 픽셀 값을 0~1 범위로 조정합니다.
  • 데이터 증강: 모델이 더 다양한 데이터를 학습할 수 있도록 합니다.

3. 환경 설정

이 강좌를 위해 다음 라이브러리를 설치해야 합니다. 조기 설치가 필요하면 아래 코드를 실행하세요.

pip install transformers torch torchvision

4. 이미지 불러오기 및 전처리

이제 이미지를 불러오고 전처리하는 코드를 작성해보겠습니다. 아래 코드는 PIL (Python Imaging Library)을 사용하여 이미지를 처리합니다.

from PIL import Image
import torchvision.transforms as transforms
import matplotlib.pyplot as plt

# 이미지 불러오기
image_path = 'your_image_path.jpg'  # 이미지 경로를 지정해주세요
image = Image.open(image_path)

# 전처리 작업 정의
transform = transforms.Compose([
    transforms.Resize((256, 256)),        # 크기 조정
    transforms.ToTensor(),                 # 텐서로 변환
    transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))  # 정규화
])

# 전처리 적용
processed_image = transform(image)

# 변환된 이미지를 확인
plt.imshow(processed_image.permute(1, 2, 0) / 2 + 0.5)  # 다시 이미지로 변환하여 시각화
plt.axis('off')
plt.show()

5. 전처리 설명

위 코드에서 사용된 각 전처리 단계는 다음과 같은 역할을 합니다:

  • transforms.Resize((256, 256)): 이미지를 256×256 크기로 조정합니다. 이는 모델 입력 크기에 맞추기 위한 것입니다.
  • transforms.ToTensor(): 이미지를 텐서 형태로 변환합니다. 이는 PyTorch 모델이 데이터를 처리하는 방식과 일치합니다.
  • transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)): 이미지의 각 채널을 정규화합니다. 이는 학습 속도를 높이고, 모델의 수렴을 도와줍니다.

6. 허깅페이스 트랜스포머 모델 사용하기

허깅페이스 라이브러리를 통해 사전 훈련된 트랜스포머 모델을 쉽게 사용할 수 있습니다. 다음 단계에서는 이미지와 텍스트를 동시에 사용하는 멀티모달 모델에 대해 살펴보겠습니다.

from transformers import ViTForImageClassification, ViTFeatureExtractor
import torch

# 모델과 특징 추출기 불러오기
model_name = 'google/vit-base-patch16-224-in21k'
model = ViTForImageClassification.from_pretrained(model_name)
extractor = ViTFeatureExtractor.from_pretrained(model_name)

# 이미지 특징 추출
inputs = extractor(images=image, return_tensors="pt")

# 추론
with torch.no_grad():
    outputs = model(**inputs)
    logits = outputs.logits
    predicted_class_idx = logits.argmax(-1).item()

print(f'Predicted class index: {predicted_class_idx}

7. 결과 확인하기

위 코드에서는 ViT (Vision Transformer) 모델을 사용하여 이미지를 분류했습니다. 모델의 출력을 통해 예측된 클래스 인덱스를 확인할 수 있습니다. 예측된 클래스 인덱스는 데이터셋에 맞추어진 라벨로 변환하여 해석할 수 있습니다.

from transformers import AutoTokenizer

# 분류 라벨 로딩
labels = AutoTokenizer.from_pretrained(model_name).tokenizer  # 또는 자신만의 리스트를 정의
predicted_label = labels[predicted_class_idx]

print(f'Predicted label: {predicted_label}

8. 종합 및 결론

이번 강좌에서는 허깅페이스 트랜스포머를 활용하여 이미지 전처리 및 분류 작업을 수행하는 방법에 대해 알아보았습니다. 데이터 전처리는 좋은 모델을 만드는 데 필수적인 과정이며, 제공한 코드를 통해 자신의 데이터셋에 맞춰 확장할 수 있습니다. 허깅페이스 라이브러리를 활용하면 다양한 데이터와 모델을 쉽게 활용할 수 있고, 이를 통해 많은 연구와 개발이 가능해집니다.

여러분이 이 강좌에서 습득한 지식이 깊은 이해로 이어지길 바랍니다! 필요할 경우 코드를 자신에 맞게 조정하고, 다양한 실험을 시도해 보세요.

9. 참고 자료

허깅페이스 트렌스포머 활용강좌, 재현율, 정밀도, 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 기능을 추가해보세요.

참고 자료

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

이 강좌에서는 허깅페이스의 트렌스포머(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. 참고 자료

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

딥러닝 분야에서 자연어 처리(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. 참고 자료

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

딥러닝과 자연어 처리(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