Transformers documentation
PhoBERT
Эта модель была опубликована в HF papers 02.03.2020 и добавлена в Hugging Face Transformers 16.11.2020.
PhoBERT
Обзор
Модель PhoBERT была предложена в работе PhoBERT: Pre-trained language models for Vietnamese авторами Dat Quoc Nguyen и Anh Tuan Nguyen.
Аннотация из статьи следующая:
Мы представляем PhoBERT в двух версиях — PhoBERT-base и PhoBERT-large — первые публичные крупномасштабные моноязычные языковые модели, предварительно обученные для вьетнамского языка. Экспериментальные результаты показывают, что PhoBERT стабильно превосходит лучшую на сегодняшний день предварительно обученную мультиязычную модель XLM-R (Conneau et al., 2020) и улучшает текущий уровень качества (state-of-the-art) по нескольким задачам NLP, специфичным для вьетнамского языка, включая определение частей речи (Part-of-speech tagging), синтаксический анализ зависимостей (Dependency parsing), распознавание именованных сущностей (Named-entity recognition) и вывод на естественном языке (Natural language inference).
Эта модель была предоставлена пользователем 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
класс transformers.PhobertTokenizer
< source >( 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.При построении последовательности с использованием специальных токенов этот токен не используется для начала последовательности. В качестве токена начала последовательности используется
cls_token. - eos_token (
str, необязательный, по умолчанию"</s>") — Токен конца последовательности. При построении последовательности с использованием специальных токенов этот токен не используется для обозначения конца последовательности. Вместо него используется sep_token.При построении последовательности с использованием специальных токенов для обозначения конца последовательности не используется этот токен. Используется токен
sep_token. - sep_token (
str, необязательный, по умолчанию"</s>") — Токен-разделитель, который используется при построении последовательности из нескольких последовательностей, например, двух последовательностей для классификации последовательностей или текста и вопроса для ответа на вопросы. Он также используется в качестве последнего токена в последовательности, построенной со специальными токенами. - cls_token (
str, необязательный, по умолчанию"<s>") — Токен классификатора, используемый при классификации последовательности (классификация всей последовательности, а не посимвольная классификация). Это первый токен последовательности, если она построена со специальными токенами. - unk_token (
str, необязательный, по умолчанию"<unk>") — Токен неизвестного слова. Токен, отсутствующий в словаре, не может быть преобразован в ID, поэтому вместо него используется этот токен. - pad_token (
str, необязательный, по умолчанию"<pad>") — Токен, используемый для выравнивания, например, при пакетной обработке последовательностей разной длины. - mask_token (
str, необязательный, по умолчанию"<mask>") — Токен, используемый для маскирования значений. Это тот токен, который применяется при обучении модели с использованием masked language modeling. Именно этот токен модель будет пытаться предсказать.
Создайте токенизатор PhoBERT. Основан на алгоритме Byte-Pair-Encoding.
Этот токенизатор наследуется от PreTrainedTokenizer, который содержит большинство основных методов. За дополнительной информацией об этих методах следует обращаться к этому суперклассу.
Загружает существующий словарь из текстового файла и добавляет его символы в этот экземпляр.
build_inputs_with_special_tokens
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Параметры
- token_ids_0 (
list[int]) — Список идентификаторов, к которым будут добавлены специальные токены. - token_ids_1 (
list[int], необязательный) — Необязательный второй список идентификаторов для пар последовательностей.
Возвращает
list[int]
Список идентификаторов входных токенов с соответствующими специальными токенами.
Создайте входные данные модели из последовательности или пары последовательностей для задач классификации последовательностей, объединяя их и добавляя специальные токены. Последовательность PhoBERT имеет следующий формат:
- одна последовательность:
<s> X </s> - пара последовательностей:
<s> A </s></s> B </s>
Преобразует последовательность токенов (строку) в одну строку.
create_token_type_ids_from_sequences
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Создаёт маску на основе двух переданных последовательностей для использования в задаче классификации пар последовательностей. PhoBERT не использует идентификаторы типов токенов, поэтому возвращается список нулей.
get_special_tokens_mask
< source >( token_ids_0: listtoken_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → list[int]
Параметры
- token_ids_0 (
list[int]) — Список идентификаторов. - token_ids_1 (
list[int], необязательный) — Необязательный второй список идентификаторов для пар последовательностей. - already_has_special_tokens (
bool, необязательный, по умолчаниюFalse) — Указывает, содержит ли список токенов уже отформатированные специальные токены для модели.
Возвращает
list[int]
Список целых чисел в диапазоне [0, 1]: 1 для специального токена, 0 для токена последовательности.
Получить идентификаторы последовательностей из списка токенов, в который не добавлены специальные токены. Этот метод вызывается при добавлении специальных токенов с помощью метода prepare_for_model токенизатора.