產生英翻法譯文
你知道嗎,HSBC 曾因為翻譯失誤而在品牌重塑上多花了 1,000 萬美元?
我們將使用已訓練好的模型,透過 model.predict() 來預測英文句子的法文翻譯。你會拿到一個已訓練的模型(model)。此模型在 100,000 個句子上訓練了 50 個 epoch,並在超過 35,000 個單字的驗證集上達到約 90% 的準確率。由於在練習開始前需要載入已訓練模型,此題可能會花較長時間載入。此外,你也會拿到一個字典(fr_id2word),可用來將詞的索引轉回單字。最後,你會使用先前實作的 sents2seqs 函式,先將資料前處理後再餵給模型。
你可以使用 help(sents2seqs) 來回顧 sents2seqs() 函式可接受的輸入格式。
本練習屬於課程
使用 Keras 進行機器翻譯
練習說明
- 前處理來源
en_st,使用先前定義的sents2seqs函式將其轉為 one-hot 編碼的numpy陣列。 - 使用提供的已訓練
model對en_seq進行預測。 - 使用
np.argmax在fr_pred每個預測上取最大索引,並指定給fr_seq。 - 使用串列推導式將法文序列 ID 轉為句子(記得忽略 0),並指定給
fr_sent。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
en_st = ['the united states is sometimes chilly during december , but it is sometimes freezing in june .']
print('English: {}'.format(en_st))
# Convert the English sentence to a sequence
en_seq = ____(____, en_st, ____=True, reverse=____)
# Predict probabilities of words using en_seq
fr_pred = ____.____(en_seq)
# Get the sequence indices (max argument) of fr_pred
fr_seq = ____.____(fr_pred, axis=____)[0]
# Convert the sequence of IDs to a sentence and print
fr_sent = [____[i] for i in ____ if i != ____]
print("French (Custom): {}".format(' '.join(fr_sent)))
print("French (Google Translate): les etats-unis sont parfois froids en décembre, mais parfois gelés en juin")