サンプルプログラムを使って、英語を日本語に翻訳してみたいと思います。Sequence)というモデルをご存知でしょうか。系列を入力として系列を出力するモデルです。英語の単語の系列を受け取り、それと同じ意味のフランス語の単語の系列を出力すれば、英仏の翻訳が出来ます。日本語の単語の系列を受け取り、それに応答する日本語の単語の系列を出力すれば、チャットボットの様な事が出来ます。サンプルプログラムを使って、英語を日本語に翻訳してみたいと思います。オリジナルは英語をフランス語に翻訳する仕様になっています。私にとっては、英語の理解でさえ怪しいのにフランス語に翻訳されても適切かどうかは判断しようがない、正に猫に小判状態。英語を日本語に翻訳する仕様に変更してやってみたい。)も置いてあるので、それをダウンロードしてサンプルプログラムと同じフォルダーに置けば、英日翻訳の仕様に変更できます。サンプルプログラムは、1文字単位の処理をしていますので、日本語を使っていても形態素解析などをする必要などなく、英日のデータセットをそのまま使えるわけです。max_decoder_seq_length)プログラムの冒頭の部分です。11行目は、データセットを何行分読み込むのか指定しています。今回は、オリジナル通り10000行分読み込む設定です。13行目は、読み込むデータセットを英仏から英日に変更しています。16行目からデータセットをベクトル化する準備です。英文が順次格納され、target_textsにはそれを翻訳した日本文が順次格納されます。日本文に使われている文字の種類が格納されます。\tトムは大きな魚を捕まえた。1.辞書を作成し、データをベクトル化する部分です。}7行目からがデータをベクトル化する部分です。日本文を1文字づつ予測するベクトルデータが格納されます。modelmodel.save('s2s.h5')モデル構築と学習をする部分です。26行目はターミナルにモデル表示する命令を追加。事前にインストールしておく必要があります)。モデルはLSTMモジュールを2つ使っています。英文を文字単位の系列で受け取り学習します。その英文を翻訳した日本語文を文字単位の系列で受け取り学習します。29行目から学習の開始です。decoded_sentence)英文に対応した日本文を生成する部分です。3–14行目はサンプリングモデルの構築(学習の時と同様です)、18–21行目は逆引き辞書の作成。}23–58行目は、英文の入力から日本文を予測する関数の定義です。61行目でデータセットの最初から何番目までの英文を翻訳するかを設定しています。オリジナルは100ですが、これでは極めて初歩的な文なので、2000に設定しています。動かすのに約5時間弱といったところ。時間は掛かりますが、ノートパソコンでも、やれるレベルだと思います。プログラムを起動させた時の初期画面です。種類とかなり多いです。いう項目が追加され、各モジュールの接続状況を表示しています。10000個のデータセットの内、8000個を学習に、2000個を評価に使う設定です。英文を日本語に翻訳した出力の一部です。実は、サンプルプログラムの設定は、データセットで学習した英文をそのまま日本語訳させているので、上手くいって当たり前という気もします。10000個の英文と和訳のデータセットをLSTMの256個の隠れ層の重みだけで学習しているわけですから、これは凄いことです。ディープラーニングを使って機械翻訳というのは、こういうイメージなのかなと少し分かった気がします。コメントをキャンセルメールアドレスが公開されることはありません。date*日本語が含まれない投稿は無視されますのでご注意ください。文章生成を単語単位でやってみるRECOMMENDこちらの記事も人気です。一目惚れして、ディープラーニングを始めました。初心者の試行錯誤をブログにしています。