#tokenize #huggingface-transformers #transformer #huggingface-tokenizers #roberta
Вопрос:
Я довольно новичок в этом, так что, возможно, мне чего-то совершенно не хватает, но вот моя проблема: я пытаюсь создать класс токенизатора, который использует предварительно обученные модели токенизатора из Huggingface. Затем я хотел бы использовать этот класс в более крупной модели трансформатора для маркирования моих входных данных. Вот код класса класса Роберта(MyTokenizer):
from transformers import AutoTokenizer from transformers import RobertaTokenizer class Roberta(MyTokenizer): def build(self, *args, **kwargs): self.max_length = self.phd.max_length self.untokenized_data = self.questions self.answers def tokenize_and_filter(self): # Initialize the tokenizer with a pretrained model Tokenizer = AutoTokenizer.from_pretrained('roberta') tokenized_inputs, tokenized_outputs = [], [] inputs = Tokenizer(self.questions, padding=True) outputs = Tokenizer(self.answers, padding=True) tokenized_inputs = inputs['input_ids'] tokenized_outputs = outputs['input_ids'] return tokenized_inputs, tokenized_outputs
Когда я вызываю функцию tokenize_and_filter в своей модели трансформатора, как показано ниже
questions = self.get_tokenizer().tokenize_and_filter answers = self.get_tokenizer().tokenize_and_filter print(questions)
и я пытаюсь распечатать маркированные данные, я получаю это сообщение:
lt;bound method Roberta.tokenize_and_filter of lt;MyTokenizer.Roberta.Roberta object at 0x000002779A9E4D30gt;gt;
Похоже, что функция возвращает метод вместо списка или тензора — я пытался передать параметр ‘return_tensors=’tf», я пытался использовать метод tokenizer.encode (), я пробовал как с автотокенизатором, так и с RobertaTokenizer, я пробовал метод batch_encode_plus (), кажется, ничего не работает.
Пожалуйста, помогите!
Комментарии:
1. в чем заключается ошибка?
2. вы не вызываете функцию
tokenize_and_filter
, а только назначаете ее. Для чего предназначен выводself.get_tokenizer().tokenize_and_filter()
(обратите внимание на дополнительное()
в конце)?3. @dennlinger да, я понял сегодня утром :фейспалм -спасибо!
Ответ №1:
похоже, это была действительно глупая ошибка с моей стороны, я забыл поставить круглые скобки при вызове функции
questions = self.get_tokenizer().tokenize_and_filter answers = self.get_tokenizer().tokenize_and_filter
на самом деле должно быть
questions = self.get_tokenizer().tokenize_and_filter() answers = self.get_tokenizer().tokenize_and_filter()
и это работает следующим образом 🙂