标签:
- 句子转换器
- 特征提取
- 句子相似度
- 转换器
数据集:
- shunk031/jsnli
许可证: cc-by-sa-4.0
语言:
- 日语
评估指标:
- 斯皮尔曼等级相关系数
库名称: sentence-transformers
推理: false
sup-simcse-ja-base
使用方法(Sentence-Transformers)
安装sentence-transformers后即可轻松使用此模型:
pip install -U fugashi[unidic-lite] sentence-transformers
然后可以按如下方式使用模型:
from sentence_transformers import SentenceTransformer
sentences = ["你好,世界!", "句子嵌入太棒了!快喊句子嵌入太棒了", "极度干燥起来"]
model = SentenceTransformer("cl-nagoya/sup-simcse-ja-base")
embeddings = model.encode(sentences)
print(embeddings)
使用方法(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("cl-nagoya/sup-simcse-ja-base")
model = AutoModel.from_pretrained("cl-nagoya/sup-simcse-ja-base")
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)
完整模型架构
SentenceTransformer(
(0): Transformer({'max_seq_length': 512, 'do_lower_case': False}) with Transformer model: BertModel
(1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': True, 'pooling_mode_mean_tokens': False, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False})
)
模型概述
- 微调方法:监督式SimCSE
- 基础模型:cl-tohoku/bert-base-japanese-v3
- 训练数据集:JSNLI
- 池化策略:cls(训练期间额外添加MLP层)
- 隐藏层大小:768
- 学习率:5e-5
- 批次大小:512
- 温度参数:0.05
- 最大序列长度:64
- 训练样本数:2^20
- 验证间隔(步数):2^6
- 预热比例:0.1
- 数据类型:BFloat16
实验详细设置请参阅GitHub仓库。
引用与作者
@misc{
hayato-tsukagoshi-2023-simple-simcse-ja,
author = {Hayato Tsukagoshi},
title = {日文Simple-SimCSE},
year = {2023},
publisher = {GitHub},
journal = {GitHub仓库},
howpublished = {\url{https://github.com/hppRC/simple-simcse-ja}}
}