【AI事始め】Watson APIをPythonで使ってみる（Language Translator）

#はじめに
いろんな企業がAIに関係するサービスを展開していて、AIを使い始めるのは実は簡単です。
2017年11月から無料になったIBM Cloudライト・プランでWatsonを使ってみましょう。

#IBM Cloudアカウント作成

IBM Cloudのアカウントのない人は、アカウントを作りましょう。
こちらの記事が参考になります。

(参考)IBM Cloud (aka Bluemix) ライト・アカウント作成手順
https://qiita.com/KenichiSekine/items/249d2ff691b6565fb127

クレジットカードの登録不要で、簡単にアカウントを作成できます。
クラウド初めての人でも、課金を心配する必要はありません。


#Watson APIの確認
まずは、こちらのサイトからライトプランのあるWatson APIを確認しましょう。

https://console.bluemix.net/catalog/

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188272/bcf71ef0-c7ea-b4e0-80d0-3d09f786a5ac.png)

カタログのサイトの下の方にWatsonのサービスが載っています。
紫の「ライト」というタグがついているのがライトプランで使えるサービスです。
Language Translatorもライトプランありますね。

#Watson Language Translatorを使う

それではLanguage Translatorを使ってみます。

##サービス利用前の準備

上のカタログ画面の「Language Translator」にマウスを持っていくとクリックできるようになっています。ではクリック。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188272/bf2751f2-0502-2af6-58be-7374dc793f6e.png)

自分が利用するためのサービスを作成していきます。
サービス名、デプロイする地域の選択などを行います。
理由はわかりませんがデプロイする地域が米国南部でないとライトプランが使えません。
画面下の方にいくと、ライトプランの利用制限と、料金が無料であることがわかります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188272/eebe0f29-08a7-a94e-6570-6a755d43e738.png)

それではライトプランに✔がついていることを確認して画面右下の作成ボタンをクリックしましょう。数秒で自分が使えるサービスの作成が完了します。

IBM Cloudのダッシュボードにてサービスができていることを確認しましょう。

https://console.bluemix.net/dashboard/apps

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188272/c12cfe98-e986-7e1e-c1a3-49820ab5541d.png)

プラン「Lite」でLanguage Transratorのサービスが無事作成できていますね。

##APIリクエスト時に必要なサービス資格情報の確認
さて、Watsonのサービスは、APIリクエストでインターネット経由で使用できますが、認証が必要で、
サービス資格情報としてusername、passwordをAPIリクエストに含めなければいけません。
それでは、APIリクエスト時に使用するusername、passwordの情報確認を行います。

IBM Cloudのダッシュボードから使用するサービスのインスタンスをクリックします。
では「Language Translator」のサービスをクリック。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/188272/6386df65-4780-f314-8fa1-b553ec3ec872.png)

左側の「サービス資格情報」のタブを選択。
下の方に作成したサービスが載っています。
アクション列の資格情報の表示をクリックすると上のイメージのようにjson形式でurl、username、passwordが載っています。
はい、usernameとpasswordをひかえましょう。
urlはAPI Referenceにも載っている共通の情報です。


##APIでサービスを使ってみる

それではLanguage Translatorを使ってみましょう。
簡単に使用してみるだけであれば、Watson API 専用の画面(ブラウザ)から投げるもよし、
API Referenceのサンプルをコピペしてusername、passwordだけ直してプログラムから実行するのもよし。
いづれにしても難易度は高くありません。

Language Translator - Watson API Explorer 
https://watson-api-explorer.mybluemix.net/apis/language-translator-v2#!/Translate/translate
![image.png](https://qiita-image-store.s3.amazonaws.com/0/188272/5894ad87-34af-c304-8ede-08c27f419479.png)


Language Translator - Watson API Reference
https://www.ibm.com/watson/developercloud/language-translator/api/v2/#identifiable_languages
![image.png](https://qiita-image-store.s3.amazonaws.com/0/188272/99ff4d7b-1421-e008-762f-68172faa0c5e.png)



ここではPythonを使ってみます。
上記API Referenceを開くと右側のタブに言語が並んでいます。
使いたい言語の接続例を探しましょう。

では「Python」タブをクリック。
続けて左側の「Introduction」をクリックすると、PythonからのAPIリクエストに必要なライブラリを取得するpipコマンドが記載されています。
はい、これコピペでpip実行しましょう。

インストールが無事終わったら
左側「Methods」下にインデントがひとつ下がって使える機能が並べられています。
Translateは翻訳、Identify languageは言語識別です。
使用するmethodを選んで右側のExample requestを参考にプログラムで動かしてみましょう。
pyファイルにコピペしてusername、passwordをひかえたものに直すだけで簡単に使えちゃいます。

それでは、少し応用して言語識別機能と翻訳機能を併せて一つのプログラムで使って、
英語が入力されたら英和翻訳、日本語が入力されたら和英翻訳するようにしてみます。
パラメータの意味説明は割愛します。API Referenceを読んでください。

```Python:watson_language-translator_sample.py
import json
from watson_developer_cloud import LanguageTranslatorV2 as LanguageTranslator

language_translator = LanguageTranslator(
  username = '{{username}}',
  password = '{{password}}'
)

num = 0
while (num < 5):
    text = input('和英翻訳するよ。日本語か英語を入力してね。\n')
    # 言語識別
    language = language_translator.identify(text)
    source = language['languages'][0]['language']
    if source == 'en':
        target = 'ja'
    elif source == 'ja':
        target = 'en'
    else :
        source = 'ja'
        target = 'en'
    # 翻訳
    translation = language_translator.translate(
        text=text,
        source=source,
        target=target)
    print(translation)
    print()
    num += 1
```

##プログラム実行結果
プログラム実行結果はこんな感じ。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/188272/229ebdbb-5789-3fe4-79c6-235edabcfa3b.png)
「おはよう」と入力したら「Good morning.」
「good morning」と入力したら「おはようございます」とWatsonが翻訳してくれました。

#まとめ
Watson APIの利用は、無料のライトプランがあり、API用の画面(ブラウザ)やAPI Rererenceの実行例により
簡単に実行できる準備がされており、初心者でも簡単に使えます　というお話でした。