BertTokenizer与词嵌入是否相似?不同预训练版本的BertTokenizer有何区别?
BertTokenizer相关问题解答
问题1:encode_plus返回结果和one-hot查嵌入矩阵结果的相似性
二者存在强关联,属于模型预处理的上下游步骤,逻辑高度绑定:
tokenizer.encode_plus("Hello")的核心输出是input_ids,也就是「Hello」对应的词表索引整数(比如bert-base-uncased词表里Hello的索引是7592),此外还会返回 <[BOS_never_used_51bce0c785ca2f68081bfa7d91973934]>、[SEP]等特殊符号的索引、注意力掩码等预处理结果,本身不会输出嵌入向量- 你提到的「Hello的one-hot向量传入可学习嵌入矩阵」操作,本质是用Hello的词表索引作为位置标识,one-hot向量乘嵌入矩阵的结果,等价于直接用该索引从嵌入矩阵中取出对应行的向量
- 简单说:
encode_plus给你的是用来查嵌入表的「钥匙」,one-hot查嵌入矩阵是用这个钥匙去取对应的「值」,二者结果是前后对应的关系。
问题2:不同预训练权重对应的BertTokenizer区别
首先bert-base-uncased和bert-large-uncased的分词器完全没有区别,可以互相通用:
- 只要是遵循同一套分词规则训练的BERT系列模型,不管参数规模是base还是large,共用同一套词表和分词逻辑
- 只有分词规则/训练语料不同的预训练模型,对应的分词器才会有差异,常见差异场景包括:
- 大小写规则不同:
uncased系列会先将输入转小写、去除重音符号,cased系列会保留原始大小写和重音 - 训练语言不同:中文BERT、多语言BERT、英文专属BERT的词表完全不同,分词逻辑也有差异
- 领域专属优化:部分面向垂直领域(比如医疗、代码)训练的BERT,会重新训练分词器适配领域语料,词表和通用BERT差异较大
- 大小写规则不同:
内容的提问来源于stack exchange,提问作者Quang Đại Nguyễn
相关产品推荐
相关产品推荐

