я декодировал токенизированные токены из tokenizer bert, и он выдавал [UNK] вместо символа €. но я попытался добавить токен ##€ в файл vocab.txt. но это не было отражено в прогнозе, результат был таким же, как и предыдущий, он снова давал [UNK]. пожалуйста, дайте мне знать, чтобы решить эту проблему, мне нужно было точно настроить модель, чтобы снова отразить изменения в прогнозе. до сих пор я снова избегал тонкой настройки, потому что это занимает более 10 часов. заранее спасибо
как добавить токены в vocab.txt, который расшифровывается как [UNK] bert tokenizer
comment
Не могли бы вы поделиться кодом, который вы использовали для добавления токена в словарь. Не могли бы вы предоставить минимальный воспроизводимый пример? (stackoverflow.com/help/minimal-reproducible-example)
- person Ashwin Geet D'Sa   schedule 04.05.2021
Ответы (1)
Используйте add_tokens функция токенизатора, чтобы избежать неизвестных токенов:
from transformers import BertTokenizer
t = BertTokenizer.from_pretrained('bert-base-uncased')
print(t.tokenize("This is an example with an emoji ????."))
t.add_tokens(['????'])
print(t.tokenize("This is an example with an emoji ????."))
Выход:
['this', 'is', 'an', 'example', 'with', 'an', 'em', '##oj', '##i', '[UNK]', '.']
['this', 'is', 'an', 'example', 'with', 'an', 'em', '##oj', '##i', '????', '.']
Имейте в виду, что вам также необходимо изменить размер модели, чтобы ввести ее в новый токен с помощью resize_token_embeddings:
model.resize_token_embeddings(len(t))
person
cronoik
schedule
12.05.2021
Спасибо @cronoik за помощь, я обязательно попробую это в будущем, но сейчас я добавил это слово в файл vocab.txt и снова настроил модель. это решило мою проблему. но ваша идея также очень хороша, чтобы сэкономить время.
- person Ramakant Shakya; 01.08.2021