シンギュラリティ対策室

シンギュラリティは本当にくるのか?人工知能分野(おもに機械学習)の学習。その他いろいろ。

Watsonの翻訳機能を使ってみました

翻訳モジュールをテスト的に作ってみよう。 という話があり、

多数ある翻訳API候補の中から今回選んだのは、

30日間の無料トライアルがあるということで、IBM BluemixのWatsonです。


今回の目標は、 テキストを送信し、そのテキストの翻訳結果を取得する、です。


それでは翻訳結果を取得するまでを書きます。

まずはじめにIBM BluemixのIDを登録しました。

翻訳するにはどうしたら良いかと調べていると、 WatsonのサービスからLanguage Translatorを使用するということがわかりました。 f:id:antisingularity:20170714113830p:plain

後から分かったのですが、Language Translatorは、 Bluemix上のアプリと連携させて使用する方法とWatsonのAPIを直接叩いて使用する方法があることがわかりました。


前者から作り出しました。


Cloud Foundry アプリの作成からNode-RED Starterを登録し、Language Translatorと連携させました。 ※連携時はアプリの再起動をしました。 f:id:antisingularity:20170714113932p:plain

Node-RED Starterを登録し、 Node-REDの画面でノードを繋いでいき、日本語から英語、英語から日本語を配置しました。 WatsonのLanguage Translatorも忘れずに配置します。 f:id:antisingularity:20170714113905p:plain

https://(登録したアプリ名).eu-gb.mybluemix.net/(ノード内のディレクトリ)

でアプリにアクセス出来るようになりました。


「Hello」の翻訳を試してみるために、

https://(登録したアプリ名).eu-gb.mybluemix.net/(ノード内のディレクトリ)?message=hello

等とブラウザに入力すると、

「こんにちは」と返ってきました。

第一目標達成出来ました。


今回はPHPでPOST・GETで送信し、結果を取得するという方法をとりました。

PHPの前にPowershellでGETで送信し、結果を取得したのですがその話は今回は割愛。


登録したアプリにアクセスする前に、いくつかテストを行いました。

  1. BJDをインストールし、アプリを想定したローカル通信環境を構築。
  2. POST・GETの送受信をWIRESHARKで通信キャプチャ・解析。
  3. パラメーターを送信しPOST・GET通信、WIRESHARKで通信キャプチャ・解析。
  4. プロキシを通したローカル通信テスト。

この話は詳しく書くと長くなるのでこれも割愛します。


テスト後無事翻訳の取得に成功しました。 第二目標達成。

PHPの翻訳結果の取得には、 file_get_contentsという関数を使用しました。

翻訳の精度にWatson独特の癖がありそうな感じもしました。



次にWatsonのAPIを直接叩いて結果を取得する方法ですが、

英語から日本語の翻訳で「Hello」をテストするには、

https://(username):(password)@gateway.watsonplatform.net/language-translator/api/v2/translate?model_id=en-ja&text=Hello

で結果取得でした。

POSTもGETも成功です。

最終目標達成。

ユーザー名とパスワードは、管理画面から確認です。 f:id:antisingularity:20170714113952p:plain

APIを直接叩く方法はたどり着くと意外と早く出来ました。


先輩に色々と指導いただき2日くらいかかりましたが、無事に目標を達成出来て良かったです。