Transformers documentation

PhoBERT

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

该模型于 2020-03-02 在 HF papers 上发布,并于 2020-11-16 贡献至 Hugging Face Transformers。

PhoBERT

概述

PhoBERT 模型由 Dat Quoc Nguyen 和 Anh Tuan Nguyen 在 PhoBERT: Pre-trained language models for Vietnamese 中提出。

该论文的摘要如下:

我们发布了 PhoBERT 的两个版本:PhoBERT-base 和 PhoBERT-large,这是首批公开的大规模越南语单语预训练语言模型。实验结果表明,PhoBERT 始终优于近期表现最佳的预训练多语言模型 XLM-R(Conneau et al., 2020),并在多项越南语特定的 NLP 任务中刷新了当前最佳水平,包括词性标注、依存句法分析、命名实体识别和自然语言推理。

该模型由 dqnguyen 贡献。原始代码可在此处找到。

使用示例

import torch

from transformers import AutoModel, AutoTokenizer


phobert = AutoModel.from_pretrained("vinai/phobert-base", device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("vinai/phobert-base")

# INPUT TEXT MUST BE ALREADY WORD-SEGMENTED!
line = "Tôi là sinh_viên trường đại_học Công_nghệ ."

input_ids = torch.tensor([tokenizer.encode(line)])

with torch.no_grad():
    features = phobert(input_ids)  # Models outputs are now tuples

PhoBERT 的实现与 BERT 相同,区别仅在于分词。有关配置类及其参数的信息,请参阅 BERT 文档。PhoBERT 专用的分词器将在下文进行说明。

PhobertTokenizer

class transformers.PhobertTokenizer

< >

( vocab_filemerges_filebos_token = '<s>'eos_token = '</s>'sep_token = '</s>'cls_token = '<s>'unk_token = '<unk>'pad_token = '<pad>'mask_token = '<mask>'**kwargs )

参数

  • vocab_file (str) — 词汇表文件的路径。
  • merges_file (str) — 合并文件的路径。
  • bos_token (str, 可选, 默认为 "<s>") — 预训练期间使用的序列起始标记。也可用作序列分类标记。

    在构建序列时,如果使用了特殊标记,序列开头使用的并不是这个标记。实际使用的标记是 cls_token。

  • eos_token (str, 可选, 默认为 "</s>") — 序列结束标记。在构建包含特殊标记的序列时,序列结束使用的并非此标记,而是 sep_token。

    在构建包含特殊标记的序列时,序列末尾使用的并不是这个标记。 实际使用的是 sep_token。

  • sep_token (str,可选,默认为 "</s>") — 分隔符 token,用于从多个序列构建序列时,例如用于序列分类的两个序列,或用于问答的文本和问题。它也用作使用特殊 token 构建的序列的最后一个 token。
  • cls_token (str,可选,默认为 "<s>") — 用于序列分类(对整个序列进行分类,而非逐 token 分类)的分类器 token。当使用特殊 token 构建序列时,它是序列的第一个 token。
  • unk_token (str,可选,默认为 "<unk>") — 未知标记。不在词汇表中的标记无法转换为 ID,因此会被设置为该标记。
  • pad_token (str,可选,默认为 "<pad>") — 用于填充的标记,例如在对长度不同的序列进行批处理时。
  • mask_token (str, 可选,默认为 "<mask>") — 用于掩码值的标记。这是在以掩码语言建模方式训练该模型时所使用的标记,也是模型将尝试预测的标记。

构建一个 PhoBERT 分词器。基于字节对编码(Byte-Pair-Encoding)。

该分词器继承自 PreTrainedTokenizer,其中包含了大部分主要方法。用户应参考该父类以获取有关这些方法的更多信息。

add_from_file

< >

( f )

从文本文件加载现有的字典,并将其符号添加到当前实例中。

build_inputs_with_special_tokens

< >

( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]

参数

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

返回值

list[int]

包含相应特殊标记的输入 ID列表。

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

  • 单条序列:<s> X </s>
  • 序列对:<s> A </s></s> B </s>

convert_tokens_to_string

< >

( tokens )

将单个字符串中的标记序列(字符串)进行转换。

create_token_type_ids_from_sequences

< >

( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]

参数

  • token_ids_0 (list[int]) — ID 列表。
  • token_ids_1 (list[int], 可选) — 用于序列对的可选第二组 ID 列表。

返回值

list[int]

零列表。

根据传入的两个序列创建掩码,用于序列对分类任务。PhoBERT 不使用 token type ids,因此返回一个全零列表。

get_special_tokens_mask

< >

( token_ids_0: listtoken_ids_1: list[int] | None = Nonealready_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) — 指示 token 列表是否已针对该模型格式化为包含特殊 token 的形式。

返回值

list[int]

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

从未添加特殊标记的标记列表中获取序列 ID。当使用分词器的 prepare_for_model 方法添加特殊标记时,会调用此方法。

Update on GitHub