pipeline_tag: 句子相似度
tags:
- 句子转换器
- 特征提取
- 句子相似度
- transformers
language:
- 罗马尼亚语
language_creators:
- 机器生成
dataset:
- 罗马尼亚语义文本相似度数据集
stsb-xlm-r-multilingual-ro罗马尼亚语版
这是一个sentence-transformers模型:可将句子和段落映射到768维稠密向量空间,适用于聚类或语义搜索等任务。基于stsb-xlm-r-multilingual模型针对罗马尼亚语进行微调。
使用方法(Sentence-Transformers库)
安装sentence-transformers后即可便捷使用:
pip install -U sentence-transformers
使用示例:
from sentence_transformers import SentenceTransformer
sentences = ["这是一个示例句子", "每个句子都会被转换"]
model = SentenceTransformer('BlackKakapo/stsb-xlm-r-multilingual-ro')
embeddings = model.encode(sentences)
print(embeddings)
使用方法(HuggingFace Transformers库)
若不使用sentence-transformers库,可按以下方式操作:首先通过transformer模型处理输入,然后对上下文词嵌入执行正确的池化操作。
from transformers import AutoTokenizer, AutoModel
import torch
def mean_pooling(model_output, attention_mask):
token_embeddings = model_output[0]
input_mask_expanded = attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float()
return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9)
sentences = ['这是一个示例句子', '每个句子都会被转换']
tokenizer = AutoTokenizer.from_pretrained('BlackKakapo/stsb-xlm-r-multilingual-ro')
model = AutoModel.from_pretrained('BlackKakapo/stsb-xlm-r-multilingual-ro')
训练过程
数据集:
STS-ro
罗马尼亚语文本数据集。相似度评分范围为0-5分,为适配EmbeddingSimilarityEvaluator评估器(微调评估组件)的0-1分制要求,将原始评分除以5。
数据结构示例:
{
'score': 1.5,
'sentence1': '一位男子在弹奏竖琴',
'sentence2': '一位男子在演奏键盘乐器',
}
数据加载器:
采用torch.utils.data.dataloader.DataLoader
,参数为:
{'batch_size': 32, 'sampler': '随机采样器', 'batch_sampler': '批采样器'}
损失函数:
sentence_transformers.losses.CosineSimilarityLoss.CosineSimilarityLoss
训练参数配置:
{
"训练轮次": 10,
"评估步长": 0,
"评估器": "嵌入相似度评估器",
"最大梯度范数": 1,
"优化器类型": "AdamW",
"优化器参数": {
"学习率": 2e-05
},
"调度器": "线性预热",
"每轮步数": null,
"预热步数": 100,
"权重衰减": 0.01
}
完整模型架构
句子转换器(
(0): 变压器模型({'最大序列长度': 128, '小写转换': False}) 内含: XLMRoberta模型
(1): 池化层({'词嵌入维度': 768, 'CLS标记池化模式': False, '均值标记池化模式': True, '最大标记池化模式': False, '均方根长度标记池化模式': False})
)
引用与作者
BlackKakapo