あんまり知られてないと思いますが、ヨーロッパでは結構使われているオープンソースの ModernMT(Fairseq Transformer Model)ツールを利用してGoogle Colaboratoryで簡単にDefault値で下記の手順で学習して翻訳を試してみた。
ModernMTは下記の特徴や翻訳APIが実装されているのですごく便利で開発中の英語学習アプリに使えそうだ。
・各文に対してより良い翻訳を予測するため、文書全体のコンテキストを使用。
・モデルは翻訳者による各修正からリアルタイムで学習。
1.学習する対訳コーパスを事前に準備する。
今回無料と有料コーパス合わせて100万文近くのデータを使って学習した。
無料コーパス
① GlobalVoice (news)
② 日英基本対訳コーパス
日本語基本文データの著作権は京都大学黒橋・河原研究室にあり、英語中国語基本文データの著作権はNICTマスタープロジェクト多言語翻訳研究室にある。両者は、Creative Commons Attribution 3.0 Unportedで利用可能である。
③ 日英法令対訳コーパス
④ 田中コーパス
有料対訳コーパス
マジックスープAI翻訳
対訳コーパス購入
2.学習するコーパスを自分アカウントのGoogle Driveにアップしておく。
3.Google Colaboratoryでノートブックを新規作成。
4.Google Driveをマウントする。
from google.colab import drive
drive.mount('/content/drive')
5.JAVAやPythonをインストール
!apt install -y openjdk-8-jdk python3 python3-pip
!update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
!java -version
6.GitHubからModernMTをダウンロード・インストール
!wget https://github.com/modernmt/modernmt/releases/download/v4.5.4/mmt-4.5.4-ubuntu.tar.gz
!tar xvfz mmt-4.5.4-ubuntu.tar.gz
!cd mmt; pip3 install -r requirements.txt
7.Googleドライブから対訳コーパスをコピーする。
8.日英モデルを学習する。Defaultコマンドで学習回数のみ設定
エンジン名:mmt45_base_ja-en
言語方向:ja en
!mmt/mmt create ja en -e mmt45_base_ja-en mmt/corpus/ --train-steps 1000
1から4までのStepで翻訳モデルをModernMTで使える形にパッケージングしてくれる。
止めても --resume オプションで続けて学習できるのですごく便利。
!mmt/mmt create ja en -e mmt45_base_ja-en mmt/corpus/ --train-steps 30000 --resume
9.翻訳エンジンを起動
!mmt/mmt start -e mmt45_base_ja-en &
10.翻訳
!mmt/mmt translate -e base0_ja-en "Her son was found uninjured, and told investigators that he and his mother were swimming, but his mother never got back into the boat."
11.機械評価
Defaultの値で3万回学習して、評価コマンドでGoogleとの比較(BLEU)
BLEUの機械評価ではModernMTの方がかなりの差で勝ちました。
感想
機械翻訳やAIにわからない素人でもデータさえあれば場合によっては十分自分アプリなどに使われそうな翻訳APIが作成できそうだ。