Transformers 4.37 中文文档(四十一)(3)https://developer.aliyun.com/article/1565234
资源
- 关于如何微调LukeForEntityPairClassification 用于关系分类的演示笔记本
- 展示如何使用 HuggingFace LUKE 实现重现论文中结果的笔记本
- 文本分类任务指南
- 令牌分类任务指南
- 问答任务指南
- 掩码语言建模任务指南
- 多项选择任务指南
LukeConfig
class transformers.LukeConfig
( vocab_size = 50267 entity_vocab_size = 500000 hidden_size = 768 entity_emb_size = 256 num_hidden_layers = 12 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 use_entity_aware_attention = True classifier_dropout = None pad_token_id = 1 bos_token_id = 0 eos_token_id = 2 **kwargs )
参数
vocab_size
(int
, 可选, 默认为 50267) — LUKE 模型的词汇表大小。定义了在调用 LukeModel 时可以表示的不同令牌数量。entity_vocab_size
(int
, 可选, 默认为 500000) — LUKE 模型的实体词汇表大小。定义了在调用 LukeModel 时可以表示的不同实体数量。hidden_size
(int
, 可选, 默认为 768) — 编码器层和池化层的维度。entity_emb_size
(int
, 可选, 默认为 256) — 实体嵌入的维度数。num_hidden_layers
(int
, 可选, 默认为 12) — Transformer 编码器中的隐藏层数量。num_attention_heads
(int
, optional, 默认为 12) — Transformer 编码器中每个注意力层的注意力头数。intermediate_size
(int
, optional, 默认为 3072) — Transformer 编码器中“中间”(通常称为前馈)层的维度。hidden_act
(str
或Callable
, optional, 默认为"gelu"
) — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu"
、"relu"
、"silu"
和"gelu_new"
。hidden_dropout_prob
(float
, optional, 默认为 0.1) — 嵌入层、编码器和池化器中所有全连接层的 dropout 概率。attention_probs_dropout_prob
(float
, optional, 默认为 0.1) — 注意力概率的 dropout 比率。max_position_embeddings
(int
, optional, 默认为 512) — 该模型可能使用的最大序列长度。通常将其设置为较大的值以防万一(例如,512、1024 或 2048)。type_vocab_size
(int
, optional, 默认为 2) — 在调用 LukeModel 时传递的token_type_ids
的词汇大小。initializer_range
(float
, optional, 默认为 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。layer_norm_eps
(float
, optional, 默认为 1e-12) — 层归一化层使用的 epsilon。use_entity_aware_attention
(bool
, optional, 默认为True
) — 模型是否应该使用LUKE: Deep Contextualized Entity Representations with Entity-aware Self-attention (Yamada et al.)中提出的实体感知自注意机制。classifier_dropout
(float
, optional) — 分类头的 dropout 比率。pad_token_id
(int
, optional, 默认为 1) — 填充标记 id。bos_token_id
(int
, optional, 默认为 0) — 流的起始标记 id。eos_token_id
(int
, optional, 默认为 2) — 流的结束标记 id。
这是用于存储 LukeModel 配置的配置类。根据指定的参数实例化 LUKE 模型,定义模型架构。使用默认值实例化配置将产生类似于 LUKE studio-ousia/luke-base架构的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。
示例:
>>> from transformers import LukeConfig, LukeModel >>> # Initializing a LUKE configuration >>> configuration = LukeConfig() >>> # Initializing a model from the configuration >>> model = LukeModel(configuration) >>> # Accessing the model configuration >>> configuration = model.config
LukeTokenizer
class transformers.LukeTokenizer
( vocab_file merges_file entity_vocab_file task = None max_entity_length = 32 max_mention_length = 30 entity_token_1 = '<ent>' entity_token_2 = '<ent2>' entity_unk_token = '[UNK]' entity_pad_token = '[PAD]' entity_mask_token = '[MASK]' entity_mask2_token = '[MASK2]' errors = 'replace' bos_token = '<s>' eos_token = '</s>' sep_token = '</s>' cls_token = '<s>' unk_token = '<unk>' pad_token = '<pad>' mask_token = '<mask>' add_prefix_space = False **kwargs )
参数
vocab_file
(str
) — 词汇文件的路径。merges_file
(str
) — 合并文件的路径。entity_vocab_file
(str
) — 实体词汇文件的路径。task
(str
, optional) — 您想要准备序列的任务。其中之一是"entity_classification"
、"entity_pair_classification"
或"entity_span_classification"
。如果指定此参数,实体序列将根据给定的实体跨度自动创建。max_entity_length
(int
, optional, 默认为 32) —entity_ids
的最大长度。max_mention_length
(int
, optional, 默认为 30) — 实体跨度内的最大标记数。entity_token_1
(str
, optional, 默认为) — 用于表示单词标记序列中实体跨度的特殊标记。仅当
task
设置为"entity_classification"
或"entity_pair_classification"
时才使用此标记。entity_token_2
(str
,可选,默认为)— 用于表示单词标记序列中实体跨度的特殊标记。仅当
task
设置为"entity_pair_classification"
时才使用此标记。errors
(str
,可选,默认为"replace"
)— 解码字节为 UTF-8 时要遵循的范例。有关更多信息,请参阅bytes.decode。bos_token
(str
,可选,默认为""
)— 在预训练期间使用的序列开头标记。可用作序列分类器标记。
在使用特殊标记构建序列时,这不是用于序列开头的标记。使用的标记是cls_token
。eos_token
(str
,可选,默认为"
"
)— 序列结尾标记。
在使用特殊标记构建序列时,这不是用于序列结尾的标记。使用的标记是sep_token
。sep_token
(str
,可选,默认为""
)— 分隔符标记,在从多个序列构建序列时使用,例如,用于序列分类的两个序列或用于文本和问题的问题回答。它还用作使用特殊标记构建的序列的最后一个标记。cls_token
(str
,可选,默认为""
)— 在进行序列分类(对整个序列而不是每个标记进行分类)时使用的分类器标记。在使用特殊标记构建时,它是序列的第一个标记。unk_token
(str
,可选,默认为""
)— 未知标记。词汇表中没有的标记无法转换为 ID,而是设置为此标记。pad_token
(str
,可选,默认为""
)— 用于填充的标记,例如,当批处理不同长度的序列时。mask_token
(str
,可选,默认为""
)— 用于屏蔽值的标记。这是在使用掩码语言建模训练此模型时使用的标记。这是模型将尝试预测的标记。add_prefix_space
(bool
,可选,默认为False
)— 是否在输入前添加一个初始空格。这允许将前导单词视为任何其他单词。(LUKE 分词器通过前面的空格检测单词的开头)。
构建一个 LUKE 分词器,从 GPT-2 分词器派生,使用字节级字节对编码。
这个分词器已经训练成将空格视为标记的一部分(有点像 sentencepiece),因此一个单词将
在句子开头(无空格)或不是时,将以不同方式编码:
>>> from transformers import LukeTokenizer >>> tokenizer = LukeTokenizer.from_pretrained("studio-ousia/luke-base") >>> tokenizer("Hello world")["input_ids"] [0, 31414, 232, 2] >>> tokenizer(" Hello world")["input_ids"] [0, 20920, 232, 2]
您可以通过在实例化此分词器时或在对某些文本调用它时传递add_prefix_space=True
来避免这种行为,但由于该模型不是以这种方式进行预训练的,因此可能会导致性能下降。
当与is_split_into_words=True
一起使用时,此分词器将在每个单词之前添加一个空格(即使是第一个单词)。
这个分词器继承自 PreTrainedTokenizer,其中包含大多数主要方法。用户应参考这个超类以获取有关这些方法的更多信息。它还创建实体序列,即entity_ids
、entity_attention_mask
、entity_token_type_ids
和entity_position_ids
,供 LUKE 模型使用。
__call__
( text: Union text_pair: Union = None entity_spans: Union = None entity_spans_pair: Union = None entities: Union = None entities_pair: Union = None add_special_tokens: bool = True padding: Union = False truncation: Union = None max_length: Optional = None max_entity_length: Optional = None stride: int = 0 is_split_into_words: Optional = False pad_to_multiple_of: Optional = None return_tensors: Union = None return_token_type_ids: Optional = None return_attention_mask: Optional = 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 ) → export const metadata = 'undefined';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
的每个序列的长度。entities
(List[str]
,List[List[str]]
,可选)— 要编码的实体序列或批次。每个序列由表示实体的字符串组成,即特殊实体(例如 [MASK])或维基百科的实体标题(例如洛杉矶)。如果在构造函数中指定了task
参数,则将忽略此参数。每个序列的长度必须等于entity_spans
的每个序列的长度。如果指定了entity_spans
而没有指定此参数,则实体序列或实体序列批次将通过填充 [MASK] 实体来自动构建。entities_pair
(List[str]
,List[List[str]]
,可选)— 要编码的实体序列或批次。每个序列由表示实体的字符串组成,即特殊实体(例如 [MASK])或维基百科的实体标题(例如洛杉矶)。如果在构造函数中指定了task
参数,则将忽略此参数。每个序列的长度必须等于entity_spans_pair
的每个序列的长度。如果指定了entity_spans_pair
而没有指定此参数,则实体序列或实体序列批次将通过填充 [MASK] 实体来自动构建。max_entity_length
(int
,可选)—entity_ids
的最大长度。add_special_tokens
(bool
,可选,默认为True
)— 在编码序列时是否添加特殊标记。这将使用底层的PretrainedTokenizerBase.build_inputs_with_special_tokens
函数,该函数定义了自动添加到输入 id 的标记。如果要自动添加bos
或eos
标记,这很有用。padding
(bool
,str
或 PaddingStrategy,可选,默认为False
)— 激活和控制填充。接受以下值:
True
或'longest'
:填充到批次中最长的序列(如果只提供了单个序列,则不进行填充)。'max_length'
:填充到指定的最大长度(使用max_length
参数)或者填充到模型的最大可接受输入长度(如果未提供该参数)。False
或'do_not_pad'
(默认):不进行填充(即可以输出具有不同长度序列的批次)。
truncation
(bool
,str
或 TruncationStrategy,可选,默认为False
)— 激活和控制截断。接受以下值:
True
或'longest_first'
: 截断到指定的最大长度,使用参数max_length
,或者使用模型的最大可接受输入长度(如果未提供该参数)。如果提供一对序列(或一批序列),则逐标记截断,从一对序列中最长的序列中删除一个标记。'only_first'
: 截断到指定的最大长度,使用参数max_length
,或者使用模型的最大可接受输入长度(如果未提供该参数)。如果提供一对序列(或一批序列),则仅截断第一个序列。'only_second'
: 截断到指定的最大长度,使用参数max_length
,或者使用模型的最大可接受输入长度(如果未提供该参数)。如果提供一对序列(或一批序列),则仅截断第二个序列。False
或'do_not_truncate'
(默认): 不截断(即,可以输出长度大于模型最大可接受输入大小的批次)。
max_length
(int
, 可选) — 控制截断/填充参数使用的最大长度。
如果未设置或设置为None
,则将使用预定义的模型最大长度,如果截断/填充参数需要最大长度。如果模型没有特定的最大输入长度(如 XLNet),则将禁用截断/填充到最大长度。stride
(int
, 可选, 默认为 0) — 如果与max_length
一起设置为一个数字,当return_overflowing_tokens=True
时返回的溢出标记将包含截断序列末尾的一些标记,以提供截断和溢出序列之间的一些重叠。该参数的值定义重叠标记的数量。is_split_into_words
(bool
, 可选, 默认为False
) — 输入是否已经预分词(例如,已经分成单词)。如果设置为True
,分词器会假定输入已经分成单词(例如,通过空格分割),然后进行分词。这对于命名实体识别或标记分类很有用。pad_to_multiple_of
(int
, 可选) — 如果设置,将序列填充到提供的值的倍数。需要激活padding
。这对于在具有计算能力>= 7.5
(Volta)的 NVIDIA 硬件上启用 Tensor Cores 特别有用。return_tensors
(str
或 TensorType, 可选) — 如果设置,将返回张量而不是 Python 整数列表。可接受的值为:
'tf'
: 返回 TensorFlowtf.constant
对象。'pt'
: 返回 PyTorchtorch.Tensor
对象。'np'
: 返回 Numpynp.ndarray
对象。
return_token_type_ids
(bool
, 可选) — 是否返回 token 类型 ID。如果保持默认设置,将根据特定分词器的默认设置返回 token 类型 ID,由return_outputs
属性定义。
什么是 token 类型 ID?return_attention_mask
(bool
, 可选) — 是否返回注意力掩码。如果保持默认设置,将根据特定分词器的默认设置返回注意力掩码,由return_outputs
属性定义。
什么是注意力掩码?return_overflowing_tokens
(bool
, 可选, 默认为False
) — 是否返回溢出的标记序列。如果提供一对输入 ID 序列(或一批序列),并且truncation_strategy = longest_first
或True
,则会引发错误,而不是返回溢出的标记。return_special_tokens_mask
(bool
, 可选, 默认为False
) — 是否返回特殊标记掩码信息。return_offsets_mapping
(bool
, 可选, 默认为False
) — 是否返回每个标记的(char_start, char_end)
。
这仅适用于继承自 PreTrainedTokenizerFast 的快速分词器,如果使用 Python 的分词器,此方法将引发NotImplementedError
。return_length
(bool
,可选,默认为False
) — 是否返回编码输入的长度。verbose
(bool
,可选,默认为True
) — 是否打印更多信息和警告。**kwargs — 传递给self.tokenize()
方法
返回
BatchEncoding
具有以下字段的 BatchEncoding:
input_ids
— 要馈送到模型的标记 ID 列表。
什么是输入 ID?token_type_ids
— 要馈送到模型的标记类型 ID 列表(当return_token_type_ids=True
或者*token_type_ids
*在self.model_input_names
中时)。
什么是标记类型 ID?attention_mask
— 指定模型应该关注哪些标记的索引列表(当return_attention_mask=True
或者*attention_mask
*在self.model_input_names
中时)。
什么是注意力掩码?entity_ids
— 要馈送到模型的实体 ID 列表。
什么是输入 ID?entity_position_ids
— 输入序列中实体位置的列表,将被馈送到模型中。entity_token_type_ids
— 要馈送到模型的实体标记类型 ID 列表(当return_token_type_ids=True
或者*entity_token_type_ids
*在self.model_input_names
中时)。
什么是标记类型 ID?entity_attention_mask
— 指定模型应该关注哪些实体的索引列表(当return_attention_mask=True
或者*entity_attention_mask
*在self.model_input_names
中时)。
什么是注意力掩码?entity_start_positions
— 单词标记序列中实体的开始位置列表(当task="entity_span_classification"
时)。entity_end_positions
— 单词标记序列中实体的结束位置列表(当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
时)
为模型准备一个或多个序列或一个或多个序列对的主要方法,具体取决于您要为其准备的任务。
save_vocabulary
( save_directory: str filename_prefix: Optional = None )
Transformers 4.37 中文文档(四十一)(5)https://developer.aliyun.com/article/1565237