Transformers 文件
mLUKE
並獲得增強的文件體驗
開始使用
mLUKE
概述
mLUKE 模型由 Ryokan Ri、Ikuya Yamada 和 Yoshimasa Tsuruoka 在 mLUKE: The Power of Entity Representations in Multilingual Pretrained Language Models 中提出。它是基於 XLM-RoBERTa 訓練的 LUKE 模型的多語言擴充套件。
它基於 XLM-RoBERTa,並增加了實體嵌入,這有助於提高涉及實體推理的各種下游任務的效能,例如命名實體識別、抽取式問答、關係分類、完形填空式知識補全。
論文摘要如下:
最近的研究表明,多語言預訓練語言模型可以透過維基百科實體的跨語言對齊資訊得到有效改進。然而,現有方法僅在預訓練中利用實體資訊,而沒有在下游任務中明確使用實體。在這項研究中,我們探討了利用實體表示對下游跨語言任務的有效性。我們訓練了一個包含 24 種語言的多語言語言模型,其中包含實體表示,並表明該模型在各種跨語言遷移任務中始終優於基於詞的預訓練模型。我們還分析了該模型,關鍵在於將實體表示納入輸入可以幫助我們提取更多與語言無關的特徵。我們還使用 mLAMA 資料集評估了該模型在多語言完形填空任務中的表現。我們發現,基於實體的提示比僅使用詞表示更有可能引發正確的事實知識。
使用技巧
您可以直接將 mLUKE 的權重插入到 LUKE 模型中,例如:
from transformers import LukeModel
model = LukeModel.from_pretrained("studio-ousia/mluke-base")
請注意,mLUKE 有自己的分詞器,MLukeTokenizer。您可以按如下方式初始化它:
from transformers import MLukeTokenizer
tokenizer = MLukeTokenizer.from_pretrained("studio-ousia/mluke-base")
由於 mLUKE 的架構與 LUKE 相同,您可以參考 LUKE 的文件頁面獲取所有技巧、程式碼示例和筆記本。
MLukeTokenizer
類 transformers.MLukeTokenizer
< 來源 >( 詞彙檔案 實體詞彙檔案 bos_token = '<s>' eos_token = '</s>' sep_token = '</s>' cls_token = '<s>' unk_token = '<unk>' pad_token = '<pad>' mask_token = '<mask>' 任務 = None 最大實體長度 = 32 最大提及長度 = 30 實體令牌1 = '<ent>' 實體令牌2 = '<ent2>' 實體未知令牌 = '[UNK]' 實體填充令牌 = '[PAD]' 實體掩碼令牌 = '[MASK]' 實體掩碼2令牌 = '[MASK2]' sp_model_kwargs: typing.Optional[dict[str, typing.Any]] = None **kwargs )
引數
- vocab_file (
str
) — 詞彙表文件的路徑。 - entity_vocab_file (
str
) — 實體詞彙表文件的路徑。 - bos_token (
str
, 可選, 預設為"<s>"
) — 預訓練期間使用的序列開始標記。可用作序列分類器標記。當使用特殊標記構建序列時,這不是用於序列開始的標記。使用的標記是
cls_token
。 - eos_token (
str
, 可選, 預設為"</s>"
) — 序列結束標記。當使用特殊標記構建序列時,這不是用於序列結束的標記。使用的標記是
sep_token
。 - sep_token (
str
, 可選, 預設為"</s>"
) — 分隔符標記,用於從多個序列構建序列,例如序列分類的兩個序列或問答的文字和問題。它也用作使用特殊標記構建的序列的最後一個標記。 - cls_token (
str
, 可選, 預設為"<s>"
) — 分類器標記,用於序列分類(整個序列的分類,而不是每個標記的分類)。它是在使用特殊標記構建序列時的第一個標記。 - unk_token (
str
, 可選, 預設為"<unk>"
) — 未知標記。不在詞彙表中的標記無法轉換為 ID,而是設定為此標記。 - pad_token (
str
, 可選, 預設為"<pad>"
) — 用於填充的標記,例如在批處理不同長度的序列時。 - mask_token (
str
, 可選, 預設為"<mask>"
) — 用於掩碼值的標記。這是在用掩碼語言建模訓練此模型時使用的標記。這是模型將嘗試預測的標記。 - task (
str
, 可選) — 您要準備序列的任務。可以是"entity_classification"
、"entity_pair_classification"
或"entity_span_classification"
之一。如果指定此引數,則實體序列將根據給定的實體跨度自動建立。 - max_entity_length (
int
, 可選, 預設為 32) —entity_ids
的最大長度。 - max_mention_length (
int
, 可選, 預設為 30) — 實體跨度中的最大標記數。 - entity_token_1 (
str
, 可選, 預設為<ent>
) — 用於在詞標記序列中表示實體跨度的特殊標記。此標記僅在task
設定為"entity_classification"
或"entity_pair_classification"
時使用。 - entity_token_2 (
str
, 可選, 預設為<ent2>
) — 用於在詞標記序列中表示實體跨度的特殊標記。此標記僅在task
設定為"entity_pair_classification"
時使用。 - additional_special_tokens (
list[str]
, 可選, 預設為["<s>NOTUSED", "</s>NOTUSED"]
) — 分詞器使用的附加特殊標記。 - sp_model_kwargs (
dict
, 可選) — 將傳遞給SentencePieceProcessor.__init__()
方法。 SentencePiece 的 Python 包裝器可以用於設定:-
enable_sampling
:啟用子詞正則化。 -
nbest_size
:Unigram 的取樣引數。對於 BPE-Dropout 無效。nbest_size = {0,1}
:不執行取樣。nbest_size > 1
:從 nbest_size 結果中取樣。nbest_size < 0
:假設 nbest_size 無限,並使用前向過濾和後向取樣演算法從所有假設(格)中取樣。
-
alpha
:Unigram 取樣的平滑引數,以及 BPE-dropout 合併操作的 dropout 機率。
-
- sp_model (
SentencePieceProcessor
) — 用於所有轉換(字串、標記和 ID)的 SentencePiece 處理器。
改編自 XLMRobertaTokenizer 和 LukeTokenizer。基於 SentencePiece。
此分詞器繼承自 PreTrainedTokenizer,其中包含大多數主要方法。使用者應參考此超類以獲取有關這些方法的更多資訊。
__call__
< 來源 >( 文字: typing.Union[str, list[str]] 文字對: typing.Union[str, list[str], NoneType] = None 實體跨度: typing.Union[list[tuple[int, int]], list[list[tuple[int, int]]], NoneType] = None 實體跨度對: typing.Union[list[tuple[int, int]], list[list[tuple[int, int]]], NoneType] = None 實體: typing.Union[list[str], list[list[str]], NoneType] = None 實體對: typing.Union[list[str], list[list[str]], NoneType] = None 新增特殊標記: bool = True 填充: typing.Union[bool, str, transformers.utils.generic.PaddingStrategy] = False 截斷: typing.Union[bool, str, transformers.tokenization_utils_base.TruncationStrategy] = None 最大長度: typing.Optional[int] = None 最大實體長度: typing.Optional[int] = None 步幅: int = 0 is_split_into_words: typing.Optional[bool] = False pad_to_multiple_of: typing.Optional[int] = None padding_side: typing.Optional[str] = None return_tensors: typing.Union[transformers.utils.generic.TensorType, str, NoneType] = None return_token_type_ids: typing.Optional[bool] = None return_attention_mask: typing.Optional[bool] = None return_overflowing_tokens: bool = False return_special_tokens_mask: bool = False return_offsets_mapping: bool = False return_length: bool = False verbose: bool = True **kwargs ) → BatchEncoding
引數
- text (
str
,list[str]
,list[list[str]]
) — 要編碼的序列或序列批次。每個序列必須是字串。請注意,此分詞器不支援基於預分詞字串的分詞。 - text_pair (
str
,list[str]
,list[list[str]]
) — 要編碼的序列或序列批次。每個序列必須是字串。請注意,此分詞器不支援基於預分詞字串的分詞。 - entity_spans (
list[tuple[int, int]]
,list[list[tuple[int, int]]]
, 可選) — 要編碼的實體跨度序列或序列批次。每個序列由元組組成,每個元組包含兩個整數,表示實體的基於字元的開始和結束位置。如果您在建構函式中將task
引數指定為"entity_classification"
或"entity_pair_classification"
,則每個序列的長度必須分別為 1 或 2。如果您指定entities
,則每個序列的長度必須等於entities
中每個序列的長度。 - entity_spans_pair (
list[tuple[int, int]]
,list[list[tuple[int, int]]]
, 可選) — 要編碼的實體跨度序列或序列批次。每個序列由元組組成,每個元組包含兩個整數,表示實體的基於字元的開始和結束位置。如果您在建構函式中指定task
引數,則此引數將被忽略。如果您指定entities_pair
,則每個序列的長度必須等於entities_pair
中每個序列的長度。 - 實體 (
list[str]
,list[list[str]]
, 可選) — 要編碼的實體序列或批次序列。每個序列由表示實體的字串組成,即特殊實體(例如 [MASK])或維基百科的實體標題(例如 Los Angeles)。如果您在建構函式中指定了task
引數,則此引數將被忽略。每個序列的長度必須等於每個entity_spans
序列的長度。如果您在未指定此引數的情況下指定了entity_spans
,則實體序列或實體序列批次將透過填充 [MASK] 實體自動構建。 - 實體對 (
list[str]
,list[list[str]]
, 可選) — 要編碼的實體序列或批次序列。每個序列由表示實體的字串組成,即特殊實體(例如 [MASK])或維基百科的實體標題(例如 Los Angeles)。如果您在建構函式中指定了task
引數,則此引數將被忽略。每個序列的長度必須等於每個entity_spans_pair
序列的長度。如果您在未指定此引數的情況下指定了entity_spans_pair
,則實體序列或實體序列批次將透過填充 [MASK] 實體自動構建。 - 最大實體長度 (
int
, 可選) —entity_ids
的最大長度。 - 新增特殊標記 (
bool
, 可選, 預設為True
) — 在編碼序列時是否新增特殊標記。這將使用底層PretrainedTokenizerBase.build_inputs_with_special_tokens
函式,該函式定義了哪些標記會自動新增到輸入 ID。如果您希望自動新增bos
或eos
標記,這會很有用。 - 填充 (
bool
,str
或 PaddingStrategy, 可選, 預設為False
) — 啟用和控制填充。接受以下值:True
或'longest'
:填充到批次中最長的序列(如果只提供一個序列,則不填充)。'max_length'
:填充到由引數max_length
指定的最大長度,或者如果未提供該引數,則填充到模型可接受的最大輸入長度。False
或'do_not_pad'
(預設):不填充(即,可以輸出具有不同長度序列的批次)。
- 截斷 (
bool
,str
或 TruncationStrategy, 可選, 預設為False
) — 啟用和控制截斷。接受以下值:True
或'longest_first'
:截斷到由引數max_length
指定的最大長度,或者如果未提供該引數,則截斷到模型可接受的最大輸入長度。如果提供了一對序列(或批次對),這將逐個標記進行截斷,從對中最長的序列中移除一個標記。'only_first'
:截斷到由引數max_length
指定的最大長度,或者如果未提供該引數,則截斷到模型可接受的最大輸入長度。如果提供了一對序列(或批次對),這將只截斷對的第一個序列。'only_second'
:截斷到由引數max_length
指定的最大長度,或者如果未提供該引數,則截斷到模型可接受的最大輸入長度。如果提供了一對序列(或批次對),這將只截斷對的第二個序列。False
或'do_not_truncate'
(預設):不截斷(即,可以輸出序列長度大於模型最大允許輸入大小的批次)。
- 最大長度 (
int
, 可選) — 控制截斷/填充引數之一所使用的最大長度。如果未設定或設定為
None
,則如果截斷/填充引數之一需要最大長度,則將使用預定義的模型最大長度。如果模型沒有特定的最大輸入長度(如 XLNet),則將停用截斷/填充到最大長度。 - 步長 (
int
, 可選, 預設為 0) — 如果設定為一個數字並結合max_length
使用,則當return_overflowing_tokens=True
時返回的溢位標記將包含來自截斷序列末尾的一些標記,以在截斷序列和溢位序列之間提供一些重疊。此引數的值定義了重疊標記的數量。 - 已分詞 (
bool
, 可選, 預設為False
) — 輸入是否已預分詞(例如,已拆分為單詞)。如果設定為True
,則分詞器假定輸入已拆分為單詞(例如,透過在空白處拆分),然後對其進行分詞。這對於 NER 或標記分類很有用。 - 填充到倍數 (
int
, 可選) — 如果設定,將序列填充到所提供值的倍數。需要啟用padding
。這對於在計算能力>= 7.5
(Volta) 的 NVIDIA 硬體上啟用 Tensor Cores 特別有用。 - 填充方向 (
str
, 可選) — 模型應該在哪個方向上應用填充。應在 ['right', 'left'] 之間選擇。預設值取自同名類屬性。 - 返回張量 (
str
或 TensorType, 可選) — 如果設定,將返回張量而不是 Python 整數列表。可接受的值有:'tf'
:返回 TensorFlowtf.constant
物件。'pt'
:返回 PyTorchtorch.Tensor
物件。'np'
:返回 Numpynp.ndarray
物件。
- 返回標記型別 ID (
bool
, 可選) — 是否返回標記型別 ID。如果保留預設值,將根據特定分詞器的預設值(由return_outputs
屬性定義)返回標記型別 ID。 - 返回注意力掩碼 (
bool
, 可選) — 是否返回注意力掩碼。如果保留預設值,將根據特定分詞器的預設值(由return_outputs
屬性定義)返回注意力掩碼。 - 返回溢位標記 (
bool
, 可選, 預設為False
) — 是否返回溢位標記序列。如果提供了一對輸入 ID 序列(或批次對)並使用truncation_strategy = longest_first
或True
,則會引發錯誤,而不是返回溢位標記。 - 返回特殊標記掩碼 (
bool
, 可選, 預設為False
) — 是否返回特殊標記掩碼資訊。 - 返回偏移對映 (
bool
, 可選, 預設為False
) — 是否為每個標記返回(char_start, char_end)
。這僅適用於繼承自 PreTrainedTokenizerFast 的快速分詞器,如果使用 Python 的分詞器,此方法將引發
NotImplementedError
。 - 返回長度 (
bool
, 可選, 預設為False
) — 是否返回編碼輸入的長度。 - 詳細 (
bool
, 可選, 預設為True
) — 是否列印更多資訊和警告。 - **kwargs — 傳遞給
self.tokenize()
方法
返回
一個 BatchEncoding,包含以下欄位:
-
input_ids — 要輸入到模型中的標記 ID 列表。
-
token_type_ids — 要輸入到模型中的標記型別 ID 列表(當
return_token_type_ids=True
或如果 *“token_type_ids”* 在self.model_input_names
中時)。 -
attention_mask — 指定模型應關注哪些標記的索引列表(當
return_attention_mask=True
或如果 *“attention_mask”* 在self.model_input_names
中時)。 -
實體 ID — 實體 ID 列表,用於饋送到模型中。
-
實體位置 ID — 實體在輸入序列中的位置 ID 列表,用於饋送到模型中。
-
實體標記型別 ID — 實體標記型別 ID 列表,用於饋送到模型中(當
return_token_type_ids=True
或如果 "entity_token_type_ids" 在self.model_input_names
中)。 -
實體注意力掩碼 — 指定模型應關注哪些實體的索引列表(當
return_attention_mask=True
或如果 "entity_attention_mask" 在self.model_input_names
中)。 -
實體起始位置 — 實體在單詞標記序列中的起始位置列表(當
task="entity_span_classification"
時)。 -
實體結束位置 — 實體在單詞標記序列中的結束位置列表(當
task="entity_span_classification"
時)。 -
overflowing_tokens — 溢位標記序列列表(當指定
max_length
且return_overflowing_tokens=True
時)。 -
num_truncated_tokens — 截斷標記的數量(當指定
max_length
且return_overflowing_tokens=True
時)。 -
special_tokens_mask — 0 和 1 的列表,其中 1 表示新增的特殊標記,0 表示常規序列標記(當
add_special_tokens=True
且return_special_tokens_mask=True
時)。 -
length — 輸入的長度(當
return_length=True
時)
主要方法,用於對一個或多個序列或一對或多對序列進行標記化併為模型準備,具體取決於您要為其準備的任務。