需求1: 自定义tokenizer
官方文档给出了很好的说明。
但都是要训练的tokenizer,如果想要实现一个完全自定义的,
需要参考这里。
如果无法魔改,那么可以先用自己的方法分完词,用分好词之后的预料训练一个huggingface的WhiteSpace pretokenizer。
wsf:直接自己把token转成id,把id序列给bert即可。(这样不能用huggingface了)
要用huggingface的话,传一个vocab_file给BertTokenizerFast。
或者参考
# Loading from a JSON file
1 | from transformers import PreTrainedTokenizerFast |
需求2: 自定义mask
需要修改DataCollatorForLanguageModeling类
源码
的torch_mask_tokens方法,官方代码利用伯努利分布随机采样得到mask:
1 | ... |
注:huggingface的attention mask是用来处理多序列的padding的情况。
参考:
https://cloud.tencent.com/developer/article/1885829
https://huggingface.co/transformers/glossary.html