Transformers 文件
RetriBERT
並獲得增強的文件體驗
開始使用
RetriBERT
該模型僅處於維護模式,因此我們不會接受任何更改其程式碼的新 PR。
如果在執行此模型時遇到任何問題,請重新安裝支援此模型的最後一個版本:v4.30.0。您可以透過執行以下命令進行安裝:`pip install -U transformers==4.30.0`。
概述
RetriBERT 模型在部落格文章 用五歲孩子的語言解釋一切:一個開放領域長篇問答模型 中提出。RetriBERT 是一個小型模型,使用單個或一對 BERT 編碼器,透過低維投影對文字進行密集語義索引。
此模型由 yjernite 貢獻。訓練和使用模型的程式碼可以在 此處 找到。
RetriBertConfig
class transformers.RetriBertConfig
< 源 >( vocab_size = 30522 hidden_size = 768 num_hidden_layers = 8 num_attention_heads = 12 intermediate_size = 3072 hidden_act = 'gelu' hidden_dropout_prob = 0.1 attention_probs_dropout_prob = 0.1 max_position_embeddings = 512 type_vocab_size = 2 initializer_range = 0.02 layer_norm_eps = 1e-12 share_encoders = True projection_dim = 128 pad_token_id = 0 **kwargs )
引數
- vocab_size (
int
, 可選, 預設為 30522) — RetriBERT 模型的詞彙表大小。定義了呼叫 RetriBertModel 時可以由inputs_ids
表示的不同 token 的數量。 - hidden_size (
int
, 可選, 預設為 768) — 編碼器層和池化層的維度。 - num_hidden_layers (
int
, 可選, 預設為 12) — Transformer 編碼器中的隱藏層數量。 - num_attention_heads (
int
, 可選, 預設為 12) — Transformer 編碼器中每個注意力層的注意力頭數量。 - intermediate_size (
int
, 可選, 預設為 3072) — Transformer 編碼器中“中間”(通常稱為前饋)層的維度。 - hidden_act (
str
或function
, 可選, 預設為"gelu"
) — 編碼器和池化層中的非線性啟用函式(函式或字串)。如果為字串,支援"gelu"
、"relu"
、"silu"
和"gelu_new"
。 - hidden_dropout_prob (
float
, 可選, 預設為 0.1) — 嵌入層、編碼器和池化層中所有全連線層的 dropout 機率。 - attention_probs_dropout_prob (
float
, 可選, 預設為 0.1) — 注意力機率的 dropout 比率。 - max_position_embeddings (
int
, 可選, 預設為 512) — 此模型可能使用的最大序列長度。通常設定為較大值以防萬一(例如 512、1024 或 2048)。 - type_vocab_size (
int
, 可選, 預設為 2) — 傳入 BertModel 的 token_type_ids 的詞彙表大小。 - initializer_range (
float
, 可選, 預設為 0.02) — 用於初始化所有權重矩陣的 truncated_normal_initializer 的標準差。 - layer_norm_eps (
float
, 可選, 預設為 1e-12) — 層歸一化層使用的 epsilon 值。 - share_encoders (
bool
, 可選, 預設為True
) — 是否對查詢和文件使用相同的 Bert 型別編碼器。 - projection_dim (
int
, 可選, 預設為 128) — 投影后查詢和文件表示的最終維度。
這是用於儲存 RetriBertModel 配置的配置類。它用於根據指定的引數例項化 RetriBertModel 模型,定義模型架構。使用預設引數例項化配置將生成類似於 RetriBERT yjernite/retribert-base-uncased 架構的配置。
配置物件繼承自 PretrainedConfig,可用於控制模型輸出。有關這些方法的更多資訊,請參閱 PretrainedConfig 的文件。
RetriBertTokenizer
class transformers.RetriBertTokenizer
< 源 >( vocab_file do_lower_case = True do_basic_tokenize = True never_split = None unk_token = '[UNK]' sep_token = '[SEP]' pad_token = '[PAD]' cls_token = '[CLS]' mask_token = '[MASK]' tokenize_chinese_chars = True strip_accents = None **kwargs )
引數
- vocab_file (
str
) — 包含詞彙表的檔案。 - do_lower_case (
bool
, 可選, 預設為True
) — 分詞時是否將輸入轉換為小寫。 - do_basic_tokenize (
bool
, 可選, 預設為True
) — 在 WordPiece 之前是否進行基本分詞。 - never_split (
Iterable
, 可選) — 永遠不會在分詞過程中被拆分的 token 集合。僅當do_basic_tokenize=True
時有效。 - unk_token (
str
, 可選, 預設為"[UNK]"
) — 未知 token。詞彙表中不存在的 token 無法轉換為 ID,將改為此 token。 - sep_token (
str
, 可選, 預設為"[SEP]"
) — 分隔符 token,用於從多個序列構建序列時,例如用於序列分類的兩個序列或用於問答的文字和問題。它也用作使用特殊 token 構建的序列的最後一個 token。 - pad_token (
str
, 可選, 預設為"[PAD]"
) — 用於填充的 token,例如在批處理不同長度的序列時。 - cls_token (
str
, 可選, 預設為"[CLS]"
) — 分類器 token,用於序列分類(整個序列的分類而非按 token 分類)。當使用特殊 token 構建序列時,它是序列的第一個 token。 - mask_token (
str
, 可選, 預設為"[MASK]"
) — 用於掩碼值的 token。這是訓練此模型時帶掩碼語言建模使用的 token。這也是模型將嘗試預測的 token。 - tokenize_chinese_chars (
bool
, 可選, 預設為True
) — 是否對中文字元進行分詞。對於日語,應停用此選項(參見此 問題)。 - strip_accents (
bool
, 可選) — 是否去除所有重音。如果未指定此選項,則將由lowercase
的值決定(如原始 BERT 中所示)。
構造一個 RetriBERT 分詞器。
RetriBertTokenizer 與 BertTokenizer 相同,並執行端到端分詞:標點符號分割和 WordPiece。
此分詞器繼承自 PreTrainedTokenizer,其中包含大多數主要方法。使用者應參閱此超類以獲取有關這些方法的更多資訊。
build_inputs_with_special_tokens
< 源 >( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None ) → List[int]
透過連線和新增特殊標記,從一個序列或一對序列構建用於序列分類任務的模型輸入。BERT 序列的格式如下:
- 單個序列:
[CLS] X [SEP]
- 序列對:
[CLS] A [SEP] B [SEP]
將標記序列(字串)轉換為單個字串。
get_special_tokens_mask
< 原始檔 >( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None already_has_special_tokens: bool = False ) → List[int]
從沒有新增特殊標記的標記列表中檢索序列ID。此方法在使用分詞器prepare_for_model
方法新增特殊標記時呼叫。
RetriBertTokenizerFast
class transformers.RetriBertTokenizerFast
< 原始檔 >( vocab_file = None tokenizer_file = None do_lower_case = True unk_token = '[UNK]' sep_token = '[SEP]' pad_token = '[PAD]' cls_token = '[CLS]' mask_token = '[MASK]' tokenize_chinese_chars = True strip_accents = None **kwargs )
引數
- vocab_file (
str
) — 包含詞彙表的檔案。 - do_lower_case (
bool
, 可選, 預設為True
) — 標記化時是否將輸入轉換為小寫。 - unk_token (
str
, 可選, 預設為"[UNK]"
) — 未知標記。不在詞彙表中的標記不能轉換為 ID,而是設定為此標記。 - sep_token (
str
, 可選, 預設為"[SEP]"
) — 分隔標記,用於從多個序列構建序列時,例如用於序列分類的兩個序列或用於問答的文字和問題。它也用作使用特殊標記構建的序列的最後一個標記。 - pad_token (
str
, 可選, 預設為"[PAD]"
) — 用於填充的標記,例如在對不同長度的序列進行批處理時。 - cls_token (
str
, 可選, 預設為"[CLS]"
) — 分類器標記,用於進行序列分類時(對整個序列進行分類而非按標記分類)。當使用特殊標記構建時,它是序列的第一個標記。 - mask_token (
str
, 可選, 預設為"[MASK]"
) — 用於遮蔽值的標記。這是使用遮蔽語言建模訓練此模型時使用的標記。這是模型將嘗試預測的標記。 - clean_text (
bool
, 可選, 預設為True
) — 是否在標記化前透過刪除任何控制字元並將所有空格替換為經典空格來清理文字。 - tokenize_chinese_chars (
bool
, 可選, 預設為True
) — 是否對中文字元進行標記化。對於日語,這應該停用(參見此問題)。 - strip_accents (
bool
, 可選) — 是否去除所有重音。如果未指定此選項,則將由lowercase
的值確定(如原始 BERT 中)。 - wordpieces_prefix (
str
, 可選, 預設為"##"
) — 子詞的字首。
構建一個“快速” RetriBERT 分詞器(由 HuggingFace 的 _tokenizers_ 庫支援)。
RetriBertTokenizerFast 與 BertTokenizerFast 完全相同,並執行端到端分詞:標點符號分割和 Wordpiece。
此分詞器繼承自 PreTrainedTokenizerFast,其中包含大多數主要方法。使用者應參考此超類以獲取有關這些方法的更多資訊。
RetriBertModel
class transformers.RetriBertModel
< 原始檔 >( config: RetriBertConfig )
引數
- config (RetriBertConfig) — 模型的配置類,包含模型的所有引數。使用配置檔案初始化並不會載入與模型相關的權重,只加載配置。請檢視 from_pretrained() 方法來載入模型權重。
基於 Bert 的模型,用於嵌入查詢或文件以進行文件檢索。
此模型繼承自 PreTrainedModel。請檢視超類文件以獲取庫為其所有模型實現的一般方法(例如下載或儲存、調整輸入嵌入大小、剪枝頭部等)的資訊。
此模型也是 PyTorch torch.nn.Module 子類。將其作為常規 PyTorch 模組使用,並參考 PyTorch 文件以獲取所有與一般用法和行為相關的事項。
forward
< 原始檔 >( input_ids_query: LongTensor attention_mask_query: typing.Optional[torch.FloatTensor] input_ids_doc: LongTensor attention_mask_doc: typing.Optional[torch.FloatTensor] checkpoint_batch_size: int = -1 ) → `torch.FloatTensor“
引數
- input_ids_query (形狀為
(batch_size, sequence_length)
的torch.LongTensor
) — 批處理中查詢的輸入序列標記在詞彙表中的索引。索引可以使用 AutoTokenizer 獲取。有關詳細資訊,請參見 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask_query (形狀為
(batch_size, sequence_length)
的torch.FloatTensor
, 可選) — 掩碼,用於避免對填充標記索引執行注意力。掩碼值選擇在[0, 1]
中:- 1 表示**未被掩蔽**的標記,
- 0 表示**被掩蔽**的標記。
- input_ids_doc (形狀為
(batch_size, sequence_length)
的torch.LongTensor
) — 批處理中文件的輸入序列標記在詞彙表中的索引。 - attention_mask_doc (形狀為
(batch_size, sequence_length)
的torch.FloatTensor
, 可選) — 掩碼,用於避免對文件填充標記索引執行注意力。 - checkpoint_batch_size (
int
, 可選, 預設為-1
) — 如果大於 0,則使用梯度檢查點僅在 GPU 上一次計算checkpoint_batch_size
個示例的序列表示。所有查詢表示仍然與批處理中的所有文件表示進行比較。
返回
`torch.FloatTensor“
在嘗試將每個查詢與其對應的文件以及批處理中的每個文件與其對應的查詢進行匹配時獲得的雙向交叉熵損失。