开始使用免费开始使用

反转句子

这里您将学习如何为编码器模型反转句子。正如前面所述,反转源句子有助于在编码器与解码器之间建立更好的初始对齐,从而提升模型性能。不过需要注意,收益取决于您要互译的两种语言。只要两种语言的主语、谓语和宾语的顺序相同,这一技巧通常会带来收益。

在本练习中,您将修改 sents2seqs() 函数,使其在需要时可以反转句子。用户可以通过布尔关键字参数 reverse 来指定是否进行文本反转。

本练习是课程的一部分

使用 Keras 的机器翻译

查看课程

练习说明

  • 编写 sents2seqs() 的函数签名,新增关键字参数 reverse,其默认值为 False
  • 在"时间维度"上反转返回的序列 ID(使用 ::-1 语法),使第一个词 ID 变为最后一个。
  • 调用 sents2seqs(),对给定的 sentences 执行反转,并保持其余参数为默认值不变。

交互式实操练习

通过完成这段示例代码来试试这个练习。

sentences = ["california is never rainy during july ."]
# Add new keyword parameter reverse which defaults to False
def ____(input_type, sentences, onehot=False, pad_type='post', ____=____):     
    encoded_text = en_tok.texts_to_sequences(sentences)
    preproc_text = pad_sequences(encoded_text, padding=pad_type, truncating='post', maxlen=en_len)
    if reverse:
      # Reverse the text using numpy axis reversing
      preproc_text = preproc_text[:, ____]
    if onehot:
        preproc_text = to_categorical(preproc_text, num_classes=en_vocab)
    return preproc_text
# Call sents2seqs to get the padded and reversed sequence of IDs
pad_seq = ____('source', ____, ____=____)
rev_sent = [en_tok.index_word[wid] for wid in pad_seq[0][-6:]] 
print('\tReversed: ',' '.join(rev_sent))
编辑并运行代码