如何在解码为 [UNK] bert tokenizer 的 vocab.txt 中添加标记

how to add tokens in vocab.txt which decoded as [UNK] bert tokenizer

i 正在解码来自 bert tokenizer 的标记化标记,它为欧元符号提供 [UNK]。但我尝试在 vocab.txt 文件中添加 ##€ 标记。但它没有反映在预测结果中,与之前的结果相同,它再次给出 [UNK]。请让我知道要解决这个问题,我是否需要再次 微调 模型以反映 预测 中的变化。直到现在我都在避免微调,因为它需要超过 10 个小时。 提前致谢

使用分词器的 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))