首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用BertTokenizer加载Tokenizer模型?

如何使用BertTokenizer加载Tokenizer模型?
EN

Stack Overflow用户
提问于 2021-09-06 09:57:53
回答 1查看 197关注 0票数 1

我使用Tokenizer训练Tokenizer并保存模型,如下所示

代码语言:javascript
运行
复制
tokenizer = Tokenizer(BPE())
tokenizer.pre_tokenizer = Whitespace()
tokenizer.decoder = ByteLevelDecoder()
trainer = BpeTrainer(vocab_size=25000, show_progress=True, initial_alphabet=ByteLevel.alphabet())

tokenizer.train(files=["/content/drive/MyDrive/Work/NLP/bert_practice/data/doc.txt"], trainer=trainer)

tokenizer.model.save('/content/drive/MyDrive/Work/NLP/bert_practice/data/tokenizer')

['/content/drive/MyDrive/Work/NLP/bert_practice/data/tokenizer/vocab.json',
 '/content/drive/MyDrive/Work/NLP/bert_practice/data/tokenizer/merges.txt']

它工作得很好:

代码语言:javascript
运行
复制
tokenizer.encode("东风日产2021款劲客正式上市").tokens
['东风日产', '2021款', '劲客', '正式上市']

但当我通过transformers的BertTokenizer加载模型时,如下所示:

代码语言:javascript
运行
复制
from transformers import BertTokenizer

tokenizer = BertTokenizer(
    vocab_file="/content/drive/MyDrive/Work/NLP/bert_practice/data/tokenizer/vocab.json",
    #merges_file="/content/drive/MyDrive/Work/NLP/bert_practice/data/tokenizer/merges.txt",
)

它总是这样预测'UNK‘:

代码语言:javascript
运行
复制
tokenizer.tokenize("奥迪A5有着年轻时尚的外观,动力强、操控也很棒")
['[UNK]',
 '[UNK]',
 '[UNK]',
 '[UNK]',
 '[UNK]',
 '[UNK]',
 '[UNK]',
 '[UNK]',
 '[UNK]',
 '[UNK]',
 '[UNK]',
 '[UNK]',
 '[UNK]',
 '[UNK]',
 '[UNK]',
 '[UNK]',
 '[UNK]',
 '[UNK]',
 '[UNK]',
 '[UNK]',
 '[UNK]',
 '[UNK]']

有人能解决这个问题吗?任何解决这个问题的建议都会很有帮助。

EN

回答 1

Stack Overflow用户

发布于 2021-09-06 14:52:45

您正在尝试将基于BPE的记号赋值器读入BERTTokenizer,但BERTTokenizer不使用BPE。它使用WordPiece令牌化器。所以,这是不兼容的。请从HuggingFace库中查看此链接。https://huggingface.co/transformers/tokenizer_summary.html#wordpiece

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69072624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档