Transformers 文档

RetriBERT

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

RetriBERT

PyTorch

该模型仅处于维护模式,因此我们不会接受任何更改其代码的新 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 (strfunction, 可选, 默认为 "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) — 传入 BertModeltoken_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 分词器。

RetriBertTokenizerBertTokenizer 相同,并运行端到端分词:标点符号分割和 WordPiece。

此分词器继承自 PreTrainedTokenizer,其中包含大多数主要方法。用户应参阅此超类以获取有关这些方法的更多信息。

build_inputs_with_special_tokens

< >

( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None ) List[int]

参数

  • token_ids_0 (List[int]) — 将添加特殊 token 的 ID 列表。
  • token_ids_1 (List[int], 可选) — 用于序列对的可选第二组 ID。

返回

List[int]

带有适当特殊标记的输入ID列表。

通过连接和添加特殊标记,从一个序列或一对序列构建用于序列分类任务的模型输入。BERT 序列的格式如下:

  • 单个序列:[CLS] X [SEP]
  • 序列对:[CLS] A [SEP] B [SEP]

convert_tokens_to_string

< >

( tokens )

将标记序列(字符串)转换为单个字符串。

get_special_tokens_mask

< >

( token_ids_0: list token_ids_1: typing.Optional[list[int]] = None already_has_special_tokens: bool = False ) List[int]

参数

  • token_ids_0 (List[int]) — ID 列表。
  • token_ids_1 (List[int], 可选) — 用于序列对的可选第二组 ID。
  • already_has_special_tokens (bool, 可选, 默认为 False) — 标记列表是否已经使用特殊标记进行格式化以适应模型。

返回

List[int]

一个范围为 [0, 1] 的整数列表:1 表示特殊标记,0 表示序列标记。

从没有添加特殊标记的标记列表中检索序列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_ 库支持)。

RetriBertTokenizerFastBertTokenizerFast 完全相同,并运行端到端分词:标点符号分割和 Wordpiece。

此分词器继承自 PreTrainedTokenizerFast,其中包含大多数主要方法。用户应参考此超类以获取有关这些方法的更多信息。

build_inputs_with_special_tokens

< >

( token_ids_0 token_ids_1 = None ) List[int]

参数

  • token_ids_0 (List[int]) — 将添加特殊标记的 ID 列表。
  • token_ids_1 (List[int], 可选) — 用于序列对的可选第二组 ID。

返回

List[int]

带有适当特殊标记的输入ID列表。

通过连接和添加特殊标记,从一个序列或一对序列构建用于序列分类任务的模型输入。BERT 序列的格式如下:

  • 单个序列:[CLS] X [SEP]
  • 序列对:[CLS] A [SEP] B [SEP]

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()

    什么是输入 ID?

  • 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“

在尝试将每个查询与其对应的文档以及批处理中的每个文档与其对应的查询进行匹配时获得的双向交叉熵损失。

< > 在 GitHub 上更新