1, input_ids: 将输入到的词映射到模型当中的字典ID
input_ids = tokenizer.encode("I love China!", add_special_tokens=False)
# print:[100, 657, 436, 328]
# 可以使用 如下转回原来的词,在选用的模型是Roberta可以用这个转回原来的
#RoBERTa相较于BERT最大的改进有三点:
1.动态Masking
2.取消NSP (Next Sentence predict) 任务
3.扩大Batch Size
tokens= tokenizer.convert_ids_to_tokens(input_ids)
# print: ['I', '?love', '?China', '!']. Note: ? 代码该字符的前面是一个空格
2,attention_mask:在 self-attention 过程中,这一块 mask 用于标记 subword 所处句子和 padding 的区别,将 padding 部分填充为 0;
有时,需要将多个不同长度的sentence,统一为同一个长度,例如128 dim. 此时我们会需要加padding,以此将一些长度不足的128的sentence,用1进行填充。为了让模型avoid performing attention on padding token indices. 所以这个需要加上这个属性。如果处理的文本是一句话,就可以不用了。如果不传入attention_mask时,模型会自动全部用1填充。
input_ids = tokenizer(["I love China","I love my family and I enjoy the time with my family"], padding=True)
# print:
# {
#'input_ids': [[0, 100, 657, 436, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1],
# [0, 100, 657, 127, 284, 8, 38, 2254, 5, 86, 19, 127, 284, 2]],
#'attention_mask': [[1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
# [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
#}
?
?
|