Investment-Assistant

Sentence Transformers로 한국어 모델 사용해보기 [15]

HeyTeddy 2024. 12. 13. 06:35
반응형

Sentence Transformers란?

Sentence Transformers(SBert)는 문장과 문서를 고차원의 임베딩 벡터로 변환하여 NLP 작업에 활용할 수 있는 강력한 라이브러리입니다. 특히, 다국어를 지원하는 모델을 제공하므로 한국어 NLP 태스크에서도 유용하게 사용할 수 있습니다.

SBert 공식 웹사이트에서는 다양한 Pretrained Models를 제공합니다. 이번 글에서는 한국어 및 다국어 모델을 사용하는 방법을 다룹니다.

다국어 모델: distiluse-base-multilingual-cased-v1

distiluse-base-multilingual-cased-v1은 다국어를 지원하는 Sentence Transformers 모델 중 하나로, 50개 이상의 언어를 지원합니다. v1이 v2보다 성능이 더 우수하다고 평가되므로 이 모델을 추천합니다.

 

실습

# 라이브러리 임포트
from sentence_transformers import SentenceTransformer

# 1. 미리 학습된 다국어 모델 로드
model = SentenceTransformer("distiluse-base-multilingual-cased-v1")

# 2. 임베딩할 문장 정의
sentences = ["나는 학교에서 밥을 먹었다."]

# 3. 문장을 임베딩 벡터로 변환
embeddings = model.encode(sentences)
print("Embedding Shape:", embeddings.shape)
# 출력: (1, 512), 1개의 문장이 512차원의 벡터로 변환됨

위 코드에서는 입력된 문장이 512차원의 벡터로 변환되며, 이 벡터를 사용해 의미적 유사성을 계산하거나 검색 작업에 활용할 수 있습니다.

Hugging Face의 한국어 모델 활용하기

Sentence Transformers 외에도, Hugging Face는 다양한 한국어 모델을 제공합니다. Hugging Face의 모델은 문장 토크나이징, 한국어 전처리 및 다양한 NLP 태스크에 적합합니다.

  1. Hugging Face 웹사이트 방문: https://huggingface.co/
  2. 'KOBERT' 검색:
    다양한 한국어 모델 중 kobert-base-v1을 선택합니다.

실습

from transformers import AutoTokenizer, AutoModel

# 1. KOBERT 모델 로드
tokenizer = AutoTokenizer.from_pretrained("skt/kobert-base-v1")
model = AutoModel.from_pretrained("skt/kobert-base-v1")

# 2. 입력 문장 토크나이징
sentence = "나는 학교에서 밥을 먹었다."
inputs = tokenizer(sentence, return_tensors="pt")

# 3. 모델 실행
outputs = model(**inputs)
print("Hidden States Shape:", outputs.last_hidden_state.shape)
# 출력: torch.Size([1, 토큰 수, 히든 레이어 크기])

주요 차이점: Sentence Transformers vs Hugging Face

특징Sentence TransformersHugging Face

주요 용도 문장 임베딩, 유사도 계산, 검색 토크나이징, 텍스트 생성, 번역 등 다양한 NLP
모델 구조 Pooling을 통해 문장을 하나의 벡터로 변환 각 토큰에 대한 임베딩 제공
다국어 모델 추천 distiluse-base-multilingual-cased-v1 skt/kobert-base-v1
한국어 지원 여부 지원 강력한 지원

결론

Sentence Transformers와 Hugging Face는 각각의 강점이 있으며, 프로젝트 요구사항에 따라 적합한 도구를 선택하는 것이 중요합니다.

  • 문장 유사도 계산과 검색 작업에는 Sentence Transformers가 유리합니다.
  • 세밀한 한국어 전처리 및 토큰 단위 작업에는 Hugging Face가 적합합니다.

더 많은 정보를 얻고 싶다면 아래 링크를 참고하세요:

반응형