英語からフランス語への翻訳を生成する
HSBC銀行が、翻訳ミスのせいでスローガンの再ブランディングに1,000万ドルを費やしたことがあるのをご存じですか?
ここでは、学習済みモデルを使って model.predict() により英語の文のフランス語訳を予測します。学習済みモデル(model)が提供されます。このモデルは10万件の文で50エポック学習され、3万5千語超の検証セットで約90%の精度を達成しています。学習済みモデルを読み込んでから演習が始まるため、この演習の読み込みには少し時間がかかる場合があります。さらに、単語インデックスを単語に変換できる辞書(fr_id2word)も提供されます。最後に、モデルに入力する前の前処理として、先ほど実装した sents2seqs 関数を使用します。
sents2seqs() 関数が受け付ける引数を思い出すには、help(sents2seqs) を使ってください。
この演習はコースの一部です
Kerasで学ぶMachine Translation
演習の手順
- 事前に定義した
sents2seqs関数を用いて、ソースのen_stをonehotエンコード済みのnumpy配列に前処理して変換してください。 - 提供された学習済み
modelを使って、en_seqの出力を予測してください。 np.argmaxを使ってfr_predの各予測について最大インデックスを抽出し、fr_seqに代入してください。- リスト内包表記を使って(0は無視することを忘れずに)フランス語の系列IDを文に変換し、
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")