🚀 NaSE (新聞適配句子編碼器)
NaSE 是一個新聞適配的句子編碼器,它基於預訓練的大規模多語言句子編碼器 LaBSE 進行領域專業化調整。該模型能夠輸出捕獲文本語義信息的向量,可用於句子相似度計算、信息檢索或聚類等任務。
🚀 快速開始
本模型可用於獲取給定文本的句子嵌入。以下是在 PyTorch 和 TensorFlow 中使用該模型的示例代碼。
💻 使用示例
基礎用法
from transformers import BertModel, BertTokenizerFast
tokenizer = BertTokenizerFast.from_pretrained('aiana94/NaSE')
model = BertModel.from_pretrained('aiana94/NaSE')
sentences = ["This is an example sentence", "Dies ist auch ein Beispielsatz in einer anderen Sprache."]
encoded_input = tokenizer(sentences, return_tensors='pt', padding=True)
with torch.no_grad():
output = model(**encoded_input)
sentence_embeddings = output.pooler_output
高級用法
from transformers import TFBertModel, BertTokenizerFast
tokenizer = BertTokenizerFast.from_pretrained('aiana94/NaSE')
model = TFBertModel.from_pretrained('aiana94/NaSE')
sentences = ["This is an example sentence", "Dies ist auch ein Beispielsatz in einer anderen Sprache."]
encoded_input = tokenizer(sentences, return_tensors='tf', padding=True)
with torch.no_grad():
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 是一個領域適配的多語言句子編碼器,它從 LaBSE 初始化而來,並使用兩個多語言語料庫 Polynews 和 PolyNewsParallel 進行新聞領域的專業化調整。該模型有兩個預訓練目標:去噪自編碼和序列到序列機器翻譯。
📦 安裝指南
暫未提供安裝步驟相關內容。
🔧 技術細節
訓練數據
NaSE 使用兩個多語言數據集進行領域適配:Polynews 和並行的 PolyNewsParallel。
在為模型訓練採樣時,使用以下過程來平滑每種語言的分佈:
- 分別從 PolyNews 和 PolyNewsParallel 中僅採樣至少包含 100 篇文本的語言和語言對;
- 通過從修改後的分佈 p(L) ~ |L| * alpha 中採樣語言 L 的文本,其中 |L| 是示例數量,使用平滑率 alpha = 0.3(即對低資源語言進行上採樣,對高資源語言進行下采樣)。
訓練過程
使用多語言句子編碼器 LaBSE 的預訓練權重初始化 NaSE。有關預訓練過程的更多詳細信息,請參考其 模型卡片 或相應的 論文。
使用兩個目標將多語言句子編碼器適配到新聞領域:
- 去噪自編碼(DAE):從通過添加離散噪聲獲得的損壞版本中重建原始輸入句子(詳情請參閱 TSDAE);
- 機器翻譯(MT):從源語言輸入句子生成目標語言翻譯(即源語言構成目標語言中目標句子 x 的“損壞”,需要進行“重建”)。
NaSE 按順序進行訓練,首先進行重建訓練,然後進行翻譯訓練,即在並行數據上繼續訓練通過 DAE 目標獲得的 NaSE 編碼器以進行翻譯。
訓練超參數
- 訓練模式:fp16 混合精度
- 訓練步數:100k(每個目標 50K),每 5K 步進行一次驗證
- 學習率:3e-5
- 優化器:AdamW
完整的訓練腳本可在 訓練代碼 中獲取。
技術規格
該模型在 1 個 40GB NVIDIA A100 GPU 上進行了總共 100k 步的預訓練。
📄 許可證
本模型使用 Apache-2.0 許可證。
引用
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}
}
信息表格