Nlp BertWordPieceTokenizer vs HuggingFace的BertTokenizer

Nlp BertWordPieceTokenizer vs HuggingFace的BertTokenizer,nlp,huggingface-transformers,bert-language-model,huggingface-tokenizers,Nlp,Huggingface Transformers,Bert Language Model,Huggingface Tokenizers,我有以下几段代码,试图理解BertWordPieceTokenizer和BertTokenizer之间的区别 BertWordPieceTokenizer(基于锈蚀) 从Tokenizer导入WordPieceTokenizer sequence=“您好,大家好!当您使用相同的词汇表(在您的示例中,您使用了bert-base-uncased-vocab.txt和bert-base-cased-vocab.txt)时,标记器应该生成相同的输出。主要区别在于,包中的标记器与源中的标记器相比速度更快,

我有以下几段代码,试图理解BertWordPieceTokenizer和BertTokenizer之间的区别

BertWordPieceTokenizer(基于锈蚀)
从Tokenizer导入WordPieceTokenizer

sequence=“您好,大家好!当您使用相同的词汇表(在您的示例中,您使用了bert-base-uncased-vocab.txt和bert-base-cased-vocab.txt)时,标记器应该生成相同的输出。主要区别在于,包中的标记器与源中的标记器相比速度更快,因为它们是在Rust中实现的

修改示例时,您将看到它们生成相同的
id
和其他属性(编码对象),而transformers标记器只生成了
id
的a列表:

从Tokenizer导入WordPieceTokenizer

sequence=“大家好!你怎么样?这是我犯的一个错误。然而,参考您的代码,我的问题更多的是为什么tokenizerBT.encode(sequence)在BT的情况下提供令牌,而在BWPT的情况下,我们必须执行tokenizerBW.encode(sequence).ids来获得令牌。这仅仅是一个不同实现的例子……一个tokenizerBT.encode直接提供令牌确实令人困惑,但是在BWPT的情况下,它不这样做,所以很抱歉,我没有首先读出这一点。我已经扩展了我的回答来解决这个问题。