Если вы добавляете токены в токенизатор, вы действительно заставляете токенизатор токенизировать текст по-другому, но это не тот токен, с которым обучался BERT, поэтому вы в основном добавляете шум к входным данным. Вложения слова не обучены, и остальная часть сети никогда не видела их в контексте. Вам понадобится много данных, чтобы научить BERT работать с вновь добавленными словами.
Есть также несколько способов вычисления встраивания одного слова, чтобы он не повредил BERT, как в this paper , но это кажется довольно сложным и не должно иметь никакого значения.
BERT использует словарный запас, основанный на словах, поэтому не должно иметь значения, присутствуют ли слова в словаре как один токен или разбить на несколько слов. Модель, вероятно, увидела разделенное слово во время предварительного обучения и будет знать, что с ним делать.
Что касается ##
-префиксированных токенов, то эти токены могут быть добавлены только в качестве суффикса другого слова. Например, walrus
разделяется на ['wal', '##rus']
, и вам нужно, чтобы оба словаря были в словаре, но не ##wal
или rus
.