Transformers documentation
mLUKE
Эта модель была опубликована в HF papers 15.10.2021 и добавлена в Hugging Face Transformers 07.12.2021.
mLUKE
Обзор
Модель mLUKE была предложена в работе mLUKE: The Power of Entity Representations in Multilingual Pretrained Language Models авторами Ryokan Ri, Ikuya Yamada и Yoshimasa Tsuruoka. Это многоязычное расширение модели LUKE, обученной на основе XLM-RoBERTa.
Модель основана на XLM-RoBERTa и дополнена эмбеддингами сущностей, что способствует улучшению качества работы на различных задачах, требующих рассуждений о сущностях, таких как распознавание именованных сущностей, извлекательное ответвление на вопросы, классификация отношений и заполнение пропусков в стиле cloze.
Аннотация из статьи следующая:
Недавние исследования показали, что многоязычные предобученные языковые модели можно эффективно улучшить за счёт информации о межъязычном выравнивании, полученной из сущностей Википедии. Однако существующие методы используют информацию о сущностях только на этапе предобучения и не применяют сущности явно в задачах нижнего уровня. В данной работе мы исследуем эффективность использования представлений сущностей для межъязыковых задач нижнего уровня. Мы обучаем многоязыковую языковую модель, поддерживающую 24 языка, с использованием представлений сущностей и показываем, что модель стабильно превосходит предобученные модели, основанные на словах, в различных задачах межъязыкового переноса. Мы также анализируем модель, и ключевой вывод состоит в том, что включение представлений сущностей во вход позволяет извлекать более независимые от языка признаки. Мы также оцениваем модель на многоязычной задаче с пропуском (cloze) с использованием набора данных mLAMA. Мы показываем, что промпт на основе сущностей с большей вероятностью вызывает корректные фактические знания, чем использование только представлений слов.
Эта модель была предоставлена пользователем ryo0634. Исходный код можно найти здесь.
Советы по использованию
Можно напрямую подставить веса mLUKE в модель LUKE, как показано ниже:
from transformers import LukeModel
model = LukeModel.from_pretrained("studio-ousia/mluke-base", device_map="auto")Обратите внимание, что у mLUKE есть собственный токенизатор, MLukeTokenizer. Вы можете инициализировать его следующим образом:
from transformers import MLukeTokenizer
tokenizer = MLukeTokenizer.from_pretrained("studio-ousia/mluke-base")Поскольку архитектура mLUKE эквивалентна архитектуре LUKE, все советы, примеры кода и ноутбуки можно найти на странице документации LUKE.
MLukeTokenizer
класс transformers.MLukeTokenizer
< source >( bos_token = '<s>'eos_token = '</s>'sep_token = '</s>'cls_token = '<s>'unk_token = '<unk>'pad_token = '<pad>'mask_token = '<mask>'task = Nonemax_entity_length = 32max_mention_length = 30entity_1_token = '<ent>'entity_2_token = '<ent2>'entity_unk_token = '[UNK]'entity_pad_token = '[PAD]'entity_mask_token = '[MASK]'entity_mask2_token = '[MASK2]'vocab: str | dict | list | None = Noneentity_vocab: str | dict | list | None = None**kwargs )
Параметры
- vocab_file (
str) — Путь к файлу словаря. - entity_vocab_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. Именно этот токен модель будет пытаться предсказать. - task (
str, необязательный) — Задача, для которой вы хотите подготовить последовательности. Одно из значений"entity_classification","entity_pair_classification"или"entity_span_classification". Если вы укажете этот аргумент, последовательность сущностей будет создана автоматически на основе заданного диапазона сущностей. - max_entity_length (
int, необязательный, по умолчанию 32) — Максимальная длинаentity_ids. - max_mention_length (
int, необязательный, по умолчанию 30) — Максимальное количество токенов внутри диапазона сущности. - entity_1_token (
str, необязательный, по умолчанию<ent>) — Специальный токен, используемый для представления сущности в последовательности токенов слов. Этот токен используется только тогда, когдаtaskустановлен в значение"entity_classification"или"entity_pair_classification". - entity_2_token (
str, необязательный, по умолчанию<ent2>) — Специальный токен, используемый для представления сущности в последовательности токенов слов. Этот токен используется только тогда, когдаtaskустановлен в значение"entity_pair_classification". - additional_special_tokens (
list[str], необязательный, по умолчанию["<s>NOTUSED", "</s>NOTUSED"]) — Дополнительные специальные токены, используемые токенизатором. - sp_model_kwargs (
dict, необязательный) — будет передан в методSentencePieceProcessor.__init__(). Python-обёртка для SentencePiece может использоваться, в том числе, для настройки:-
enable_sampling: Включает субсловарную регуляризацию. -
nbest_size: Параметры выборки для униграмм. Недействительно для BPE-Dropout.nbest_size = {0,1}: выборка не выполняется.nbest_size > 1: выборка из результатов nbest_size.nbest_size < 0: предполагается, что nbest_size бесконечен, и выборка выполняется из всех гипотез (решётки) с использованием алгоритма forward-filtering-and-backward-sampling.
-
alpha: Параметр сглаживания для выборки униграмм и вероятность отбрасывания (dropout) операций слияния для BPE-dropout.
-
- sp_model (
SentencePieceProcessor) — Процессор SentencePiece, используемый для каждого преобразования (строки, токены и ID).
Адаптировано из XLMRobertaTokenizer и LukeTokenizer. Основано на SentencePiece.
Этот токенизатор наследуется от PreTrainedTokenizer, который содержит большинство основных методов. За дополнительной информацией об этих методах следует обращаться к этому суперклассу.
__call__
< source >( text: str | list[str]text_pair: str | list[str] | None = Noneentity_spans: list[tuple[int, int]] | list[list[tuple[int, int]]] | None = Noneentity_spans_pair: list[tuple[int, int]] | list[list[tuple[int, int]]] | None = Noneentities: list[str] | list[list[str]] | None = Noneentities_pair: list[str] | list[list[str]] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy | None = Nonemax_length: int | None = Nonemax_entity_length: int | None = Nonestride: int = 0is_split_into_words: bool | None = Falsepad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_offsets_mapping: bool = Falsereturn_length: bool = Falseverbose: bool = True**kwargs ) → BatchEncoding
Возвращает
BatchEncoding со следующими полями:
-
input_ids — список идентификаторов токенов, которые передаются в модель.
-
token_type_ids — список идентификаторов типов токенов, передаваемых в модель (если
return_token_type_ids=Trueили если “token_type_ids” входит вself.model_input_names). -
attention_mask — список индексов, указывающих, на какие токены модель должна обращать внимание (когда
return_attention_mask=Trueили если “attention_mask” входит вself.model_input_names). -
entity_ids — список идентификаторов сущностей, которые передаются в модель.
-
entity_position_ids — список позиций сущностей во входной последовательности, передаваемой в модель.
-
entity_token_type_ids — список идентификаторов типов токенов сущностей, передаваемых в модель (если
return_token_type_ids=Trueили если “entity_token_type_ids” входит вself.model_input_names). -
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 — список нулей и единиц, где 1 указывает на добавленные специальные токены, а 0 — на обычные токены последовательности (когда
add_special_tokens=Trueиreturn_special_tokens_mask=True). -
length — длина входных данных (когда
return_length=True)
add_special_tokens (bool, необязательный, по умолчанию True):
Указывает, следует ли добавлять специальные токены при кодировании последовательностей. Для этого используется функция PretrainedTokenizerBase.build_inputs_with_special_tokens, которая определяет, какие токены автоматически добавляются к входным идентификаторам. Это полезно, если вы хотите автоматически добавлять токены 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, необязательный): Управляет максимальной длиной, используемой одним из параметров усечения/дополнения.
If left unset or set to None, this will use the predefined model maximum length if a maximum length
is required by one of the truncation/padding parameters. If the model has no specific maximum input
length (like XLNet) truncation/padding to a maximum length will be deactivated.
stride (int, optional, defaults to 0):
If set to a number along with max_length, the overflowing tokens returned when return_overflowing_tokens=True will contain some tokens from the end of the truncated sequence
returned to provide some overlap between truncated and overflowing sequences. The value of this
argument defines the number of overlapping tokens.
is_split_into_words (bool, optional, defaults to False):
Whether or not the input is already pre-tokenized (e.g., split into words). If set to True, the
tokenizer assumes the input is already split into words (for instance, by splitting it on whitespace)
which it will tokenize. This is useful for NER or token classification.
pad_to_multiple_of (int, optional):
If set will pad the sequence to a multiple of the provided value. Requires padding to be activated.
This is especially useful to enable the use of Tensor Cores on NVIDIA hardware with compute capability >= 7.5 (Volta).
padding_side (str, optional):
The side on which the model should have padding applied. Should be selected between [‘right’, ‘left’].
Default value is picked from the class attribute of the same name.
return_tensors (str or TensorType, optional):
If set, will return tensors instead of list of python integers. Acceptable values are:
'pt': возвращает объектыtorch.TensorPyTorch.'np': возвращает объекты Numpynp.ndarray.
return_token_type_ids (bool, необязательный):
Определяет, следует ли возвращать идентификаторы типов токенов. Если значение не задано, идентификаторы типов токенов будут возвращены в соответствии со значением по умолчанию конкретного токенизатора, заданным атрибутом return_outputs.
Что такое идентификаторы типов токенов? return_attention_mask (bool, необязательный):
Следует ли возвращать маску внимания. Если значение не задано, маска внимания будет возвращена согласно значению по умолчанию для конкретного токенизатора, определяемому атрибутом return_outputs.
Что такое маски внимания? return_overflowing_tokens (bool, необязательный, по умолчанию False):
Возвращать ли переполненные последовательности токенов. Если предоставлена пара последовательностей входных идентификаторов (или пакет пар) с 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()
Сохраняйте только файл словаря сущностей. Файл tokenizer.json сохраняется родительским TokenizersBackend.