Hugging Face에 대해 알아보자 (2) Question and Answering, Text Summarization, Translation 기능

2025. 5. 18. 16:27·IT, Computer

썸네일

서론

지난 포스팅에서는 Hugging Face API 등록, 감정 분석, 고유명사 식별 분석을 하는 방법을 알아보았다. 이번 포스팅에서는 Hugging Face를 사용해 Question and Answering,Text Summarization, Translation을 해볼 예정이다. 혹시 세팅관련 궁금하다면 지난 포스팅을 참고하면 됨. 이번엔 바로 qna 기능으로 들어가겠다.

Question and Answering

Question and Answering은 말 그대로 질문을 하면 답변을 하는 기능이다. 하지만 ChatGPT를 생각하면 안 된다! 왜냐, 우리가 답을 낼 수 있는 문맥을 넣어줘야되기 때문. 그니까 질문이랑, 대답이 가능한 context를 줘야된다. 코드는 다음과 같이 적는다. 참고로 간단하게 사용하는게 기능을 사용하는것이 주목적이라, 이건 답변도 매우 간단하게 나옴. 복잡하게 하면, 복잡하게 나오겟죠? 아무튼 다음과 같이 선언하면, 답변으로 'answer': 'Barack Obama' 이렇게 띡 나옴.(앞에 score랑 인덱스가 같이 딸려나오긴 하지만)

qua = pipeline("question-answering", device="cuda")
result = qna(question="Who was the 44th president of the United States?", 
context="Barack Obama was the 44th president of the United States.")
print(result)

한국어로 해봤더니,  score가 너무 낮게 나온다. 대한민국 초대 대통령 누구냐고 묻고, 문맥에는 초대 대통령 이승만의 취임식은 언제언제 열렸다. 이렇게 적었는데 답도 안 맞고, score도 0.01286(참고로 위에 영어로 물어본 코드의 스코어는 0.989)이었다. 초대 대통령은 이승만이다.라고 안하고 취임식 날짜를 알려주는 식으로 살짝 꼬은 게 문제인가 했는데, 영어로 똑같이 context = "The inauguration of Barack Obama, the 44th president of the United States, was held in 2009." 하니까 그건 답 잘하더라... 스코어 0.983나옴. 한국어가 문제가 맞는거 같다. 영어를 메워야....


문장 요약 Text Summarization

말 그대로 문장을 요약해 주는 기능이다. 함수 선언할때 'summarization'이라고 적으면 됨. summarizer = pipeline("summarization", device = "cuda") 이렇게 말이다. 이후 아래 코드 블록처럼 선언하면 된다.  이 역시 한국어로 하면 안 됨. 아무래도 한국어 모델은 차후 따로 포스팅을 해야겠다.

text = """ 요약하고 싶은 내용
"""
summary = summarizer(text, max_length=50, min_length=25, do_sample=False)
print(summary[0]['summary_text'])

 

번역 (Translation)

번역 역시 직관적으로 이해 가능한 기능이다. 하지만 함수 선언은 'translation'을 적으면 안된다. translator = pipeline('translation_en_to_fr', device = 'cuda')라고 선언해야 한다.. 이후 아래 코드 블록과 같이 작성하면 된다. "오호라... 그럼 한국어도 되겠지?" 하고 fr를 kr로 바꿀생각을 할수도 있지만 안타깝게도 그렇게 하면 오류가 뜬다.

translator = pipeline("translation_en_to_fr", device="cuda")
result = translator("번역할 내용.")
print(result[0]['translation_text'])

"한류라더니 한국 아직 멀었네;" 하겠지만 사실 한국어 뿐 아니라 대다수 언어가 안 된다. 하지만 되게할 수 있다! https://huggingface.co/models?pipeline_tag=translation&sort=trending 여기로 들어가면, 다양한 모델들이 있는데, 내가 원하는 언어를 찾으면 되는 것이다. 필터 부분에 원하는 언어를 적으면 나오는데 한국어는 한줌단이다. 참고로 kr은 하나 떳음ㅋㅋ.

한국어 모델 찾기

여기서 한가지 모델을 골라, 아래와 같이 선언한다.

translator= pipeline("translation", model="unnatiag/korean-to-english-translator", device='cuda')
result = translator("한국어 모델 찾기 드럽게 힘드네")
print(result[0]['translation_text'])

결과는  It's hard to find the Korean model. 이렇게 나온다.


분류 classification

classification은 해당 문장을 줬을때 이 문장이 어느 레이블에 들어갈지 판단하는 것이다. 이는 다음과 같이 선언한다. 참고로 zero-shot-classification 같은 경우는 label을 따로 정한 뒤 문장이 어느 라벨에 해당하는지 판단하는 classification임. 저렇게 주제를 만들어도 되고, 긍정,부정인지 판단하는것도 가능하다. 이건 딱히 더 설명할게 없어서 여기까지만하고 생략하겠음. 

classifier = pipeline("zero-shot-classification", device="cuda")
result = classifier("Hugging Face's Transformers library is amazing!", 
candidate_labels=["technology", "sports", "politics"])

끝으로

뭔가 반복돼서 마지막 classification은 적기가 민망해졌다. 다음 포스팅에서는 generator에 대해 적을 거이다. text generator, image generator, voice generator가 있다. 다음 포스팅에서 봅시다.

'IT, Computer' 카테고리의 다른 글

Hugging Face에 대해 알아보자 (3) text generator, image generator, Audio generator  (0) 2025.05.19
Hugging Face에 대해 알아보자 (1) API 등록, 감정 분석, 고유명사 식별 분석  (1) 2025.05.16
[GCP] 모델 평가 (Model Evaluation) (4)  (0) 2025.05.10
[GCP] 생성형 AI: 뉘앙스 이해 및 MLOps 적용 (3)  (0) 2025.05.09
[GCP] MLOps framework for 생성형 AI (2)  (0) 2025.05.07
'IT, Computer' 카테고리의 다른 글
  • Hugging Face에 대해 알아보자 (3) text generator, image generator, Audio generator
  • Hugging Face에 대해 알아보자 (1) API 등록, 감정 분석, 고유명사 식별 분석
  • [GCP] 모델 평가 (Model Evaluation) (4)
  • [GCP] 생성형 AI: 뉘앙스 이해 및 MLOps 적용 (3)
QUISEOL
QUISEOL
제품 사용기, 프로그래밍 언어 공부 블로그 입니다.
  • QUISEOL
    QUISEOL
    QUISEOL
    • 분류 전체보기 (103)
      • IT, Computer (54)
      • 그 외 경험기 (49)
  • 블로그 메뉴

    • 링크

      • insta
    • 공지사항

    • 인기 글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    QUISEOL
    Hugging Face에 대해 알아보자 (2) Question and Answering, Text Summarization, Translation 기능
    상단으로

    티스토리툴바