Как извлечь индексы ввода-вывода позиции из текстового токенизатора huggingface transformer?

Я хочу решить задачу прогнозирования стресса с предварительно обученным русским бертом.

Входные данные выглядят так:

граммов сверху|000100000001000

Нули означают отсутствие стресса. Единицы представляют характер стрессовой позиции.

Я хочу отобразить его как слово -> индекс числа гласных

Так будет вроде граммов -> 1 сверху -> 1

Итак, для каждого токена это должен быть линейный слой с softmax.

Я понимаю эту часть, но мне сложно иметь дело с предварительной обработкой текста, потому что текстовый токенизатор может разбить слово на токены подслов.

Токенизатор принимает входную строку и возвращает такие токены

bert_tokenizer.encode(‘граммов сверху’) -> [101, 44505, 26656, 102]

Итак, как получить сопоставление позиций между входными символами и словами?

Желаемый результат должен быть таким: [[0, 7], [8, 14]]

Я пытался читать документы https://huggingface.co/transformers/main_classes/tokenizer.html</ а>

И нашел функцию convert_ids_to_tokens Она работает как

encoded = bert_tokenizer.encode(‘граммов сверху’) bert_tokenizer.convert_ids_to_tokens(encoded) -> [‘[CLS]’, ‘граммов’, ‘сверху’, ‘[SEP]’]

Но я не уверен, как использовать исходную строку и индексы напряжения для вычисления номера позиции напряжения для токена.

Источник: ledsshop.ru

Стиль жизни - Здоровье!