🚀 韓語句子嵌入項目
🍭 這是一個韓語句子嵌入的倉庫。你可以直接下載預訓練模型並進行推理,同時也提供了可供個人訓練模型的環境。
🚀 快速開始
以下是一個簡單的使用示例,展示瞭如何使用預訓練模型計算句子之間的相似度得分:
import torch
from transformers import AutoModel, AutoTokenizer
def cal_score(a, b):
if len(a.shape) == 1: a = a.unsqueeze(0)
if len(b.shape) == 1: b = b.unsqueeze(0)
a_norm = a / a.norm(dim=1)[:, None]
b_norm = b / b.norm(dim=1)[:, None]
return torch.mm(a_norm, b_norm.transpose(0, 1)) * 100
model = AutoModel.from_pretrained('BM-K/KoSimCSE-roberta')
tokenizer = AutoTokenizer.from_pretrained('BM-K/KoSimCSE-roberta')
sentences = ['치타가 들판을 가로 질러 먹이를 쫓는다.',
'치타 한 마리가 먹이 뒤에서 달리고 있다.',
'원숭이 한 마리가 드럼을 연주한다.']
inputs = tokenizer(sentences, padding=True, truncation=True, return_tensors="pt")
embeddings, _ = model(**inputs, return_dict=False)
score01 = cal_score(embeddings[0][0], embeddings[1][0])
score02 = cal_score(embeddings[0][0], embeddings[2][0])
💻 使用示例
基礎用法
import torch
from transformers import AutoModel, AutoTokenizer
def cal_score(a, b):
if len(a.shape) == 1: a = a.unsqueeze(0)
if len(b.shape) == 1: b = b.unsqueeze(0)
a_norm = a / a.norm(dim=1)[:, None]
b_norm = b / b.norm(dim=1)[:, None]
return torch.mm(a_norm, b_norm.transpose(0, 1)) * 100
model = AutoModel.from_pretrained('BM-K/KoSimCSE-roberta')
tokenizer = AutoTokenizer.from_pretrained('BM-K/KoSimCSE-roberta')
sentences = ['치타가 들판을 가로 질러 먹이를 쫓는다.',
'치타 한 마리가 먹이 뒤에서 달리고 있다.',
'원숭이 한 마리가 드럼을 연주한다.']
inputs = tokenizer(sentences, padding=True, truncation=True, return_tensors="pt")
embeddings, _ = model(**inputs, return_dict=False)
score01 = cal_score(embeddings[0][0], embeddings[1][0])
score02 = cal_score(embeddings[0][0], embeddings[2][0])
高級用法
目前文檔未提供高級用法示例,你可以根據基礎用法進行拓展。
📊 性能表現
模型 |
平均分 |
餘弦皮爾遜相關係數 |
餘弦斯皮爾曼相關係數 |
歐幾里得皮爾遜相關係數 |
歐幾里得斯皮爾曼相關係數 |
曼哈頓皮爾遜相關係數 |
曼哈頓斯皮爾曼相關係數 |
點積皮爾遜相關係數 |
點積斯皮爾曼相關係數 |
KoSBERT†SKT |
77.40 |
78.81 |
78.47 |
77.68 |
77.78 |
77.71 |
77.83 |
75.75 |
75.22 |
KoSBERT |
80.39 |
82.13 |
82.25 |
80.67 |
80.75 |
80.69 |
80.78 |
77.96 |
77.90 |
KoSRoBERTa |
81.64 |
81.20 |
82.20 |
81.79 |
82.34 |
81.59 |
82.20 |
80.62 |
81.25 |
|
|
|
|
|
|
|
|
|
|
KoSentenceBART |
77.14 |
79.71 |
78.74 |
78.42 |
78.02 |
78.40 |
78.00 |
74.24 |
72.15 |
KoSentenceT5 |
77.83 |
80.87 |
79.74 |
80.24 |
79.36 |
80.19 |
79.27 |
72.81 |
70.17 |
|
|
|
|
|
|
|
|
|
|
KoSimCSE - BERT†SKT |
81.32 |
82.12 |
82.56 |
81.84 |
81.63 |
81.99 |
81.74 |
79.55 |
79.19 |
KoSimCSE - BERT |
83.37 |
83.22 |
83.58 |
83.24 |
83.60 |
83.15 |
83.54 |
83.13 |
83.49 |
KoSimCSE - RoBERTa |
83.65 |
83.60 |
83.77 |
83.54 |
83.76 |
83.55 |
83.77 |
83.55 |
83.64 |
|
|
|
|
|
|
|
|
|
|
KoSimCSE - BERT - multitask |
85.71 |
85.29 |
86.02 |
85.63 |
86.01 |
85.57 |
85.97 |
85.26 |
85.93 |
KoSimCSE - RoBERTa - multitask |
85.77 |
85.08 |
86.12 |
85.84 |
86.12 |
85.83 |
86.12 |
85.03 |
85.99 |
項目鏈接:https://github.com/BM-K/Sentence-Embedding-is-all-you-need