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

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