defpreprocess_nmt(text): """预处理“英语-法语”数据集""" defno_space(char, prev_char): return char inset(',.!?') and prev_char != ' ' # 使用空格替换不间断空格 # 使用小写字母替换大写字母 text = text.replace('\u202f', ' ').replace('\xa0', ' ').lower() # 在单词和标点符号之间插入空格 out = [' ' + char if i > 0and no_space(char, text[i - 1]) else char for i, char inenumerate(text)] return''.join(out) text = preprocess_nmt(raw_text) print(text[:80])
然后词元化,tokenize?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#@save deftokenize_nmt(text, num_examples=None): """词元化“英语-法语”数据数据集""" source, target = [], [] for i, line inenumerate(text.split('\n')): if num_examples and i > num_examples: break parts = line.split('\t') iflen(parts) == 2: source.append(parts[0].split(' ')) target.append(parts[1].split(' ')) return source, target