아빠는 개발자

[NLP] upskyy 본문

NLP/HuggingFace

[NLP] upskyy

father6019 2025. 5. 1. 11:49
728x90
반응형

upskyy/bge-m3-korean 이게 가장 좋다고 하니 테스트 해보잣.

아까와 동일한 단어 ..

 

아까라고 한다면 snunlp 

import torch
from sentence_transformers import SentenceTransformer, models, util

def load_sentence_model(model_name="upskyy/bge-m3-korean"):
    # GPU 사용 가능 시
    device = "cuda" if torch.cuda.is_available() else "cpu"
    print(f"Using device: {device}")

    # 1) Transformer 모듈 생성: tokenizer_args로 use_fast=False 강제
    word_embedding_model = models.Transformer(
        model_name,
        tokenizer_args={"use_fast": False}
    )
    # 2) Pooling 모듈 (CLS 토큰 또는 mean pooling)
    pooling_model = models.Pooling(
        word_embedding_model.get_word_embedding_dimension(),
        pooling_mode_mean_tokens=True,
        pooling_mode_cls_token=False,
        pooling_mode_max_tokens=False
    )
    # 3) 위 두 모듈을 합쳐서 SentenceTransformer 인스턴스 생성
    model = SentenceTransformer(
        modules=[word_embedding_model, pooling_model],
        device=device
    )
    return model

if __name__ == "__main__":
    model = load_sentence_model("upskyy/bge-m3-korean")
    sentences = ["오뚜기참기름", "오뜌기참기름"]
    # 유사도 계산
    embs = model.encode(sentences, convert_to_tensor=True)
    sim_score = util.pytorch_cos_sim(embs[0], embs[1])
    print(f"Similarity: {sim_score.item():.4f}")

 

"오뚜기참기름", "오뜌기참기름"

Similarity: 0.8893

 

from sentence_transformers import SentenceTransformer, util

# 1) 모델 로드
model = SentenceTransformer('upskyy/bge-m3-korean')

# 2) 비교할 문장 쌍
sentences = [
    "이 제품의 가격이 마음에 듭니다.",
    "이 상품 가격이 만족스러워요."
]

# 3) 임베딩 생성 (Tensor 반환)
embeddings = model.encode(sentences, convert_to_tensor=True)

# 4) 코사인 유사도 계산
cos_sim = util.cos_sim(embeddings[0], embeddings[1])
print(f"Cosine Similarity: {cos_sim.item():.4f}")
728x90
반응형

'NLP > HuggingFace' 카테고리의 다른 글

[NLP] jhgan vs snunlp vs upskyy  (0) 2025.05.05
[NLP] jhgan  (0) 2025.05.05
[NLP] snunlp  (0) 2025.05.01
[NLP] 가상환경 만들기 - conda  (0) 2025.05.01
[NLP] Hugging Face  (1) 2025.04.30