🚀 smartmind/roberta-ko-small-tsdae
這是一個 sentence-transformers 模型,它可以將句子和段落映射到一個 256 維的密集向量空間,可用於聚類或語義搜索等任務。該模型是使用 TSDAE 進行預訓練的韓語 roberta 小型模型,可直接用於計算句子相似度,也可根據需求進行微調。
模型信息
屬性 |
詳情 |
模型類型 |
用於句子相似度計算的韓語 roberta 小型預訓練模型 |
訓練方法 |
使用 TSDAE 進行預訓練 |
許可證 |
MIT |
🚀 快速開始
安裝依賴
使用該模型前,你需要安裝相關依賴。如果你使用 sentence-transformers
,可以使用以下命令進行安裝:
pip install -U sentence-transformers
💻 使用示例
基礎用法(Sentence-Transformers)
安裝 sentence-transformers
後,你可以直接加載模型並使用:
from sentence_transformers import SentenceTransformer
sentences = ["This is an example sentence", "Each sentence is converted"]
model = SentenceTransformer('smartmind/roberta-ko-small-tsdae')
embeddings = model.encode(sentences)
print(embeddings)
高級用法(Sentence-Transformers)
以下是使用 sentence-transformers
計算多個句子相似度的示例:
from sentence_transformers import util
sentences = [
"대한민국의 수도는 서울입니다.",
"미국의 수도는 뉴욕이 아닙니다.",
"대한민국의 수도 요금은 저렴한 편입니다.",
"서울은 대한민국의 수도입니다.",
"오늘 서울은 하루종일 맑음",
]
paraphrase = util.paraphrase_mining(model, sentences)
for score, i, j in paraphrase:
print(f"{sentences[i]}\t\t{sentences[j]}\t\t{score:.4f}")
運行結果如下:
대한민국의 수도는 서울입니다. 서울은 대한민국의 수도입니다. 0.7616
대한민국의 수도는 서울입니다. 미국의 수도는 뉴욕이 아닙니다. 0.7031
대한민국의 수도는 서울입니다. 대한민국의 수도 요금은 저렴한 편입니다. 0.6594
미국의 수도는 뉴욕이 아닙니다. 서울은 대한민국의 수도입니다. 0.6445
대한민국의 수도 요금은 저렴한 편입니다. 서울은 대한민국의 수도입니다. 0.4915
미국의 수도는 뉴욕이 아닙니다. 대한민국의 수도 요금은 저렴한 편입니다. 0.4785
서울은 대한민국의 수도입니다. 오늘 서울은 하루종일 맑음 0.4119
대한민국의 수도는 서울입니다. 오늘 서울은 하루종일 맑음 0.3520
미국의 수도는 뉴욕이 아닙니다. 오늘 서울은 하루종일 맑음 0.2550
대한민국의 수도 요금은 저렴한 편입니다. 오늘 서울은 하루종일 맑음 0.1896
基礎用法(HuggingFace Transformers)
如果你沒有安裝 sentence-transformers
,可以使用以下代碼:
from transformers import AutoTokenizer, AutoModel
import torch
def cls_pooling(model_output, attention_mask):
return model_output[0][:,0]
sentences = ['This is an example sentence', 'Each sentence is converted']
tokenizer = AutoTokenizer.from_pretrained('smartmind/roberta-ko-small-tsdae')
model = AutoModel.from_pretrained('smartmind/roberta-ko-small-tsdae')
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')
with torch.no_grad():
model_output = model(**encoded_input)
sentence_embeddings = cls_pooling(model_output, encoded_input['attention_mask'])
print("Sentence embeddings:")
print(sentence_embeddings)
📚 詳細文檔
評估結果
該模型在 klue STS 數據集上的評估結果如下(未進行微調):
數據集劃分 |
餘弦相似度 - 皮爾遜相關係數 |
餘弦相似度 - 斯皮爾曼相關係數 |
歐幾里得距離 - 皮爾遜相關係數 |
歐幾里得距離 - 斯皮爾曼相關係數 |
曼哈頓距離 - 皮爾遜相關係數 |
曼哈頓距離 - 斯皮爾曼相關係數 |
點積 - 皮爾遜相關係數 |
點積 - 斯皮爾曼相關係數 |
訓練集 |
0.8735 |
0.8676 |
0.8268 |
0.8357 |
0.8248 |
0.8336 |
0.8449 |
0.8383 |
驗證集 |
0.5409 |
0.5349 |
0.4786 |
0.4657 |
0.4775 |
0.4625 |
0.5284 |
0.5252 |
完整模型架構
SentenceTransformer(
(0): Transformer({'max_seq_length': 508, 'do_lower_case': False}) with Transformer model: RobertaModel
(1): Pooling({'word_embedding_dimension': 256, 'pooling_mode_cls_token': True, 'pooling_mode_mean_tokens': False, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False})
)
引用與作者