pipeline_tag: 句子相似度
tags:
- 句子转换器
- 特征提取
- 句子相似度
- 转换器
language:
- 韩语
license:
- MIT协议
widget:
source_sentence: "韩国的首都是首尔。"
sentences:
- "美国的首都不是纽约。"
- "韩国首都的物价相对便宜。"
- "首尔是韩国的首都。"
smartmind/roberta-ko-small-tsdae
这是一个基于sentence-transformers的模型:能够将句子和段落映射到256维稠密向量空间,适用于聚类或语义搜索等任务。
该模型是采用TSDAE预训练的韩语小型RoBERTa模型。
此模型架构与lassl/roberta-ko-small相同,但使用了不同的分词器。
可直接用于计算句子相似度,也可根据具体任务进行微调后使用。
使用方法(Sentence-Transformers)
安装sentence-transformers后即可直接加载模型:
pip install -U sentence-transformers
使用示例如下:
from sentence_transformers import SentenceTransformer
sentences = ["这是一个示例句子", "每个句子都会被转换"]
model = SentenceTransformer('smartmind/roberta-ko-small-tsdae')
embeddings = model.encode(sentences)
print(embeddings)
以下是通过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 = ['这是一个示例句子', '每个句子都会被转换']
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("句子向量:")
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})
)
引用与作者声明