GPT2模型的期望粒度是字而非词,故建立字典,通过tokenize完成两件事:
- 切分语料,以[CLS]标志语料开头,以[SEP]划分说话对象
- 完成字到字典id(tokenize_id)的转变
def preprocess_raw_data(args, tokenizer, n_ctx):
"""
对原始语料进行处理,将原始语料转换为用于train的token id,对于每个dialogue,将其处于成如下形式"[CLS]utterance1[SEP]utterance2[SEP]utterance3[SEP]"
:param args:
:param tokenizer:
:param n_ctx:GPT2模型的上下文窗口大小,将超过300的dialogue截断
:return:
"""
logger.info("tokenizing raw data,raw data path:{}, token output path:{}".format(args.train_raw_path,
args.train_tokenized_path))
# 将smalldata/data.txt读入data中
with open(args.