始める無料で始める

英語からフランス語への翻訳を生成する

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")
コードを編集して実行