LawsonAbs的认知与思考,望各位读者审慎阅读。
总结
tokenizer
的使用;BertModel
模型(以 bert-base-uncased
为例)的使用代码部分详细可见我Github
本系列属于 Bert
实战训练中的第一篇,系列文章持续更新。1 Tokenizer 详解
1.1 处理细节
- 一句话会被分析的干干净净
这句话的意思是:甚至是该句中的符号,都会被单独割出来。如下所示:
可以看到
A ditch digger, was entrenched in his career.
这句话被 tokenizer()
处理后的结果
1.2 处理结果
需要把一句话交给 Tokenzier
处理之后,才可以交给 Bert
的model(如BertModel
)处理。
tokenizer
处理得到的结果 是一个 字典。该字典包含三项:
- input_ids
- token_type_ids
- attention_mask
1.2 tokenize()方法
相反,如果只是单纯的想得到这个字,就可以使用:
from transformers import AutoModel,AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained('/home/lawson/pretrain/bert-base-uncased')
print(tokenizer.tokenize("sdf"))
最后的运行结果就是:
['sd', '##f']
因为 bert使用的字典中,并没有 sdf
这个单词,所以就将其分解成了这种形式。
1.3 得到返回的位置
有时候我们想根据 输入的句子得到 某个词在句子中的位置,那么这个时候就可以使用 return_offsets_mapping 这个参数。需要注意的是,这个参数只有在继承类 PreTrainedTokenizer
的 Tokenizer 中才有。
2 BertModel 详解
这里可以结合 BertModel
的doc文档看看它最后的输出是什么:
最后返回的结果是一个
tuple
【这个很重要,容易出错】
①② 是肯定会返回的参数,而③是可选的返回值。平常我们在使用的时候,①② 就已经够了。
-
hidden_size
指的就是单个token对应的最后向量的维度。