在用Transformer RoBERTa的时候,使用RoBERTaTokenizer,分词之后每个token前面会出现奇奇怪怪的“G”(上面还有个点号,其实试unicode 字符\u0120
)
原因是RoBERTa和GPT-2等一样,词表用的是BPE(original BPE paper by Sennrich et al),它不同于我们用的普通BERT的tokenizer,即WordPiece vocabulary,把未知的word不停按照subword分下去(比方说“#T”,"##ok",按照分的级数确定前面“#”的个数)
其实在下载RoBERTa的时候就会发现,它和普通BERT相比,下载文件有点不一样
普通BERT:
RoBERTa:
RoBERTa的vocab里面打开会发现所有的word前面都会有个"G",同时它还多了个merge.txt
还有为什么会出现“G”?
有关tokenization:
机器如何认识文本 ?NLP中的Tokenization方法总结
参考资料
github-为什么会出现“G”
github-为什么要有merge.txt
Difficulty in understanding the tokenizer used in Roberta model
Tokenization issue with RoBERTa and DistilRoBERTa