Watsonの翻訳機能を使ってみました
翻訳モジュールをテスト的に作ってみよう。 という話があり、
多数ある翻訳API候補の中から今回選んだのは、
30日間の無料トライアルがあるということで、IBM BluemixのWatsonです。
今回の目標は、
テキストを送信し、そのテキストの翻訳結果を取得する、です。
それでは翻訳結果を取得するまでを書きます。
まずはじめにIBM BluemixのIDを登録しました。
翻訳するにはどうしたら良いかと調べていると、 WatsonのサービスからLanguage Translatorを使用するということがわかりました。
後から分かったのですが、Language Translatorは、 Bluemix上のアプリと連携させて使用する方法とWatsonのAPIを直接叩いて使用する方法があることがわかりました。
前者から作り出しました。
Cloud Foundry アプリの作成からNode-RED Starterを登録し、Language Translatorと連携させました。 ※連携時はアプリの再起動をしました。
Node-RED Starterを登録し、 Node-REDの画面でノードを繋いでいき、日本語から英語、英語から日本語を配置しました。 WatsonのLanguage Translatorも忘れずに配置します。
https://(登録したアプリ名).eu-gb.mybluemix.net/(ノード内のディレクトリ)
でアプリにアクセス出来るようになりました。
「Hello」の翻訳を試してみるために、
https://(登録したアプリ名).eu-gb.mybluemix.net/(ノード内のディレクトリ)?message=hello
等とブラウザに入力すると、
「こんにちは」と返ってきました。
第一目標達成出来ました。
今回はPHPでPOST・GETで送信し、結果を取得するという方法をとりました。
PHPの前にPowershellでGETで送信し、結果を取得したのですがその話は今回は割愛。
登録したアプリにアクセスする前に、いくつかテストを行いました。
- BJDをインストールし、アプリを想定したローカル通信環境を構築。
- POST・GETの送受信をWIRESHARKで通信キャプチャ・解析。
- パラメーターを送信しPOST・GET通信、WIRESHARKで通信キャプチャ・解析。
- プロキシを通したローカル通信テスト。
この話は詳しく書くと長くなるのでこれも割愛します。
テスト後無事翻訳の取得に成功しました。 第二目標達成。
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も成功です。
最終目標達成。
ユーザー名とパスワードは、管理画面から確認です。
APIを直接叩く方法はたどり着くと意外と早く出来ました。
先輩に色々と指導いただき2日くらいかかりましたが、無事に目標を達成出来て良かったです。