IBM Bluemix の Watson APIを使ってみた雑感


# はじめに
IBM Bluemixの無料アカウントを取得してWatsonAPIをあれこれとデモ利用したときの作業メモです。
## IBM Bluemix
Paas系のサービス。その中にかの有名なWatson APIが提供されている。
## 利用できるAPIの種類
WatsonAPIと一口にいっても以下のように16個ものAPIが提供されている。

2015-08-22時点でデモ利用できるのは以下の通り。
デモ利用できないものはclosed Beta版で申請をしないといけないっぽい。
#### デモ利用可
* AlchemyAPI
* Concept Expansion 
* Concept Insights
* Dialog
* Language Translation
* Natural Language Classifier
* Personality Insights
* Question and Answer
* Relationship Extraction
* Speech To Text
* Text to Speech
* Tradeoff Analytics
* Visual Recognition

#### デモ利用不可
* Cognitive Commerce™
* Cognitive Graph
* Cognitive Insights™


# 長くなるので先に使ってみた結論
2.Alchemy API，5.Personality Insights, 9. Natural Language Classifierは使えそう。
あとはデモレベルだとまだ微妙かも。

以下、メモ内容。
**順番↑の通りでないので注意。単純に見ていった順です。**

# 1. Concept Expansion

## 内容
+ 概念拡張サービス。婉曲な表現や話し言葉の用語をより一般的でわかりやすい用語に解読する。と日本語資料ではかっこ良く書かれている。
+ いくつかの単語を入れると、それへの関連度が高い単語一覧が出力される。
+ コーパスはTwitterと医療系のサイトのテキスト、それぞれで学習されたAPIが用意されている。

## デモ内容
+ コーパスとLabelとSeedsを入力すると、関連度の高いワード一覧が出力される。
+ 頭痛薬系?のワードを入れると関連度の高いペニシリンが最上位に。

![スクリーンショット 2015-08-22 18.53.10.png](https://qiita-image-store.s3.amazonaws.com/0/32783/edb554e2-ace7-1258-cebd-510c81814882.png "スクリーンショット 2015-08-22 18.53.10.png")


## 所感
+ あるテキスト群のクラス分類器。

## 良い点
+ いまのところ特になし。

## 疑問点・課題点
+ コーパスって他にもないのか？今のところ医療系とTwitterしかないが。
+ デモサイトでは、labelに何を入れると精度が向上するのかがわからない。

# 2. AlchemyAPI
NLPと機械学習アルゴリズムを使って抽象的な意味情報（semantic meta-data）を取得するとのこと。
APIは全部で4つ。

* AlchemyLanguage
* AlchemyVision
* AlchemyData News API
* AlchemyVision Face Detection/Recognition 

## 2-1. AlchemyLanguage
### 内容
文章の属性情報の分析API。文章を入力すると、その文章のEntitiesが返ってくる。

### デモ
インプットは以下。

```
The IBM Watson Language Translation service converts text input in one language into a destination language for the end user using background from domain-specifc models. Translation is available among Arabic, Chinese, English, French, Korean, Portuguese, and Spanish (some languages may not be available for all domains).
```

結果は以下。

| Entity | Relevance | Centiment | Type | Subtypes | Linked Data |
|---|---|---|---|---|---|
|IBM Watson Language | 0.894818 | positive | PrintMedia |
|end user | 0.417119 | positive | FieldTerminology|


### 所感
* カテゴリ分類には使えそう。

### 疑問点・課題点
* とくになし。

## 2-2. AlchemyVision
### 内容
Deep Learning使った画像分類。あとで見る、Visual Recognitionよりいけてる。
画像を入れると、カテゴリとスコアが返ってくる。
### デモ
![Kobito.AONe4R.png](https://qiita-image-store.s3.amazonaws.com/0/32783/86e6baee-5615-aeab-438a-86eac9f0332d.png "Kobito.AONe4R.png")

### 所感
* 一般的なDeep Learningという感じ。
* すごいというわけでもない

### 疑問点・課題点
* Detectionしたい。

## 2-3. AlchemyData News API
### 内容
* デモ見るのがはやい。
* ニュース検索のAPI

### デモ
![Kobito.lGSQ0z.png](https://qiita-image-store.s3.amazonaws.com/0/32783/a932cdb7-122e-5a18-d61b-af1f0e29ecbf.png "Kobito.lGSQ0z.png")

![Kobito.Nk9WZE.png](https://qiita-image-store.s3.amazonaws.com/0/32783/99dc1b1b-ef03-4997-55d9-ed34c0915afa.png "Kobito.Nk9WZE.png")

### 所感
* ニュース検索楽ちん！(ﾟ∀ﾟ)
* でもグーグルで間に合ってます！

### 課題点・疑問点
* 具体的に裏側では何をしている？クロールしてラベリング？

## 2-4. AlchemyVision Face Detection/Recognition 
### 内容
顔認識用のAPI。
画像を入力すると顔領域と年齢、性別、有名人なら名前を特定してくれる。

### デモ
サンプルを使ってみると...

![Kobito.SPokH2.png](https://qiita-image-store.s3.amazonaws.com/0/32783/9dbf69f6-ce54-74ca-445d-804eab54c395.png "Kobito.SPokH2.png")

おお〜〜。。次、自分の顔写真をば...

![Kobito.C56IuD.png](https://qiita-image-store.s3.amazonaws.com/0/32783/45fcd02f-40eb-e099-244e-94235ff49381.png "Kobito.C56IuD.png")

ファッ？！

### 所感
* 教師データ次第？もうちょいチューニングできそう。
* でも顔認識ってとくに使うタイミングないんだよな〜〜...

## 疑問点・課題点
* 自分の写真はなんで認識されなかったのか？
* 教師データ次第では自分の名前も出すようになる？

# 3. Language Translation
## 内容
* まんま。言語翻訳。Google翻訳をイメージしてくれればOK。
* ドメインを指定する必要あり。会話、ニュース、特許。
* 会話とニュースは英語、フランス語、スペイン語、アラビア語、ポルトガル語、のみ提供されていた。両方向可。
* 特許は中国語、韓国語、スペイン語、ポルトガル語 -> 英語。単方向のみ。

## デモ内容
* Google翻訳と大体同じなので画像は省略。
* 日本語がないので精度はなんともだが、英語->スペイン語->英語とやったら、なんだか怪しい英語がでてきていた。

```before
The IBM Watson Language Translation service converts text input in one language into a destination language for the end user using background from domain-specifc models. Translation is available among Arabic, Chinese, English, French, Korean, Portuguese, and Spanish (some languages may not be available for all domains).
```

```after
The language translation service IBM Watson becomes the text input in a language in a target language for the end user using background of specific domain models.   Translation is available in Arabic, Chinese, English, French, Korean, Portuguese and Spanish, some languages are not available for all domains).
```

## 所感
* 日本語ないならいらんね。日本人だし。
* というか自動翻訳の技術はそれ自体ではまだまだなので、人の介在を考えた上でサービス設計する必要がある、と思ってるのであんまり,,,

## 疑問点・課題点
* 日本語対応はいつでしょう？
* 精度そんなによくなさそう。

# 4. Concept Insights
## 内容
* 知識検索エンジン？
* Googleでダメ？

## ※注釈
* 調査後回し。

# 5. Personality Insights
## 内容
* 最低3500語以上、理想では6000語以上の文章を入れると、その人の分析した情報が取得できる。

## デモ内容
* 以下は企業のお偉いさんのスピーチを入力したときの、結果。
* おもろい！

![Kobito.04zpxg.png](https://qiita-image-store.s3.amazonaws.com/0/32783/4e4a0c65-2491-1baa-d574-b663ee8de07c.png "Kobito.04zpxg.png")

![Kobito.fPhx5p.png](https://qiita-image-store.s3.amazonaws.com/0/32783/68b4eb24-1f6a-8882-1e52-502a3bac641e.png "Kobito.fPhx5p.png")

* 試しに院時代に書いた英語ESを適当にコピペして入力してみると、Personalityはこういう結果に。たしかに、世のESを要約したような意識高い系の分析結果がかえってきている。

```
You are inner-directed, shrewd and strict.

You are driven: you have high goals for yourself and work hard to achieve them. You are authority-challenging: you prefer to challenge authority and traditional values to help bring about positive changes. And you are independent: you have a strong desire to have time to yourself.

You are motivated to seek out experiences that provide a strong feeling of self-expression.

You consider achieving success to guide a large part of what you do: you seek out opportunities to improve yourself and demonstrate that you are a capable person. You are relatively unconcerned with taking pleasure in life: you prefer activities with a purpose greater than just personal enjoyment.

```

## 所感
* おもろいんじゃないか。
* エッセイでも入力してもらえれば普通に採用活動にも使えそう
* ユーザーの分析して傾向把握、という用途にも使えそう

## 疑問点・課題点
* 日本語対(ry
* 日本語対応してくれれば今までの中ではちょい機能として即戦力。

# 6. Quetion and Answer
http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/question-answer.html
## 内容
いわゆるAIとの会話用のAPI。
質問を入力すると、その質問への回答を返してくれる。
いまは以下の2種類のデータ・セットでしか事前学習していないとのこと。
* Healthcare data (including Healthfinder and CDC Health Topics)
* Travel data (including Wikivoyage, TSA, and CDC Travel)


## デモ
以下は、"Where is New york city located in the world ?" と質問してみた時の答え。
...う〜〜ん...

![Kobito.cena9a.png](https://qiita-image-store.s3.amazonaws.com/0/32783/1b292d8a-34e6-00bf-d79c-1e3e3130f46e.png "Kobito.cena9a.png")

## 所感
* これくらいの情報量を出すなら、もっときっちり出して欲しい。
* 簡単に答え一単語、とかでもいいんやけどな。。

## 疑問点・課題点
* に(ry
* 単語、もしくは単文レベルにアウトプットを変えることはできないか？
* これだと少し中途半端。

# 7. Visual Recognition
http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/visual-recognition.html

## 内容
jpeg画像のカテゴリ分類。

## 所感
* カテゴリ分類したければどうぞ...
* まずはDetectionがしたいからなぁ...

## 疑問点・課題点
* Detectionはできるようになるのか？
* 背後のモデルは何を使っている？
* もし今後変えるとしたらどの論文を参考にするのか

# 8. Relationship Extraction
http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/relationship-extraction.html
## 内容
文章の単語の、entities(カテゴリ？）を抽出する。
その間の関係性も出す、っていっているが、分類しているだけ？かな？

## デモ
下の記事の本文をそのままコピペ。
https://www.whitehouse.gov/blog/2015/08/21/next-steps-developing-precision-medicine-initiative

![Kobito.nm6rlc.png](https://qiita-image-store.s3.amazonaws.com/0/32783/e9b1a319-fedd-b009-fe25-e34fcd25bf4e.png "Kobito.nm6rlc.png")

## 所感
* 何に使うんだろう。データの前処理？

# 9. Natural Language Classifier

http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/nl-classifier.html

## 内容
Deep Learning techniquesが使われてる。
文章を入力すると、その文章のカテゴリ（class）が返ってくる。

## デモ
以下を入力すると、いずれもtemperatureが返ってくる。

```
Is it hot outside?
What is the expected high for today?
```

以下を入力すると、いずれもconditionsが返ってくる。

```
Will it be foggy tomorrow morning?
Should I prepare for sleet?
Will there be a storm today?
```

## 所感
精度よさげ。カテゴリ分類なので、Deep learning使っているなら普通に実用レベルだと思う。
カテゴリ分類は実用先が少ないのがあれだけども。

## 疑問点・課題点
* に(ry

# 10. Dialog
## 内容
ルールベースの会話システム。
ルールに決まった単語を書いていれば、次の質問に進み、ルールに書いてない単語だと、Sorry hoge hogeみたいなことを返す。

## デモ
ピザの注文のやりとりだった。
サイズ、トッピング、配達方法が聞かれる。

## 所感
* if文と何が違うのか
* パッと見の人工知能感はある。

## 疑問点・課題点
* if文と何が違うのか？

# まとめ
2. Alchemy API，5.Personality Insights, 9. Natural Language Classifierは使えそう。あとはデモレベルだと微妙。Deep Learningじゃないものは基本使えなさそうなイメージ。