Я попытался добавить новые слова в Bert tokenizer vocab
. Я вижу, что длина словаря увеличивается, однако я не могу найти новое добавленное слово в словаре.
tokenizer.add_tokens(['covid', 'wuhan'])
v = tokenizer.get_vocab()
print(len(v))
'covid' in tokenizer.vocab
Выход:
30524
False
Вы называете две разные вещи с помощью tokenizer.vocab
и tokenizer.get_vocab()
. Первый содержит базовый словарь без добавленных токенов, а другой содержит базовый словарь с добавленными токенами.
from transformers import BertTokenizer
t = BertTokenizer.from_pretrained('bert-base-uncased')
print(len(t.vocab))
print(len(t.get_vocab()))
print(t.get_added_vocab())
t.add_tokens(['covid'])
print(len(t.vocab))
print(len(t.get_vocab()))
print(t.get_added_vocab())
Выход:
30522
30522
{}
30522
30523
{'covid': 30522}
@JagadishVishwanatham Вы можете просмотреть все добавленные токены, как показано в моем ответе, с помощью t.get_added_vocab()
или t.convert_ids_to_tokens(30522)
. за один токен.
спасибо за ответ. Но я вижу, что размер токенизатора увеличился, но когда я делаю tokenizer.ids_to_tokens[30522] после добавления токена, я получаю KeyError: 30522 . Что я могу делать неправильно здесь. Как увидеть добавленный токен?