变形金刚 AutoTokenizer.tokenize 引入了额外的角色

transformers AutoTokenizer.tokenize introducing extra characters

我正在使用 HuggingFace 转换器 AutoTokenizer 来标记小段文本。然而,这种标记化在单词中间错误地分裂并将 # 字符引入到标记中。我试过几种不同的模型,结果都一样。

这里是一段文本和从中创建的标记的示例。

CTO at TLR Communications Pty Ltd
['[CLS]', 'CT', '##O', 'at', 'T', '##LR', 'Communications', 'P', '##ty', 'Ltd', '[SEP]']

这是我用来生成令牌的代码

tokenizer = AutoTokenizer.from_pretrained("tokenizer_bert.json")
tokens = tokenizer.tokenize(tokenizer.decode(tokenizer.encode(sequence)))

这不是错误,而是一项功能。 BERT 和其他转换器使用 WordPiece 标记化算法将字符串标记为:(1) 已知词;或 (2) 分词器词汇表中未知单词的“单词片段”。

在您的考试中,单词“CTO”、“TLR”和“Pty”不在分词器词汇表中,因此 WordPiece 将它们拆分为子词。例如。第一个子词是“CT”,另一部分是“##O”,其中“##”表示子词连接到前导。

这是一个很棒的功能,可以表示任何字符串。