结论
先说结论:
是否返回token_type_ids
,可以在切词时通过 return_token_type_ids=True/False
指定,指定了True
就肯定会返回,指定False
,不一定就不返回。
分析
-
Doc地址
https://huggingface.co/docs/transformers/main/en/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.call
-
源码分析
由上图可以,transformers的tokenization_utils_base.py
明确指出,是否返回由return_token_type_ids
和self.model_input_names
两个属性控制
同时可见,如果return_token_type_ids
是False,那么会判断model_input_names
里有没有token_type_ids
;model_input_names
顾名思义,就是当前的模型需要哪些输入。
默认值是有token_type_ids
的,所以即使不指定,像Bert的tokenizer,切词时没有指定return_token_type_ids
,并且transformers的Bert的切词源码里也没指定model_input_names
相关,但是依旧可以返回token_type_ids
;
但是像GPT2的切词源码里,继承时重载了model_input_names
这个变量,没有指定token_type_ids
,所以默认情况下GPT2的切词方式是不返回token_type_ids
的