huggingface里的tokenizer封装的很麻烦,但是也可以理解,毕竟涉及到的预训练模型太多了。
随便截个图,在src文件夹里,有一堆tokenization开头的文件:
注意所有的tokenization_xx.py都继承了tokenization_utils.py,里面的PreTrainedTokenizer类是所有的tokenizer的基类,有关tokenizer的大部分方法都定义在了PreTrainedTokenizer中,然后再在各个子类中继承和重写。
对于新进来的一对句对,是通过encode_plus方法进行tokenize,然后转化为id,最后和特殊ID拼接成一句话的。这个方法里还包含了好几个方法:
def encode_plus(
self,
text: Union[TextInput, PreTokenizedInput, EncodedInput],
text_pair: Optional[Union[TextInput, PreTokenizedInput, EncodedInput]] = None,
add_special_tokens: bool = True,
max_length: Optional[int] = None,
**kwargs
) -> BatchEncoding:
def get_input_ids(text):
if isinstance(text, str):