项目介绍:robbert-2022-dutch-sentence-transformers
概述
robbert-2022-dutch-sentence-transformers是一个旨在将句子和段落映射到768维密集向量空间的模型,可应用于句子相似性、集群等任务。该模型基于由KU Leuven推出的RobBERT模型,经过对仿意相似性数据集的微调,其中的数据集经机器翻译成荷兰语。
模型特性
核心功能
- 句子嵌入:模型将输入的句子转换成数值化的向量表示,便于计算语义相似度。
- 任务支持:适用于句子聚类、语义搜索以及句子相似性评估等任务。
数据集
模型在多个荷兰语数据集上进行了训练,包含翻译自各种英文语料的数据集,如:
- AllNLI
- altlex
- coco-captions
- flickr30k-captions
- msmarco
- quora-duplicates
- sentence-compression
- simplewiki
- stackexchange-duplicate-questions
- wiki-atomic-edits
所有数据集均由Netherlands Forensic Institute提供。
技术架构
模型使用句子变换器(sentence-transformers)技术,其中包含两个主要的部分:
- Transformer模块:基于RobBERT,处理输入文本并生成初步特征向量。
- Pooling模块:应用平均池化操作,提取最终的句子嵌入。
使用方式
使用sentence-transformers库
安装库后,可以通过以下代码获取句子嵌入:
from sentence_transformers import SentenceTransformer
sentences = ["This is an example sentence", "Each sentence is converted"]
model = SentenceTransformer('NetherlandsForensicInstitute/robbert-2022-dutch-sentence-transformers')
embeddings = model.encode(sentences)
print(embeddings)
使用HuggingFace Transformers库
无需sentence-transformers库,也可以通过HuggingFace Transformers库使用:
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 = ['This is an example sentence', 'Each sentence is converted']
tokenizer = AutoTokenizer.from_pretrained('NetherlandsForensicInstitute/robbert-2022-dutch-sentence-transformers')
model = AutoModel.from_pretrained('NetherlandsForensicInstitute/robbert-2022-dutch-sentence-transformers')
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')
with torch.no_grad():
model_output = model(**encoded_input)
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
print("Sentence embeddings:")
print(sentence_embeddings)
训练细节
此模型使用Multiple Negatives Ranking Loss进行训练,优化参数如下:
- 数据加载器批量大小为1,总长度为414262。
- 优化方法为AdamW,学习率为2e-05。
- 使用WarmupLinear学习率调度策略,热身步数为500。
- 权重衰减系数为0.01,最大梯度规范为1。
总结
robbert-2022-dutch-sentence-transformers是一个强大的工具。如想要了解更多信息,请访问相关的Hugging Face页面。对于研究人员和开发者来说,这一模型是进行荷兰语句子相似性任务的有力帮助。