기타/관심(●'◡'●)

한국어 특화 임베딩 모델(snunlp/KR-SBERT-V40K-klueNLI-augSTS)

sesam 2025. 9. 11. 09:53
728x90

snunlp/KR-SBERT-V40K-klueNLI-augSTS

 

개요

  • 모델명: snunlp/KR-SBERT-V40K-klueNLI-augSTS
  • 한국어 특화 Sentence-BERT (SBERT) 계열의 문장 임베딩 모델로, 문장 또는 단락을 768차원 dense 벡터로 표현합니다 Hugging Face+1.
  • KLUE-NLI(한국어 자연어 추론 데이터셋)와 KorSTS 확장 데이터를 활용해 SBERT로 fine-tuning되었으며, KorSTS의 augmentation 전략도 적용되어 성능이 향상되었습니다 GitHub.

주요 특징

  • 문장 의미 유사도클러스터링, 시맨틱 검색 같은 작업에 적합한 벡터 표현 생성 가능 Hugging Face+1.
  • KR-SBERT-V40K 계열 중 정확도가 가장 높음:
    • KR-SBERT-Medium-NLI-STS: 0.8400
    • KR-SBERT-V40K-NLI-STS: 0.8400
    • KR-SBERT-V40K-NLI-augSTS: 0.8511
    • KR-SBERT-V40K-klueNLI-augSTS: 0.8628 GitHub.

 

사용법

Sentence-Transformers 라이브러리 이용:

from sentence_transformers import SentenceTransformer
model = SentenceTransformer('snunlp/KR-SBERT-V40K-klueNLI-augSTS')
sentences = ["문장 A", "문장 B"]
embeddings = model.encode(sentences, convert_to_tensor=True)

 

 

이를 통해 바로 임베딩 벡터를 얻고, util.pytorch_cos_sim 등을 이용해 유사도 계산도 가능합니다 아빠는 개발자+1.

Hugging Face Transformers로 직접 사용:

from transformers import AutoTokenizer, AutoModel
import torch

def mean_pooling(model_output, attention_mask):
    token_embeddings = model_output[0]
    input_mask_expanded = attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float()
    return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9)

tokenizer = AutoTokenizer.from_pretrained('snunlp/KR-SBERT-V40K-klueNLI-augSTS')
model = AutoModel.from_pretrained('snunlp/KR-SBERT-V40K-klueNLI-augSTS')

sentences = ["예시 문장", "다른 문장"]
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')
with torch.no_grad():
    model_output = model(**encoded_input)
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
print(sentence_embeddings)

 

이 방법은 Sentence-Transformers 없이도 활용 가능합니다 Hugging Face.


활용 예시

  • 유사 문장 검색: 문장 임베딩 간의 cosine similarity를 활용
  • 클러스터링: 벡터 기반으로 문장 클러스터링 수행
  • 문서 분류: 임베딩을 입력 특성으로 활용하여 분류 모델 구축
  • 블로그 사용 예시에서는 "오뚜기참기름"과 "오뜌기참기름" 문장 간 코사인 유사도를 비교한 사례도 소개되어 있어요 아빠는 개발자+1.

 

요약 표

항목 설명
특화 언어 한국어
벡터 차원 768차원
fine-tuning 데이터 KLUE-NLI, KorSTS (Augmented)
대표 성능 지표 정확도 0.8628
사용 가능 라이브러리 Sentence-Transformers, Hugging Face Transformers
적용 분야 문장 유사도, 클러스터링, 검색, 분류 등

 

728x90