场景:英译中,数据集包括训练集14533行,前面是英文后面是中文,中间用\t隔开
先明确我们的任务:
1 导入数据集,把所用句子加上‘BOS’和‘EOS’,中文和英文分开放在一个二维list中,里面嵌套的每个list表示一个句子,元素是单词。
2 建立词典,其中’unk’=0,'pad’=1
3 将单词根据词典编码,并按en中句子的长度排序
4 分成batch,记录每一个batch的行索引
5 记录每一个batch中的句子
6 将每一个batch中的句子填充成一样的长度,不足补0,并记录每个句子的原始长度
1.
def load_data(file):
with open(file, 'r', encoding='utf-8') as f:
# print(type(f))
en = []
cn = []
for line in f:
line = line.strip().split('\t')
en.append(['BOS'] + [c for c in line[0].split()] + ['EOS'])
cn.append(['BOS'] + [c for c in jieba.cut(line[1])] + ['EOS'])
return en, cn
MAX_VOCAB_SIZE = 50000
def build_dict(text):
vocab = Counter()