スポンサードリンク



こんにちは。sinyです。

この記事は、下記記事【ディープラーニング+Djangoで言語翻訳デモアプリの作成【後編】】の後編です。

 

Seq2Seqモデルで学習させた英語→日本語翻訳モデルをDjangoに組み込み、下記動画のようなWEBアプリを開発していきます。

ソースはすべて以下のGitサイトにUPしてありますので、実際に試してみたい方はご利用ください。

開発環境

今回は以下のモジュール構成で開発しました。

  • Django==2.2
  • django-bootstrap4==0.0.8
  • django-widgets-improved==1.5.0
  • Keras==2.2.4
  • Pillow==6.0.0
  • tensorflow==1.12.0

 

Gitサイトにある requirements.txtを使って「pip install -r requirements.txt」すればすべて自動でインストールできます。

プロジェクトとアプリは、以下の名前で作成しています。

django-admin startproject translate
python manage.py startapp app1

 

settings.pyの設定

settings.pyでは以下の設定を行います。

  • 必要なモジュール/アプリの追加(※1)
  • テンプレートフォルダの設定(※2)
  • 静的ファイルの設定(※3)

 

URLパターンの設定

プロジェクトとアプリケーションのurls.pyの設定をそれぞれ行います。
ここは特に難しい点はないかと思います。

■translate\urls.py

 

■app1\urls.py

 

フォームの設定

■forms.py

翻訳画面のフォーム設定です。

 

上記で下図の赤枠の画面フォームを設定しています。

コンフィグ設定

config.pyでは、学習モデルやサンプルサイズ等の固定値の設定をまとめています。

 

上記で指定しているモデルファイル類は、translate\modelsフォルダを作成してファイルを配置しておきます。
配置するファイルは、下記記事で作成したものを配置します。

  • decoder_model.h5 (推論用の学習済みデコーダモデル)
  • encoder_model.h5(推論用の学習済みエンコーダモデル)
  • jpn.txt(学習に利用した英語と日本語データ)
  • s2s.h5(学習済みseq2seqモデル)

 

ファンクション関数の設定

function.pyでは以下の関数を定義しています。

  • load_text (コーパスファイルjpn.txtのロード)
  • get_char (以下の情報を抽出する関数。)

     input_texts(英語文)
     target_texts(日本語文)
     input_characters(英語の単語の種類)
     target_characters(日本語の単語の種類)

  • get_num_wordjpn.txtに格納されている英語、日本語のトークン数、最大長の値を取得する関数)
  • sentence_to_vector文章をone-hot表現に変換する関数)
  • load_models(モデルをロードする関数)
  • create_dict英語と日本語の辞書データを作成する関数)
  • is_invalid(使用できない文字があったときに無効な文字を判定する関数)
  • decode_sequence(入力に英文の状態ベクトルを与えて、出力(日本語訳)を出力する関数)

ビューの設定

以下はビューの設定です。

 

translate関数で、画面から渡ってきた英文情報を受け取り、sentence_to_vectorでベクトル化した後、decode_sequence関数に渡して予測結果を受け取ります。

以下の部分は、過去に実行した英語→日本語翻訳結果を履歴情報として保持し、画面に履歴情報を表示させるための処理です。

request.session['hist']に質問文を応答文の情報を蓄積しています。

 

 

テンプレートの設定

translate\templates\app1を作成し、base.htmlとdemo.htmlを作成します。

■base.html

 

■demo.html

翻訳結果を表示するテンプレートです。

 

以下の部分で、質問文(英語)と回答文(日本語)を分けて表示しています。

 

staticファイルの配置

translate\static配下に、cssとimageファイルを配置しています。

翻訳結果画面で表示する画像と画面のデザインを整えるために利用しています。

■talkarea.css

 

マイグレーション

ここまで設定出来たら、python manage.py migrateでマイグレーションを行いましょう。

http://127.0.0.1:8000/app/demo/ にアクセスし、以下の画面が表示されればOKです。

以上で完了です。

入門者の方には少し難しい部分もあるかと思いますが、1つ1つ理解していけば構築できるようになると思いますので、ぜひチャレンジしてみてください。

 

 

おすすめの記事