使用 Bert 做各种文本任务,主要是使用 transformer 包来完成,可通过pretrain_from加载预训练模型,传入的参数为预训练模型所在文件夹路径,需要三种文件,vocab.txt、config.json、pytorch_model.bin;加载Tokenizer时候可能还需要tokenizer.json和tokenizer_config.json文件。
BertModel 相当于是一个 bert 基础实现,最后的输出为 hidden 层的数据输出,对下游任务需要再增加最后的处理,模型默认的输出是BaseModelOutputWithPoolingAndCrossAttentions。
经常使用的方法:
last_hidden_state (torch.FloatTensor of shape (batch_size, sequence_length, hidden_size)) — 模型最后一层输出的隐藏状态序列.
hidden_states (tuple(torch.FloatTensor), optional, returned when output_hidden_states=True is passed or when config.output_hidden_states=True) — 形状为(batch_size、sequence_length、hidden_size)的torch.FloatTensor 的元组(一个用于嵌入的输出,如果模型有嵌入层,+ 一个用于每一层的输出)
参数意义:
input_ids (torch.LongTensor of shape (batch_size, sequence_length)) — 词汇表中输入序列标记的索引
attention_mask (torch.FloatTensor of shape (batch_size, sequence_length), optional) — 对输入数据mask,解决pad问题,掩码值:1 表示未屏蔽的标记,0 表示已屏蔽的标记。
token_type_ids (torch.LongTensor of shape (batch_size, sequence_length), optional) — 分段标记索引以指示输入的第一和第二部分。在 [0, 1] 中选择索引:0对应一个句子A的token,1对应一个句子B的token。
不同类型的Bert类:
针对文本分类的有AutoModelForSequenceClassification
针对NER的有:AutoModelForTokenClassification
参考: