许可证:apache-2.0
数据集:
- aiana94/polynews-parallel
- aiana94/polynews
支持语言:
- 南非荷兰语
- 阿姆哈拉语
- 阿拉伯语
- 阿萨姆语
- 阿塞拜疆语
- 白俄罗斯语
- 保加利亚语
- 孟加拉语
- 藏语
- 波斯尼亚语
- 加泰罗尼亚语
- 宿务语
- 科西嘉语
- 捷克语
- 威尔士语
- 丹麦语
- 德语
- 希腊语
- 英语
- 世界语
- 西班牙语
- 爱沙尼亚语
- 巴斯克语
- 波斯语
- 芬兰语
- 法语
- 弗里斯兰语
- 爱尔兰语
- 苏格兰盖尔语
- 加利西亚语
- 古吉拉特语
- 豪萨语
- 夏威夷语
- 希伯来语
- 印地语
- 苗语
- 克罗地亚语
- 海地克里奥尔语
- 匈牙利语
- 亚美尼亚语
- 印尼语
- 伊博语
- 冰岛语
- 意大利语
- 日语
- 爪哇语
- 格鲁吉亚语
- 哈萨克语
- 高棉语
- 卡纳达语
- 韩语
- 库尔德语
- 吉尔吉斯语
- 拉丁语
- 卢森堡语
- 老挝语
- 立陶宛语
- 拉脱维亚语
- 马尔加什语
- 毛利语
- 马其顿语
- 蒙古语
- 马拉地语
- 马来语
- 马耳他语
- 缅甸语
- 尼泊尔语
- 荷兰语
- 挪威语
- 齐切瓦语
- 奥里亚语
- 旁遮普语
- 波兰语
- 葡萄牙语
- 罗马尼亚语
- 俄语
- 卢旺达语
- 僧伽罗语
- 斯洛伐克语
- 斯洛文尼亚语
- 萨摩亚语
- 修纳语
- 索马里语
- 斯瓦希里语
- 阿尔巴尼亚语
- 塞尔维亚语
- 南索托语
- 瑞典语
- 泰米尔语
- 泰卢固语
- 塔吉克语
- 泰语
- 土库曼语
- 他加禄语
- 土耳其语
- 鞑靼语
- 维吾尔语
- 乌克兰语
- 乌尔都语
- 乌兹别克语
- 越南语
- 沃洛夫语
- 科萨语
- 意第绪语
- 约鲁巴语
- 中文
- 祖鲁语
- 艾马拉语
- 班巴拉语
- 巴布亚皮钦语
- 埃维语
- 丰语
- 古昂语
- 林加拉语
- 卢干达语
- 卢奥语
- 尼日利亚皮钦语
- 基隆迪语
- 德顿语
- 提格里尼亚语
- 茨瓦纳语
- 特威语
- 菲律宾语
- 莫西语
- 奥罗莫语
任务标签:句子相似度
标签:
NaSE(新闻适配句子编码器)
该模型是一个新闻领域专用的句子编码器,基于预训练的大规模多语言句子编码器LaBSE进行领域专业化训练。
模型详情
模型描述
NaSE是一个领域适配的多语言句子编码器,初始权重来自LaBSE。
通过使用两个多语言语料库Polynews和PolyNewsParallel进行新闻领域专业化训练。具体而言,NaSE通过去噪自编码和序列到序列机器翻译两个目标进行预训练。
使用方法(HuggingFace Transformers)
以下是使用PyTorch获取文本句子嵌入的示例:
from transformers import BertModel, BertTokenizerFast
tokenizer = BertTokenizerFast.from_pretrained('aiana94/NaSE')
model = BertModel.from_pretrained('aiana94/NaSE')
sentences = ["这是一个示例句子", "这是另一种语言的示例句子。"]
encoded_input = tokenizer(sentences, return_tensors='pt', padding=True)
with torch.no_grad():
output = model(**encoded_input)
sentence_embeddings = output.pooler_output
TensorFlow版本:
from transformers import TFBertModel, BertTokenizerFast
tokenizer = BertTokenizerFast.from_pretrained('aiana94/NaSE')
model = TFBertModel.from_pretrained('aiana94/NaSE')
sentences = ["这是一个示例句子", "这是另一种语言的示例句子。"]
encoded_input = tokenizer(sentences, return_tensors='tf', padding=True)
output = model(**encoded_input)
sentence_embeddings = output.pooler_output
计算句子相似度时,建议先进行L2归一化:
import torch
import torch.nn.functional as F
def cos_sim(a: torch.Tensor, b: torch.Tensor):
a_norm = F.normalize(a, p=2, dim=1)
b_norm = F.normalize(b, p=2, dim=1)
return torch.mm(a_norm, b_norm.transpose(0, 1))
预期用途
本模型旨在作为句子(特别是新闻)编码器使用。输入文本后,输出捕获其语义信息的向量。该句子向量可用于句子相似度、信息检索或聚类任务。
训练详情
训练数据
NaSE使用两个多语言数据集进行领域适配:Polynews和并行语料库PolyNewsParallel。
我们采用以下步骤平滑训练时的语言分布采样:
- 仅采样PolyNews中至少包含100个文本的语言和PolyNewsParallel中的语言对;
- 通过修正分布_p(L) ~ |L| * alpha_采样语言_L_的文本,其中_|L|是语言_L_的样本数,平滑率_alpha=0.3(即上采样低资源语言,下采样高资源语言)。
训练过程
NaSE初始权重来自多语言句子编码器LaBSE的预训练权重。关于预训练过程的详细信息,请参阅其模型卡或对应论文。
我们通过两个目标将多语言句子编码器适配到新闻领域:
- 去噪自编码(DAE):从添加离散噪声的损坏版本重建原始输入句子(详见TSDAE);
- 机器翻译(MT):从源语言输入句子生成目标语言翻译(即源语言构成目标语言句子x的"损坏",需被"重建")。
NaSE按顺序训练,先进行重建训练,再进行翻译训练,即在DAE目标获得的NaSE编码器基础上继续使用并行数据进行翻译训练。
训练超参数
- 训练模式: fp16混合精度
- 训练步数: 100k(每个目标50k步),每5k步验证一次
- 学习率: 3e-5
- 优化器: AdamW
完整训练脚本见训练代码。
技术规格
模型在1块40GB NVIDIA A100 GPU上预训练,总步数100k。
引用
BibTeX:
@misc{iana2024news,
title={News Without Borders: Domain Adaptation of Multilingual Sentence Embeddings for Cross-lingual News Recommendation},
author={Andreea Iana and Fabian David Schmidt and Goran Glavaš and Heiko Paulheim},
year={2024},
eprint={2406.12634},
archivePrefix={arXiv},
url={https://arxiv.org/abs/2406.12634}
}