🚀 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})
)
引用与作者