机器翻译与数据集

http://zh-v2.d2l.ai/chapter_recurrent-modern/machine-translation-and-dataset.html

在 9.5.4 中


里面先为每个序列添加了一个 ’ eos ’ 标记, 然后对每个序列执行截断/填充操作, 有可能把’ eos ’ 标记给删掉, 请问这样不会有什么影响吗?

1 Like

很明显,pad的优先级要高于eos,即遇到了pad自然就知道已经EOS了。

试了下代码 如果长度超过num_steps 就会把EOS删掉。
但是序列长度 就没有超过8的

如果超过8的数据都截断,后面的信息就不考虑了吗?

词元化函数tokenize_nmt(text, num_examples=None)中,num_examples所指定的样本数量有些略微的差别,比如在load_data_nmt()中,指定num_examples=600,则tokenize_nmt返回的source 和 target长度为601,这是由于enumerate函数默认start=0引起的,只需要将for i, line in enumerate(text.split(’\n’)):这一行改为for i, line in enumerate(text.split(’\n’), start=1):即可。