Hugging Face에 대해 알아보자 (1) API 등록, 감정 분석, 고유명사 식별 분석

2025. 5. 16. 15:03·IT, Computer

썸네일

서론

이번에는 hugging face를 사용하는 방법에 대해 간단히 알아보고자 한다. 포스팅에 앞서 https://huggingface.co/ 에 회원가입 및 로그인을 해야된다. API를 사용하기 때문이다. API 넣는 방법은 포스팅에서 다루려고한다. 일단 로그인만 하셔요. 아 그리고 이번 포스팅은 google colab을 사용할 것이니 참고 요망. GPU를 사용해야 된다.


HuggingFace API 사용 방법

로그인을 했으면, 우측 상단에 있는 내 프로필 로고를 누른 다음 setting에 들어간다. 이후 Access Tokens에 들어가 우측 상단에 있는 +Create new token을 누른다. 못 찾겠다면  https://huggingface.co/settings/tokens 에 들어가면 된다. 그럼 토큰 타입에 Fine-grained, Read, Write가 있을텐데, 이번 포스팅에서는 Write를 사용한다. 그러니까 Write 클릭하고, 토큰 네임 마음대로 한다음에 아래에 있는 Create token을 누른다. 그럼 hf_로 시작하는 api키가 나올텐데 그걸 복사를 한다. 불안하면 따로 메모장에 붙여넣으면 된다. 아님 걍 화면 띄워놓고 새창에서 코랩으로 들어간다. 코랩 우측 메뉴바에 열쇠모양이 있는데, 그거 클릭하면 +새 보안 비밀 추가 라는 말이 나온다. 그럼 이름과 값을 적는 칸이 나오는데, 일단 값에 아까 복사했던 api키를 붙여넣고, 이름은 본인 마음대로 해도 되지만 난 HF_TOKEN이라고 적었다. 나랑 다르게 했다면, 이따가 HF_TOKEN 적는곳에 님들이 적은 이름 넣으면 됩니다. 그 다음에 일단 Notebook access를 클릭해서 활성화 시킨다.


Transformers package 설치 및 import

우선 코랩 설정은 GPU를 사용할것이라 런타임 유형을 바꿔야된다. 우측상단에 'RAM,디스크'라고 적혀진게 나오는데 그 옆에 아래로 가는 화살표를 누르면, 런타임 유형 변경이 있다. 그거 클릭해서 GPU T4로 바꾼다. 이건 무료임. 걍 답답할뿐 돌아가긴하니까 구글이 답답하면 돈 더 내라고 한다. 이후 아래(첫번째 코드 블록)와 같이 선언해서 transformers package를 설치한 다음, 뒤에 코드블록에 있는 것들을 import한다. 그리고 세번째 코드블록을 실행한다. HF_TOKEN은 바로 위에서 말했던 API이름이니까 님들 설정한대로 수정하세요.

!pip install -q transformers datasets diffusers
import torch
from google.colab import userdata
from huggingface_hub import login
from transformers import pipeline
from diffusers import DiffusionPipeline
from datasets import load_dataset
import soundfile as sf
from IPython.display import Audio
hf_token = userdata.get('HF_TOKEN')
login(hf_token, add_to_git_credential=True)

감정 분석, Sentiment Analysis

huggingFace에는 텍스트 감정 분석(Sentiment Analysis) 기능이 있다. 다음으로 나오는 짧은 코드를 선언하면 바로 해당 텍스트의 긍정/부정 여부가 나온다.

classifier = pipeline("sentiment-analysis", device="cuda")
result = classifier("와 진짜 빠르다 미쳤네!")
print(result)

근데 이건 영어로 하는 게 더 잘나올거임. 아래와 같이 한국어로 하니까 'POSITIVE', 'score':  0.9904166460037231가 나왔고, 영여로 하니까 'POSITIVE', 'score': 0.9990671277046204가 나온걸 보면 말이다. 지금 쓰는건 영어버전이고, multilingual 지원하는 게 있는데 그거쓰면 한국어도 잘 나오긴 한다.


Named Entitiy Recognition

Named Entitiy Recognition 기능에 대해 알아보자. 감정분석은 직관적으로 알겠는데, Named Entitiy Recognition가 뭘까? 바로 고유명사를 식별(분류)하는 기능이다. 보통 줄여서 ner이라고 한다. 이걸 사용하려면, 아래와 같이 선언하면 된다. 함수를 선언하는건 sentiment analysis와 굉장히 흡사한걸 볼 수 있다. 다만 중간에 grouped_entities가 있는데, 안 넣어도 되긴함(default가 False). grouped_entities는 연속된 토큰으로 나뉜 엔터티들을 하나로 할 것인지 설정하는 옵션이다.  이게 왜 필요하냐면, 하나의 단어라도 토큰이 쪼개지는 경우가 있다. 근데 고유명사면? 쪼개지면 안되잖슴~. 그래서 이 값을 True로 해서 하나로 뭉뚱그려달라는 parameter다. 예를들어, 하나로마트면 default 값으로 설정시 하나로/마트로 쪼개질것인데, 위에처럼 True로 해버리면 하나로마트가 된다. 갑자기 왜 하나로마트가 떠올랐는지는 모르겠다.

ner = pipeline("ner", grouped_entities=True, device="cuda")
result = ner("Barack Obama was the 44th president of the United States.")
print(result)

아무튼 이렇게 선언하면, [{'entity_group': 'PER', 'score': np.float32(0.99918306), 'word': 'Barack Obama', 'start': 0, 'end': 12}, {'entity_group': 'LOC', 'score': np.float32(0.9986908), 'word': 'United States', 'start': 43, 'end': 56}] 이렇게 나온다. 이 결과에서 'PER'는 person의 줄임말로 사람이라는 의미다. 그리고 LOC는 Location으로 지역을 의미한다. 참고로 같은 문장으로 grouped_entities 값을 지우면 아래와 같이 하나의 단어가 'Barack','Obama', 'United', 'States'. 이렇게 쪼개져서 나온다. 


끝으로

이번 포스팅에서 다 적으려고 했는데 왤케 길어졌나 모르겠다. 다음 포스팅에서는 Question and answering 기능과 Text Summarization, translation 기능에 대해 알아보도록 하겠다. 뭔가 금방 끝나면 generation도 할거같은데 아마 그건 다다음 포스팅일듯. 다음 포스팅에서 봅시다.

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

Hugging Face에 대해 알아보자 (2) Question and Answering, Text Summarization, Translation 기능  (0) 2025.05.18
[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
[GCP] GCP 튜토리얼을 무료로 제공하는 사이트가 있다? (1)  (0) 2025.05.06
'IT, Computer' 카테고리의 다른 글
  • Hugging Face에 대해 알아보자 (2) Question and Answering, Text Summarization, Translation 기능
  • [GCP] 모델 평가 (Model Evaluation) (4)
  • [GCP] 생성형 AI: 뉘앙스 이해 및 MLOps 적용 (3)
  • [GCP] MLOps framework for 생성형 AI (2)
QUISEOL
QUISEOL
제품 사용기, 프로그래밍 언어 공부 블로그 입니다.
  • QUISEOL
    QUISEOL
    QUISEOL
    • 분류 전체보기 (102)
      • IT, Computer (53)
      • 그 외 경험기 (49)
  • 블로그 메뉴

    • 링크

      • insta
    • 공지사항

    • 인기 글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    QUISEOL
    Hugging Face에 대해 알아보자 (1) API 등록, 감정 분석, 고유명사 식별 분석
    상단으로

    티스토리툴바