Как извлечь индексы ввода-вывода позиции из текстового токенизатора 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]']

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

См. также:  Вывод подсетей Azure со ссылками на присоединенную виртуальную сеть, таблицу маршрутизации и NSG.
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. had

    Оказалось, что у токенизатора есть параметр return_offsets_mapping, это решает мою проблему.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: