Должен ли размер vocab точно соответствовать размеру vocab_size в файле bert_config.json?

#bert-language-model #huggingface-transformers #transformer

Вопрос:

Я вижу чужую модель БЕРТА, в которой vocab.txt размер файла 22110, но значение vocab_size параметра в файле bert_config.json равно 21128.

Я понимаю, что эти два числа должны быть абсолютно одинаковыми. Это правда?

Комментарии:

1. Возможно, этот человек удалил специальные токены из vocab.txt и добавил их позже во время инициализации токенизатора? Каков размер вокаба инициализированного токенизатора?

Ответ №1:

Если это действительно БЕРТ, который использует токенизатор слов, то да. Разная длина словаря и vocab_size в конфигурации означали бы, что существуют либо вложения, которые никогда не могут быть использованы, либо что существуют элементы словаря без каких-либо вложений.

В этом случае вы не увидите сообщения об ошибке, поскольку модель и маркер загружаются отдельно. Таблица вложений BERT содержит 8 вложений, которые «недоступны».

Однако обратите внимание, что в модели может использоваться какой-то очень нестандартный токенизатор, который сохраняет словарный запас таким образом, что он на 8 пунктов короче (хотя это маловероятно).

Комментарии:

1. Не могли бы вы более конкретно сказать о том, что «это экономит словарный запас таким образом, что он на 8 пунктов короче»? Почему это «на 8 пунктов короче»?

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