pipeline_tag: 句子相似度
tags:
- sentence-transformers
- 特征提取
- 句子相似度
- transformers
albert-small-kor-sbert-v1
这是一个sentence-transformers模型:它将句子和段落映射到768维的密集向量空间,可用于聚类或语义搜索等任务。
基于albert-small-kor-v1模型构建的SentenceBERT版本。
使用方法(Sentence-Transformers)
安装sentence-transformers后即可轻松使用此模型:
pip install -U sentence-transformers
然后可以按如下方式使用模型:
from sentence_transformers import SentenceTransformer
sentences = ["这是一个示例句子", "每个句子都会被转换"]
model = SentenceTransformer('bongsoo/albert-small-kor-sbert-v1')
embeddings = model.encode(sentences)
print(embeddings)
使用方法(HuggingFace Transformers)
若不使用sentence-transformers,可按如下方式使用模型:首先将输入通过transformer模型,然后需要在上下文化词嵌入之上应用正确的池化操作。
from transformers import AutoTokenizer, AutoModel
import torch
def cls_pooling(model_output, attention_mask):
return model_output[0][:,0]
sentences = ['这是一个示例句子', '每个句子都会被转换']
tokenizer = AutoTokenizer.from_pretrained('bongsoo/albert-small-kor-sbert-v1')
model = AutoModel.from_pretrained('bongsoo/albert-small-kor-sbert-v1')
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)
评估结果
- 性能测量使用了以下韩语(kor)和英语(en)评估语料库:
韩语:korsts(1,379对句子)和klue-sts(519对句子)
英语:stsb_multi_mt(1,376对句子)和glue:stsb(1,500对句子)
- 性能指标为cosin.spearman
- 评估测量代码参考此处
模型 |
korsts |
klue-sts |
glue(stsb) |
stsb_multi_mt(en) |
distiluse-base-multilingual-cased-v2 |
0.7475 |
0.7855 |
0.8193 |
0.8075 |
paraphrase-multilingual-mpnet-base-v2 |
0.8201 |
0.7993 |
0.8907 |
0.8682 |
bongsoo/moco-sentencedistilbertV2.1 |
0.8390 |
0.8767 |
0.8805 |
0.8548 |
bongsoo/albert-small-kor-sbert-v1 |
0.8305 |
0.8588 |
0.8419 |
0.7965 |
如需自动评估此模型,请参见句子嵌入基准:https://seb.sbert.net
训练过程
模型训练参数如下:
通用参数
- do_lower_case=1, correct_bios=0, polling_mode=cls
1.STS阶段
- 语料库:korsts(5,749) + kluestsV1.1(11,668) + stsb_multi_mt(5,749) + mteb/sickr-sts(9,927) + glue stsb(5,749)(总计:38,842)
- 参数:学习率:1e-4,eps:1e-6,预热步数:10%,训练轮次:10,训练批次大小:32,评估批次大小:64,最大标记长度:72
- 训练代码参考此处
2.蒸馏阶段
- 教师模型:paraphrase-multilingual-mpnet-base-v2(最大标记长度:128)
- 语料库:news_talk_en_ko_train.tsv(英韩对话-新闻平行语料库:138万条)
- 参数:学习率:5e-5,eps:1e-8,训练轮次:10,训练批次大小:32,评估/测试批次大小:64,最大标记长度:128(与教师模型对齐)
- 训练代码参考此处
3.NLI阶段
- 语料库:训练集(967,852条):kornli(550,152),kluenli(24,998),glue-mnli(392,702) / 评估集(3,519条):korsts(1,500),kluests(519),gluests(1,500)
- 超参数:学习率:3e-5,eps:1e-8,预热步数:10%,训练轮次:3,训练/评估批次大小:64,最大标记长度:128
- 训练代码参考此处
完整模型架构
SentenceTransformer(
(0): Transformer({'max_seq_length': 256, 'do_lower_case': True}) with Transformer model: AlbertModel
(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})
)
引用与作者
bongsoo