準備輸入文字
你已在影片中看到如何準備輸入與輸出文字。這個練習要示範一個常見做法:使用句子的最大長度來補齊(pad)所有句子,如此就不會遺失任何資訊。
由於 RNN 模型需要大小一致的輸入,這種作法會以最大長度為基準,對所有句子進行補齊,對較短的句子在後面補 0,而不截斷較長的句子。
另外,你將以單字而非字元作為符記(token),這是 NMT 模型常見的作法。
葡萄牙文句子已載入在變數 pt_sentences,已擬合好的 tokenizer 在變數 input_tokenizer。
本練習屬於課程
使用 Keras 建立語言模型的循環神經網路(RNN)
練習說明
- 對每個句子使用
.split()方法以空白切分,取得該句的單字數。 - 使用
.texts_to_sequences()方法將文字轉換為索引序列。 - 使用取得的句子最大長度來進行補齊(padding)。
- 印出第一個轉換後的句子。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Get maximum length of the sentences
pt_length = max([len(sentence.____) for sentence in pt_sentences])
# Transform text to sequence of numerical indexes
X = input_tokenizer.____(pt_sentences)
# Pad the sequences
X = pad_sequences(X, maxlen=____, padding='post')
# Print first sentence
print(pt_sentences[0])
# Print transformed sentence
print(____)