100
2016年7月16日 日本アイ・ビー・エム株式会社 東京ソフトウェア開発研究所、ワトソン製品開発 小峯宏秋 Watson API トレーニング 2016/7/16

Watson API トレーニング 20160716 rev02

Embed Size (px)

Citation preview

Page 1: Watson API トレーニング 20160716 rev02

2016年7月16日

日本アイ・ビー・エム株式会社東京ソフトウェア開発研究所、ワトソン製品開発

小峯宏秋

Watson API トレーニング

2016/7/16

Page 2: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

この資料は、新たに IBM Watson を使用したアプリケーションを作成しようとしている方に向けての最初の説明資料として作成しました。

本資料で十分説明できない内容や追加の情報については、なるべく参考文献や資料のリンクを挿入しています。そちらも併せて参照してください。

本資料に含まれる実習を行うための補助資料を LabFiles として提供しています。実習を行う際に使用してください。– 本資料に記載されているコードやコマンド例は、プレゼンテーション

ソフトの自動変換で不適切な文字に変換されていることがありますので、補助資料の operations.txt の内容を参照してください。

本資料は作成時点での最新情報を記載していますが、紹介している製品や技術リソースの内容は予告なく変更されることがありますことをご留意ください。

この資料について

22016/7/16

Page 3: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

Watson サービス– IBM Watson の展開– Watson サービスを利用したアプリケーション

Q&A ソリューションに利用できる Watson サービスの詳細– Natural Language Classifier サービス– Retrieve and Rank サービス– Dialog サービス– Document Conversion サービス– Speech to Text サービス– Text to Speech サービス

日本語に対応したその他のWatson サービス– Visual Recognition– Personality Insight

アジェンダ

32016/7/16

Page 4: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016© Copyright IBM Corporation 2016

Watson サービス

IBM Watson の展開

IBM Bluemix と Watson サービスの概要

42016/7/16

Page 5: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

IBM Watson の展開

52016/7/16

IBM Watson

発祥

• 質問応答システム@Jeopardy!

現在

• コグニティブ・システムを実現する技術・製品・サービス

• コグニティブ・システムを実現するためWebサービス群(IBM Watson Developers Cloud)

Page 6: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

集約された Q&A コグニティブサービスとしてはじまった Watson サービスは、主要な機能単位でコンポーネント化されると共に、様々な新しいコグニティブサービスが追加されています。

ここのサービスを組み合わせて使用することで、柔軟なコグニティブソリューション開発を可能にしました。

アプリケーションの中に組みこみ可能な豊富なコグニティブサービスを順次提供しています。

Bluemix の Watson サービス

Watson

Services APIs

Watson コグニティブ・サービスの自由な組み合わせによる機能実現

NL Classifier

Retrieve & Rank

Document Conversion

Dialog

Watson

QA API

集約されたWatson Q&A

コグニティブ・サービス

2016/7/16 6

Page 7: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

2016年 7月、利用可能なサービス

72016/7/16

Dialog

RelationshipExtraction

DocumentConversion

Retrieve andRank

LanguageTranslation

Natural LanguageClassifier

Concept Insights

PersonalityInsights

AlchemyAPI(Language, Vision, News)

ToneAnalyzer

Text ToSpeech

Speech ToText

TradeoffAnalytics

VisualInsights

experimental

beta

VisualRecognition

experimental

Conversation

to be deprecated

deprecated日本語に対応したサービス

Page 8: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

サービスの種類

82016/7/16

Language

• テキストから情報を抽出

• アプリケーションはテキストで記述されたコンテキスを理解できるようになる

Speech

• 音声からテキスト、テキストから音声を変換

• アプリケーションが音声を扱えるようになる

Vision

• 画像から情報や知見を抽出

• アプリケーションは画像からコンテキスを理解できるようになる

Data Insights

• データを効率的に処理外部ニュース

の取り込み数値データの

組み合わせを最適化

Page 9: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016© Copyright IBM Corporation 2016

IBM Bluemix とWatson サービスの概要

IBM Watson の展開

IBM Bluemix と Watson サービスの概要

92016/7/16

Page 10: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

Bluemix と Watson Developer Cloud の関係

102016/7/16

IBM Bluemix環境

アプリケーション

Watson Developer Cloud 環境

Watson

サービス(API)

REST API

サービスへのアクセス情報(ユーザーIDとパスワード)

アプリケーション

サービスへのアクセス情報(ユーザーIDとパスワード)

REST API

Bluemix上で動いていないアプリケーションに関してはBluemix上で発行されたアクセス情報をコピーして、利用

バインドで提供

Page 11: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

Watson Developer Cloud は Watson コグニティブサービスを提供する クラウド環境です。– 様々な Watson サービスは REST API を通じて利用可能です。– Watson サービスを使用してソリューションを効率よく開発するた

めの情報を提供しています。• サービスのドキュメント• デモンストレーション• サンプルコードやスターターキット• 開発者向けのコミュニテイへのリンク(IBM developerWorks)

IBM Watson Developers Cloud

112016/7/16

https://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/

Page 12: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

Bluemix と Watson Developer Cloud

122016/7/16

アプリケーションの実行環境

Watson を含む各種サービスの作成と管理、および認証情報の管理

サービス利用に対する課金の確認

システムとサービスの状況確認

IBM によるサポート

Watson サービスの実体

Watson サービスで開発を行うための各種リソース– ドキュメント– SDK– サンプルコード– デモアプリケーション

IBM Bluemix の提供するものhttps://console.ng.bluemix.net/

IBM Watson Developer Cloud が提供するものhttps://www.ibm.com/watson/developercloud/

Watson に関する質問 - Questions in Watson space • https://developer.ibm.com/answers/smart-spaces/25/watson.html

サービスや技術に関する情報 - Watson blog• https://developer.ibm.com/watson/blog/

IBM developerWorks http://www.ibm.com/developerworks/

Page 13: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

Watson サービスのドキュメント

132016/7/16

https://www.ibm.com/watson/developercloud/doc/

Watson service documents

Watson API Reference• API 呼び出しの方法と、

Curl, Node, Java, Python の呼び出し例を表示

Page 14: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

Natural Language Classifier サービスを新規に作成し、作成したサービスの資格情報を取得してください。また作成したサービスの API に cURLでアクセスしてください。

1. Bluemix にログインします。

2. 新規に Natural Language Classifier サービスを作成します。

3. 作成したサービスの概要からドキュメントを確認します。

4. 作成したサービスの資格情報を確認し、サービスにアクセスするためのユーザー名とパスワードを取得します。

5. 作成した Natural Language Classifier サービスを cURL で呼び出します。

実習 1: Bluemix で Watson サービスを作成する

142016/7/16

Page 15: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

Natural Language Classifier (NLC) サービスの作成手順

1. 以下の URL にアクセスして Bluemix へログインします。– http://Bluemix.net

• ユーザー名が表示されず「ログイン」リンクが表示されるときは、その「ログイン」リンクをクリックしてください。

2. カテゴリ一覧で「Watson」をクリックします。

実習手順:Watson サービスの作成手順

152016/7/16

Page 16: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

右上の「今すぐ始めましょう。」の横の「+」アイコンをクリックします。

実習手順:Watson サービスの作成手順

162016/7/16

Page 17: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

3. 左側のカテゴリで「Watson」が選択された状態で、使用したいサービス(今回は Natural Language Classifier)をクリックします。

実習手順:サービスの作成手順

172016/7/16

Page 18: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

4. 「サービス名」などを確認して「作成」ボタンをクリックします。

実習手順:サービスの作成手順

182016/7/16

接続は「アンバインドのまま」で構いません。

サービス名と資格情報名は必要に応じて変更してください。通常はデフォルトの設定を使って構いません。

もし Bluemix アカウントの提供者から指定があれば、指定された価格プランを使用してください。

クリックしてサービスインスタンスを作成します。

Page 19: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

4. サービスが作成されると「概要」ページが開かれ、この画面より「資料」や「デモ」のリンクを開くことも可能です。

実習手順:サービスの作成手順

192016/7/16

GUI で分類器を管理できるToolkit もあります。

ドキュメントやデモページへのリンク

Page 20: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

5. 「サービス資格情報」タブを開いて、作成したサービスにアクセスするための認証情報を取得します。

実習手順:サービスの作成手順

202016/7/16

ここで生成された資格情報(URL、ユーザー名、パスワード)でWatson サービスを使用します。あとの手順で使うので、

これらをテキストファイルに記録してください。

資格情報が表示されないときは、ここをクリックして追加します。

Page 21: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

cURL(カール)– 様々なプロトコルでのネットワークリクエストを発行できるコマンド

ラインツールです。cURL を使用することで、HTTP リクエストの呼出し内容やレスポンスのデータを確認することができます。

– 取得できる生のデータや、HTTP リクエストのヘッダーなども確認できるので、詳細な調査などでは便利。

1. Windows のコマンドプロンプトを開きます。

2. 必要に応じて cURL の実行ファイルのあるフォルダにパスを設定し、cURL コマンドから呼び出せるようにします。

3. 「curl –v」とタイプしてバージョン情報を確認します。

実習手順: Watson サービス API を cURL で呼び出す

212016/7/16

> set path=c:¥tools¥curl;%path%

> curl -v

curl 7.33.0 (x86_64-pc-win32) libcurl/7.33.0 OpenSSL/0.9.8y zlib/1.2.8

libssh2/1.4.3

Page 22: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

Natural Language Classifier サービスの、登録済みの分類器一覧を取得する API を呼び出します。

4. 以下のコマンドを発行し、作成済みの NLC サービスに分類器が登録されていないことを確認します。

実習手順: Watson サービス API を cURL で呼び出す

222016/7/16

> curl -k -u {username}:{password} -X GET

"https://gateway.watsonplatform.net/natural-language-

classifier/api/v1/classifiers"

注意※ {username} と {password} は、作成した NLC サービスの資格情報の値を

使用します。※ -k オプションはローカルの SSL 認証情報がないためにエラーが出るときに、

SSL 認証のチェックを一時的に止める設定です。※ 「-X GET」は省略しても構いません。※ コマンドは1行で入力します。※ 登録されている分類器の名前など日本語が含まれていると、UTF-8 表示のた

めに文字化けします。-o オプションでファイルに出力して、エディタで開いて確認してください。

Page 23: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

AlchemyAPI とその関連サービスでは、資格情報が api_Key として提供されます。

参考情報:Alchemy API での資格情報

232016/7/16

※ 無料プランでは、api_key の発行後は24時間次の api_key を生成できません。

Page 24: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

Watson Developer Cloud ページの下段に記載• https://www.ibm.com/watson/developercloud/

その他の SDK とサンプルも、開発中も含めて GitHub に公開しています。– https://github.com/watson-developer-cloud

• android-sdk• node-red-node-watson• speech-javascript-sdk• text-to-speech-java

Watson SDKs

242016/7/16

Page 25: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

開発する言語とご自分の好みで、好きな統合開発環境を使ってください。

Eclipse であれば、IBM Eclipse Tools for Bluemix が便利です。• https://marketplace.eclipse.org/content/ibm-eclipse-tools-bluemix

– 様々な操作を Eclipse GUI で実施可能• アプリケーションやサービスの作成と管理• Cloud Foundry によるアプリケーションのデプロイ• Bluemix で稼動する Java アプリケーションのリモートデバッグ

– 参考文献• Bluemix 上で稼動する Web アプリケーション開発方法 - Java 編

• https://www.ibm.com/developerworks/jp/cloud/library/j_cl-bluemix-java-app/

• IBM Eclipse tools for Bluemix の構成手順

• http://www.slideshare.net/hiroakikomine/ibm-eclipse-tools-for-bluemix

開発環境は?

252016/7/16

Page 26: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016© Copyright IBM Corporation 2016

Watson サービスの詳細

• Natural Language Classifier サービス

• Retrieve and Rank サービス

• Dialog サービス

• Document Conversion サービス

• Speech to Text サービス

• Text to Speech サービス

262016/7/16

Page 27: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

Watson API でのソフトバンクとの協業

272016/7/16

Dialog

Document Conversion

Retrieve and Rank

Natural LanguageClassifier

Text To Speech

Speech To Text

Page 28: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

質問応答のシナリオに適用できるサービスの組み合わせ

282016/7/16

意図判別

対話

情報検索

音声コミュニ

ケーション

コンテンツ

Dialogルールによる応答と対話のシステム

Document Conversion既存文書を Watson で利用できるコンテンツに変換

Retrieve and Rank検索と機械学習アルゴリズムによるランキング

Natural Language Classifier機械学習による自然文の意図の分類

Text To Speechテキストから音声での発話

Speech To Text音声からテキストへの変換

Watson を組み込んだ対話型のアプリケーション

Page 29: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

活用想定例:仮想ショッピング店員

292016/7/16

Speech to Textサービス•ユーザーの音声をテキストに変換し、他のサービスの入力とする

Dialogサービス•対話のフローを制御•対話の中で引きだした情報を管理服のサイズ、好みの色など

Text to Speechサービス•アプリケーションからの応答から音声を合成して、ユーザーに出力する

Natural Language Classifier サービス•短いテキストから意図を分類「大きめのサイズはありますか」

「少し、小さいです」「need_bigger_size」クラスに分類

•会話の分岐を決定

使用しているサービス

お客様は音声でリクエストし、Watson も音声で回答します。

Page 30: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

Watson質問応答サービスのアプローチと位置づけ

302016/7/16

意図

同じ意図の質問数

1

10

20

頻繁に聞かれる質問

稀な質問

Watsonが提供する複数の推論アルゴリズム

質問を分類し事前に用意された回答やアクションへつなげる 膨大な知識から回答を探索し評価する

Watson Engagement Advisor(Natural Language Classifier)

Knowledge Expansion(Retrieve & Rank)

Page 31: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

カスタマーサポートでユースケース

312016/7/16

?

!

仮想エージェント

?

!

?

!

エージェント支援(コールセンター)

仮想エージェントのシナリオは Natural Language Classifier サービスに向いています。

人間のエージェントはより複雑で難しい質問に集中できます。Retrieve and Rank サービスは、エージェンが未知の回答を探し出す手助けとなります。

Page 32: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016© Copyright IBM Corporation 2016

Watson サービスの詳細

• Natural Language Classifier サービス

• Retrieve and Rank サービス

• Dialog サービス

• Document Conversion サービス

• Speech to Text サービス

• Text to Speech サービス

322016/7/16

Page 33: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

自然言語の処理に深層学習(Deep learning)を適用し、入力されたテキストの意図を理解して、あらかじめ定義したクラスに分類するサービスです。

あらかじめ大量の文章を読み込むことで、自然言語の基礎知識(base knowledge)を持ちます。

適用業務分野で定義されたクラスとサンプルのテキストを集めたトレーニングデータで学習させた分類器で、新たに与えられる未知の文を分類してその意図を認識します。

意図とは– 質問や発言から言語に含まれるノイズを取り除いて、それが何を言お

うとしているか、あるいは何を聞こうとしているのかということ例:

• 「銀行口座はどうやって開けますか?」と「銀行で口座を開くために必要なものを教えてください。」

• どちらの質問も「銀行で口座を開く」と言う同じ意図を持っており、それ以外の言葉はノイズです。

Natural Language Classifier サービス – 概要

332016/7/16

Page 34: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

Natural Language Classifier サービスの – 技術

34

Natural Language Classifier サービスは機械学習のアルゴリズムを使用して、入力された短いテキストからその意図を判別して返します

アプリケーション

Deep

Learning

? !

意図(隠れたシグナル)

+ ノイズ

分類器 意図テキスト

回答

2016/7/16

Natural LanguageClassifier サービス

Page 35: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

自然言語の処理1. 質問に回答するシナリオ

ユーザーが問い合わせたりタイプした質問の回答を予想する2. ツィッター/SMS メッセージの分類

ツィッターのメッセージの意図をくみ取り、適切な対応をする3. 感情分析

メッセージに含まれるその人の感情を特定し、直接の対応をする4. Dialog と組み合わせて分類を行う

手順を追ったガイダンスを行う中でユーザーの状況や求めるものを特定する

Natural Language Classifier サービス – 利用シナリオ

352016/7/16

Page 36: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

アプリケーション

NLC サービス – ライフサイクルと呼出し手順

36

分類器の作成[POST] /v1/Classifiers

ステータスの取得[GET] /v1/Classifiers/

{Classifier_id}

質問の分類[POST/GET] /v1/Classifiers/{Classifier_id}/classify

分類結果の処理(アプリケーション側の処理)

分類器の削除[DELETE] /v1/Classifiers/{Classifier_id}

“Training”

トレーニングデータを変更したときには、変更したデータを送信して新しい分類器を作成します。

“Available”

トレーニングデータを送信して新しい分類器を作成します。

作成した分類器が「Available」になるのを待ちます。

アプリケーションは、ラベルをもとにユーザーへの応答を行います。

質問を投入して分類器による分類を行い、ラベルを返します。

不要になった分類器を削除します。

2016/7/16

Page 37: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

トレーニングデータ– あらかじめ定義した意図を示すクラスラベルと、その意図に該当する

サンプルの文章を集めた CSV ファイル• UTF-8 でエンコード• 最大で 15,000レコードで、1行は1024文字以下• その他の注意事項

• http://www.ibm.com/watson/developercloud/doc/nl-classifier/data_format.shtml#top

トレーニングメタデータ– 分類器の言語設定と名前を定義

NLC サービス – トレーニングデータ

372016/7/16

"今日はどれくらい暑い?",temperature

"外はどれくらい暑い?",temperature

"蒸し暑くなるかなあ?",temperature

…"風が強いか?",conditions

"今日雨が降るか?",conditions

"雨の可能性があるかな?",conditions

{

"language":"ja",

"name":"My Classifier“

}

トレーニングデータ メタデータ

Page 38: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

NLC API を直接呼び出す– http://www.ibm.com/watson/developercloud/

natural-language-classifier/api/v1/?curl#create_classifier

Watson SDK (Java/Node/Python)から呼び出す– http://www.ibm.com/watson/developercloud/

natural-language-classifier/api/v1/?node#create_classifier

NLC Toolkit を利用– 作成した NLC サービスの「管理」ページから

「Access the beta toolkit」ボタンをクリック

NLC 分類器の作成方法

382016/7/16

Page 39: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

気温と天候についての会話を分類したトレーニングデータweather_data_train_ja.csv を使用します。– LabFiles¥Exercise_01 にファイルがあります。

NLC Toolkit を用いて自然言語を分類する分類器を作成し、分類器でトレーニングが完了するのを待ちます。– トレーニングに数分から数十分の時間がかかります。

分類器に適当な文を入力して正しく分類できるかどうかを確認します。

実習 2-1:NLC 分類器の作成

392016/7/16

Page 40: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

1. Bluemix のダッシュボードで先ほど作成した NLC サービスを開き、「管理」ページを開きます。

2. 「Access the beta toolkit」ボタンをクリックします。

実習手順: NLC 分類器の作成

402016/7/16

Page 41: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

3. 「確認許可」画面で「確認」ボタンをクリックします。

4. Toolkit 画面の「Classifiers」ページが開かれるので、「Add trainingdata」の「+」をクリックします。

実習手順: NLC 分類器の作成

412016/7/16

Page 42: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

5. 「Upload training data」ボタンをクリックして、weather_data_train_ja.csv をアップロードします。

6. トレーニングデータが適切にアップロードされたことを確認します。

実習手順: NLC 分類器の作成

422016/7/16

Page 43: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

7. 「Create classifier」ボタンをクリックして分類器を作成します。

8. 「Create Classifier」画面で言語で日本語を選択し、分類器の名前を適当に設定して「Create」ボタンをクリックします。

9. 分類器が作成され、トレーニングが開始されます。トレーニングには数分から数時間かかります。

実習手順: NLC 分類器の作成

432016/7/16

Page 44: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

ニューラルネットワークを用いた人工知能の構築技術の総称– 脳(神経細胞)の働きを模した学習アルゴリズム

特に、深く大規模な構造を備えていることが特徴

Deep Learning(深層学習)

44

http://www.slideshare.net/nlab_utokyo/deep-learning-49182466

2016/7/16

Linear

Transformation

Linear

Transformation

Linear

Transformation

Linear

Transformation

1階層目「線」

入力「画素」

2階層目「部品」

3階層目「物体」

Page 45: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

テキストを理解するために単語からはじめる

単語の意味を、それに頻繁に付随しているものから学びます この学習をたくさんの自然言語テキストから行います

45

rough the night with the stars shining so brightly, it

made in the light of the stars. It all boils down, wr

surely under the bright stars, thrilled by ice-white

m is dazzling snow, the stars have risen full and cold

un and the temple of the stars, driving out of the hug

in the dark and now the stars rise, full and amber a

bird on the shape of the stars over the trees in front

But I couldn’t see the stars or the moon, only the

they love the sun, the stars and the moon. None of

r the light of the shiny stars. The plash of flowing w

2016/7/16

Page 46: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

莫大な数のテキストで、さまざまなコンテキストを調べて、単語のベクトル表記を学習します。

その結果、単語はもはやばらばらなシンボルではなくなります。

– “brightly”(明るく) は他の適当に選んだ単語によりも “shining”(輝く) と関連性がある

– 学習された表現空間で、線形の意味関連が現れてくる• “king” と “queen” の関係は、

“man” と “woman” の関係と同じ

• Paris – France + Italy ≈ Rome

単語や文字をベクトル表記で表現する

46

man

woman

uncle

aunt

king

queen

2016/7/16

Page 47: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

トレーニングデータと Classifier の仕組み

トレーニングデータによりたくさんのサンプルの質問を投入

Classifier が意図を探す際に類似のテキストを見つける可能性が高まり、結果の信頼度もあがる

Classifier

Natural Language Classifier

意図

Classifierの能力はトレーニングデータの内容で決まります。

トレーニングデータ

サンプル質問 サンプル

質問

サンプル質問 サンプル

質問

47

新しい質問

トレーニングモデル

2016/7/16

Page 48: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

ユースケース: 病院の代表電話にかかってくる電話の対応(病院の仮想エージェント)

意図の階層:– 施設情報

• 面会時間• 駐車場• 食堂• 交通手段• 携帯電話の使用

– 入院案内• 衣類のレンタル• 食事情報• 個室案内• 入院手続き…

意図の階層化の例 – ひとつの分類器

それぞれのリーフ要素が意図を表しています。それぞれの意図に対して必要な回答とそれを表示するための仕組みを用意します。

48

意図の階層化を行うことで、意図の粒度を合わせるとともに、対応すべき必要な意図が抜けることを防ぐことができます。

2016/7/16

Page 49: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

複数の分類器を用意し、同時にあるいは順番に呼ぶこともできます。

同じテキストから異なる種類の意図を判別するために、複数の分類器を使用します。

「要望の種類」の分類器

複数の分類器を使用する例

49

「水漏れがして服が汚れたよ」

メンテナンス要員の派遣

支配人よるフォローアップ対応

ホテルのゲストからのメッセージの例:

設備

サービス時間

ルームサービス

ランドリー

「感情」の分類器

怒り

喜び

感謝

苦情

2016/7/16

Page 50: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

作成した分類器のステータスを確認し、トレーニングが完了した分類器で適当な文を入力してその分類結果をテストします。

実習手順

1. NLC Toolkit で分類器のステータスが「Available」になっているのを確認し、「Test and improve performance」ボタン(右矢印)をクリックします。

2. 「Improve performance」ページで適当な文を入力して分類器のテストをします。

実習 2-2: NLC 分類器でのテキストの分類

502016/7/16

Page 51: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

適当なユースケースで簡単な会話を行うアプリケーションを開発すると想定して、トレーニングデータを作成し分類器をトレーニングください。– 例:

• 研究室の紹介アプリケーション• よろず相談エージェント• 暇つぶしの話し相手• バーチャル恋人

などなど

トレーニングデータを作成するに当たり、以下の点を考慮してください。– アプリケーションで回答する質問の範囲を決めて、それをカバーする

意図(クラス)を定義する。– アプリケーションで回答しない質問の例を考える。必要に応じて回答

しない質問としてひとつのクラスに分類する。→ 「申し訳ありませんが、その質問にはお答えできません。」

– トレーニングデータには、それぞれの意図に該当するなるべくリアルなサンプルの質問文を用意する。

課題 1:NLC で仮想エージェントの作成

512016/7/16

Page 52: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016 522016/7/16

ジョージア工科大学のアショク・ゴール教授らの研究チームは、IBMの人工知能システムWatsonを使って、オンライン学習プログラムのTAをコンピューターに担当させるという実験を行いました。なお、実験ではオンライン学習する学生に、コンピューターのTAがいるという事実は伏せられています。

学生の質問に答えたり相談にのったりするコンピューターTAには「Jill Watson」という女性の名前が与えられました。実際に学生への対応を始めるまでに、ゴール教授らは、Jillに約4万件分の学生からのメールやチャットを読み込ませて、質問や相談に対する応答方法を学習させました。そして、Jill自身が「97%以上の精度で正しく答えられる」と判断した質問にのみ応答することにして、実際にオンライン学習をする300人強の学生のための9人いるTAの一人として、2016年1月からJillを運用し始めました。

ゴール教授によると、実際の教室での講義に比べるとはるかに多くの学生に学習の機会を与えられるオンライン学習での最大の悩みは、学生から寄せられる大量の質問への対応であるとのこと。学生の質問の大半は、これまでにも、そしてこれからも何度も寄せられるであろう典型的な質問で、このありふれていて回答が決まっている質問への対応に、TAが忙殺されているという現状があるそうです。そのため、Jillのように典型的な質問や相談に対応できるロボットTAが実用化されれば、人間のTAにしかできない「より深い内容のやりとり」に「人間の」TAは集中することが期待でき、オンライン学習はより大きな成果を上げられると考えられています。

人工知能Watsonが学生の教育アシスタント(TA)に~学生たちはTAがコンピューターだとは気づかず

GIGAZINEニュースサイト翻訳のWSJの記事よりImagine Discovering That Your Teaching Assistant Really Is a Robot http://www.wsj.com/articles/if-your-teacher-sounds-like-a-robot-you-might-be-on-to-something-1462546621

Page 53: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

NLC の API Reference には、cURL の他に Node.js や Python でのAPI アクセス方法が記載されています。-d オプションをつけることでAPI からのレスポンスを表示できるので、API の動きを理解できます。

LabFiles の Exercise_3 フォルダに、サンプルの Node.js と Pythonのコードがあります。以下の手順で実行してください。1. 必要なライブラリのインストール

• [Node.js] npm install watson-developer-cloud• [Python] pip install --upgrade watson-developer-cloud

2. 以下のファイルを編集して、サービスにアクセスする資格情報を設定

• [Node.js] nlcConstants.js• [Python] nlcConstants.py

3. 以下のコマンドで NLC 分類器の一覧を取得• [Node.js] node nlcListClassifiers.js• [Python] python nlcListClassifier.py

注意– Node.js では必要なライブラリを追加でインストールしてください。– Python は 2.7 で動作確認しています。

実習 3: プログラムでの NLC サービスへのアクセス

532016/7/16

興味ある方は持ち帰って試してください

Page 54: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016© Copyright IBM Corporation 2016

Watson サービスの詳細

• Natural Language Classifier サービス

• Retrieve and Rank サービス

• Document Conversion サービス

• Dialog サービス

• Speech to Text サービス

• Text to Speech サービス

542016/7/16

Page 55: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

Retrieve and Rank サービスは、2つの情報検索のコンポーネントをひとつにまとめたサービスです:– Apache Solr による検索 (Retrieve)

• http://lucene.apache.org/solr/

– 検索結果を改良する機械学習による再ランク (Rank)

この組み合わせにより、検索結果にランカーによる再ランクが適用され、より関連性のある結果を得ることができます。

Retrieve and Rank – 概要

552016/7/16

Retrieve Rank

ランカー(トレーニングモデル)

質問

Retrieve によってSolrで検索された結果

Ranker で再ランクされた

結果

回答ユニットのドキュメント

トレーニングデータ

Solr インデックス(回答ユニットのドキュメント)

Page 56: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

Retrieve は、IBM プラグインを組み込んだ Solr 検索によって、入力された質問に関連する回答文書の候補と特徴ベクトルを取得します。

Ranker は、トレーニングデータ(グランドトゥルースから生成された特徴ベクトル)でトレーニングされた機械学習モデルによって、回答候補を再ランクします。

Retrieve and Rank で解答を取得するメカニズム

562016/7/16

Solrインデックス Retrieve の結果 Rankerの結果

Retrieve

Retrieve の結果を再ランクすることで最終結果が得られる

Ranker

Retrieve によって回答候補が検索される

Page 57: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

特徴量 (Feature) と特徴ベクトル (Feature Vector)

572016/7/16

輪郭の特徴量

目の特徴量

耳の特徴量

鼻の特徴量

口の特徴量

特徴ベクトル

機械学習により、この特徴ベクトルが

「イケメン」を示しているかを判別できる

Page 58: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

1. 学習データとして、質問とそれに対する回答例を投入

2. 学習データの内容を特徴ベクトル(Feature Vector) として表現

– (検索スコア、検索数, …)

3. それぞれの特徴ベクトルをグランドトゥルースの関連度でラベル付けをしてトレーニングデータとする

– (例えば 0, 1, 2 …)

4. トレーニングデータから学習してモデルを作り、新たな質問の回答候補を再ランクする

ランカーの学習と再ランク

582016/7/16

Ranker

学習モデル

Ranker

グランドトゥルース{Q1, Q2, … Qx}

ランキングRetrieveの検索結果 出力

トレーニング

Page 59: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

Learn to Rank として知られている情報検索システムでの研究をベースにしています。

Learning to rank– https://en.Wikipedia.org/wiki/Learning_to_rank

• Learning to rank or machine-learned ranking (MLR) is the application of machine learning, typically supervised, semi-supervised or reinforcement learning, in the construction of ranking models for information retrieval systems. Training data consists of lists of items with some partial order specified between items in each list. This order is typically induced by giving a numerical or ordinal score or a binary judgment (e.g. "relevant" or "not relevant") for each item. The ranking model's purpose is to rank, i.e. produce a permutation of items in new, unseen lists in a way which is "similar" to rankings in the training data in some sense.

– Based on Yahoo competition in 2010• From RankNet to LambdaRank to LambdaMART: An Overview

• http://research.microsoft.com/en-us/um/people/cburges/tech_reports/MSR-TR-

2010-82.pdf

• Yahoo! Learning to Rank Challenge (Archive)

• http://archive.is/sr8r

ランカーの内部メカニズム

592016/7/16

Learning to Rank あるいは「機械学習によるランク (machine-learned ranking: MLR)」 は、情報検索システムでのランキングモデルの作成にあたり、多くの場合には専門家の管理下で、ときには部分的な管理や強化アルゴリズムによって学習が行われる、機械学習のアプリケーションです。リスト内で順位付けされたアイテムで構成されたリストがトレーニングデータになります。この順位付けは大抵は、それぞれのアイテムに対して(関連があるか無いかどうかを示す)数値や序列のスコアや相対値によって定義されます。ランキングモデルの目的はランクをすることで、新たに与えられた「はじめて見る」一連のアイテムを、トレーニングデータのランキングと意味的にで「同じように」なるように並べ替えすることです。

Page 60: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

Retrieve and Rank サービスの典型的な利用例の一つは、顧客対応を行うプロフェッショナルです。彼らは莫大な量の資料から関係ありそうな情報を即座に発見し顧客対応を行う必要があります。– 顧客サポート

• 日々増えてくる回答候補の文書資料の中で、顧客への回答を瞬時に探す必要があります。

– フィールドの技術者• オンラインで技術情報の収集に利用します。

– プロフェッショナルサービス• 重要なプロジェクトの推進で適切なスキルを持った優秀な人材を

探します。

検索対象の文書に、評価に利用できる情報があると、ランキングの学習データとして使用できる。– 例: 文書の参照数、「いいね」数、作成者の評判 などなど

⇒ 単純な検索以上の結果をもたらす可能性があります。

Retrieve and Rank サービスの典型的な利用例

602016/7/16

Page 61: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

Retrieve and Rank サービスの基本的な利用手順

612016/7/16

1. Solr クラスタを作成する

2. Solr 構成ファイルを作成してアップロード

3. Solr コレクションの作成

5. ランカーを作成してトレーニング

トレーニングデータを再作成したときは、その修正したデータで新しいランカーを作成します。

6. グランドトゥルースの作成と更新

6. 結果を評価しグランドトゥルースの更新

4. 文書を投入してインデックス作成

クラスタ名とサイズを指定してクラスタを作成。作成後、クラスタが利用可能になるまで待つ。

テンプレートをもとにスキーマを定義し、パッケージした構成ファイルをアップロードする。

アップロードした構成ファイルと関連つけて Solrコレクションを作成する。

回答となる文書を集めて整形し、 Solr コレクションに投入して検索できるようにインデックスする。

サンプルとなる質問と関連する回答を集め、関連度スコアとともに関連度ファイル(CSV)にまとめる。

関連度ファイル(CSV)からトレーニングデータを生成し、アップロードしてランカーを作成する。

トレーニングが完了するのを待ち、ランカーを試して再ランクされた結果を評価する。

Page 62: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

LabFiles の 「Exercise_04」フォルダに、ソフトバンク社向けに提供した Retrieve and Rank サービスのハンズオン実習資料を置きました。このハンズオン実習をすることで、Retrieve and Rank サービス(とDocument Conversion サービス)の構成と利用の方法を学ぶことができます。– 実習の手順を書いた PDF ファイル– 実習に必要なファイルをまとめた ZIP ファイル

実習の手順を終えるには、おおよそ4~6時間を想定しています。

実習 4: Retrieve and Rank の構成と利用

622016/7/16

興味ある方は持ち帰って試してください

Page 63: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016© Copyright IBM Corporation 2016

Watson サービスの詳細

• Natural Language Classifier サービス

• Retrieve and Rank サービス

• Document Conversion サービス

• Dialog サービス

• Speech to Text サービス

• Text to Speech サービス

632016/7/16

Page 64: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

既存の様々な文書を、Watson サービスで利用可能な形式に変換します。

投入して変換できるファイル:– PDF 文書– Microsoft Word 文書– HTML 文書

サービスから取り出せる形式:– 規格化された HTML 文書– 規格化されたプレーンテキスト文書– 回答ユニットを含む JSON 文書

→ 他の Watson サービスで利用可能

利用方法– 他の Watson サービスとの連携

• Retrieve and Rank サービス• Personality Insights サービス• AlchemyAPI の各種サービス

Document Conversion サービス – 概要

642016/7/16

Page 65: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

Document Conversion サービスの変換プロセス– このパスを通じて変換されるので、変換オプションはこのパスを考慮

して設定します。

Document Conversion サービスの変換プロセス

652016/7/16

Page 66: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016© Copyright IBM Corporation 2016

Watson サービスの詳細

• Natural Language Classifier サービス

• Retrieve and Rank サービス

• Document Conversion サービス

• Dialog サービス

• Speech to Text サービス

• Text to Speech サービス

662016/7/16

Page 67: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

「ダイアログ」= 仮想エージェントとユーザーとの対話の窓口

Watson Dialog サービスは仮想エージェントとの会話を管理するための包括的なプラットフォーム提供するサービスです。

ルールベースでのユーザーの入力を認識して、対応する返答を返します。

Dialog サービス – 概要

672016/7/16

<output>

<prompt selectionType="RANDOM">

<item>Which fruit do you like?</item>

</prompt>

<getUserInput>

<input>

<grammar>

<item>I like orange.</item>

<item>I love orange.</item>

<item>*orange</item>

</grammar>

<output>

<prompt selectionType="RANDOM">

<item>You like orange.</item>

<item>Orange is great</item>

</prompt>

</output>

</input>

Dialogシステムの最初のメッセージ

ユーザーから入力されたメッセージのマッチングルール

マッチしたときの、Dialogシステムからの返答メッセージ

Page 68: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

仮想エージェントアプリケーションのダイアログの作成。ダイアログがあることで、人間と仮想エージェントが自然で自由な流れで、人間のように会話をできます。

Dialog サービスを使って作成された仮想エージェントアプリケーションは、以下のようなかたちでユーザーを支援します。

Dialog サービスの一般的な使用例

ユーザーに応じた、コンテキストを認識したやり取り

質問への回答

製品提案や意思決定支援を提供

必要な手順に従って、一連の操作の実施

段階的なプロセスを介してのユーザーガイド

曖昧な問い合わせの明確化

外部システムとの取次ぎ

個性を見せることで人間らしいやり取りの実現

画面操作などのガイド

対話的な問題解決の提供

2016/7/16 68

Page 69: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016© Copyright IBM Corporation 2016

Watson サービスの詳細

• Natural Language Classifier サービス

• Retrieve and Rank サービス

• Dialog サービス

• Document Conversion サービス

• Speech to Text サービス

• Text to Speech サービス

692016/7/16

Page 70: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

音声信号の構成と文法や言語の構造を用いて、音声データをテキストデータに変換

音声の中に、特定のキーワードを含むか(開始と終了時間)の検知が可能(ベータ)

活用シーン– コールセンターにおける、やりとりの書き起こし– 音声によるシステムのコントロール

入出力– 入力:ファイルまたはストリーム形式の音声データ– 出力:音声から認識されたテキスト

Speech to Text サービス – 概要

702016/7/16

Page 71: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

IBM Watsonが会話音声認識におけるブレイクスルーを発表

712016/7/16

昨年、英語電話音声会話の NIST Switchboard という公開されたベンチマークテストで8%のWERを達成しました。これはそれまでに発表した最善の結果よりも36%のエラー率削減でした。

今年、Deep Learningの技術を利用している音響モデルと言語モデルの両方をさらに改良することによって、WERを6.9%までさらに削減することができました。

George Saon / 2016年4月28日

https://developer.ibm.com/watson/blog/2016/04/28/recent-advances-in-conversational-speech-recognition-2/

(2015) https://developer.ibm.com/watson/blog/2015/05/26/ibm-watson-announces-breakthrough-in-conversational-speech-transcription/

“Recent Advances in Conversational Speech Recognition”

Page 72: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

Speech to Text サービス – 詳細

722016/7/16

項目 内容

言語 アメリカ英語、イギリス英語、アラビア語、ポルトガル語、スペイン語、標準中国語、日本語、フランス語

種類 一般用途広帯域モデル、電話音声用狭帯域モデル

提供形態 Bluemix上でREST APIを公開iOS、Android OS向けにSDKも公開

API特徴 1. ストリーミング認識(発話中からリアルタイムで結果出力)2. 各単語の音声認識信頼度を出力可能3. 2位以下の音声認識結果(対立仮説)も入手可能

認識精度 Deep Learning技術を利用しており高精度

プラン 様々な追加機能と追加言語が計画中

WORD START TIME(SEC) END TIME(SEC) CONFIDENCE

寿司 0.29 0.6 0.7

食べたい 0.6 1.14 0.8

(単語) (開始時間位置) (終了時間位置) (音声認識信頼度)

例:対立仮説例:音声認識信頼度

デモページ:https://speech-to-text-demo.mybluemix.net/

Page 73: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

ルノワールを検出するよう構成した例

音声でのキーワード出現の検出(Keyword Spotting)

732016/7/16

{

"results": [

{

"keywords_result": {

"ルノワール": [

{

"normalized_text": "ルノワール",

"start_time": 0.44,

"confidence": 0.885,

"end_time": 1.02

}

]

},

"alternatives": [

{

"confidence": 0.835,

"transcript": "ルノワール展見てきた "

}

<後略>}

検出された開始時間終了時間

Page 74: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016© Copyright IBM Corporation 2016

Watson サービスの詳細

• Natural Language Classifier サービス

• Retrieve and Rank サービス

• Dialog サービス

• Document Conversion サービス

• Speech to Text サービス

• Text to Speech サービス

742016/7/16

Page 75: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

テキストから自然なリズムやイントネーションを再現した音声ストリームを生成

Text to Speech サービス – 概要

752016/7/16

項目 内容

言語 英語(米)、英語(英)、スペイン語、スペイン語(北米)、フランス語、ドイツ語、イタリア語、日本語、ブラジルポルトガル語

種類 9言語男女合計13音声

提供形態 Bluemix上でREST APIを公開

API特徴 1. 英(米)・英・独・仏語についてはSSMLタグを部分的にサポート1. 読みの指定2. 数字の読み方の指定(桁読み、棒読み)3. ポーズ位置の指定、など

2. 英(米)1音声ではSSMLタグによる感情音声合成を実現(GoodNews, Apology, Uncertainty)

3. ユーザー辞書の利用4. WAV、Ogg opus、FLACフォーマットを出力

合成品質 統計的な韻律モデルを用いて、波形を接続・編集

プラン より詳細な制御機能と追加言語が計画中

デモページ:http://text-to-speech-demo.mybluemix.net/

Page 76: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

Watson Developer Cloud にある speech-javascript-sdk を使用して、STT/TTS を使用したサンプルコードを実行します。– GitHub:https://github.com/watson-developer-cloud/speech-

javascript-sdk– リリースモジュール:https://github.com/watson-developer-

cloud/speech-javascript-sdk/releases• 現時点では、STT のサンプルに日本語音声モデルを使用するコー

ドが実装されていないので、LabFiles の Exercise_05 に含まれる修正したモジュールを使用します。

• speech-javascript-sdk-0.19.1-modified-20160712.zip

• watson-speech.js

このサンプルは Node.js でサーバーを構成していますが、クライアント側の実装で使用さている Javascript コードは他の実装方法でも参考になります。

実習 5:音声アプリケーションの実装

762016/7/16

独自アプリケーション

ブラウザ

Watson Developer Cloud

トークン管理

トークンの取得

音声の操作

Page 77: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

1. Bluemix のダッシュボードで Speech to Text と Text to Speechサービスを作成します。

– アプリへのバインドは必要ありません。サービス名はデフォルトで生成された値で構いません。

– 作成された STT/TTS のサービスをそれぞれ開き、アクセスするためのサービス資格情報をテキストファイルに記録します。

2. speech-javascript-sdk-0.19.1-modified-20160712.zip を適当なフォルダに展開します。

3. 展開したフォルダに含まれる speech-javascript-sdk-0.19.1¥examples¥static¥watson-speech.js はダミーのファイルなので、LabFiles にある watson-speech.js で置き換えます。

実習手順:音声アプリケーションの実装

772016/7/16

Page 78: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

展開したフォルダの speech-javascript-sdk-0.19.1¥examples フォルダにある、stt-token.js と tts-token.js を編集し、先ほど記録したサービス資格情報の username と password を設定します。また必要に応じて url も修正します。

実習手順:音声アプリケーションの実装

782016/7/16

// For local development, replace username and password or set env properties

var sttConfig = extend({

version: 'v1',

url: 'https://stream.watsonplatform.net/speech-to-text/api',

username: process.env.STT_USERNAME || '<username>',

password: process.env.STT_PASSWORD || '<password>'

}, vcapServices.getCredentials('speech_to_text'));

// For local development, replace username and password or set env properties

var ttsConfig = extend({

version: 'v1',

url: 'https://stream.watsonplatform.net/text-to-speech/api',

username: process.env.TTS_USERNAME || '<username>',

password: process.env.TTS_PASSWORD || '<password>'

}, vcapServices.getCredentials('text_to_speech'));

stt-token.js

tts-token.js

アプリケーションを Bluemix で実行するときには、これらの値はアプリの環境変数から取得されるので、ここで設定する必要はあり

ません

Page 79: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

コマンドプロンプトを開き、展開したフォルダに含まれる speech-javascript-sdk-0.19.1¥examples フォルダに移動し、以下のコマンドで Node.js の追加パッケージをインストールします。

以下のコマンドでサンプルのサーバーアプリケーションを起動します。

サーバーが起動したら Firefox ブラウザから http://localhost:3000/にアクセスして、サンプルアプリケーションを試します。

実習手順:音声アプリケーションの実装

792016/7/16

> npm install dotenv

> npm install express

> npm install vcap_services

> npm install watson-developer-cloud

> npm start

Example IBM Watson Speech JS SDK client app & token server live at

http://localhost:3000/

Secure server live at https://localhost:3001/

Page 80: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

実習手順:音声アプリケーションの実装

802016/7/16

日本語が使用できる音声認識のサンプル

日本語が使用できる音声合成のサンプル

Page 81: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

実習手順:音声アプリケーションの実装

812016/7/16

モデルに「ja-JP_BroadbandMddel」を選択します。「Start …」ボタンでストリ-ミング開始

マイクの使用確認ダイアログが表示されたら、適切なマイクを選択して「Share …」をクリックします。

microphone-streaming-model.htmlデモでの音声の認識

認識されたテキストを表示します。

Page 82: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

実習手順:音声アプリケーションの実装

822016/7/16

text-to-speech-custom-voice.htmlでの音声合成

音声に「ja-JP_EmiVoice」を選択します。「Synthesize test」ボタンで音声合成の開始

合成するテキストを入力します。

Page 83: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

既存の Web ページやアプリケーションに、TTS/STT を使用して音声機能を追加してください。– 例:

• 研究室の紹介ページで、ボタンを押すと音声で説明すようにする。• 既存アプリケーションを、音声で操作できるように拡張する。• 先の課題で作成した NLC での仮想エージェントのフロントエンド

を音声対応にする。

などなど

課題 2:音声アプリケーションの実装

832016/7/16

Page 84: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016© Copyright IBM Corporation 2016

その他の日本語に対応したWatson サービス

Personality Insights

Visual Recognition

842016/7/16

Page 85: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

電子メール、テキスト・メッセージ、ツイートやフォーラムの書き込みを分析し、作成者のパーソナリティーを判定します。

入力データ– 分析対象者が一人で書いた、最少で1000語の自然文。– 統計学的に有意な結果を得るためには、 少なくとも3500語以上、理想的には

6000語以上の長さのテキストが必要です。– Twitter のつぶやきでも構いません。

出力データ

Personality Insights

852016/7/16

– 5因子モデルによる性格分析• Openness (知的好奇心)• Extraversion(外向性)• Agreeableness(調和性)• Emotional range(情緒不安定性)• Conscientiousness (誠実性)

– 欲求• 実用主義、社会性、調和• 自由主義、親密

– 価値• 自己超越、変化許容性、自己増進• 快楽主義、現状維持

Page 86: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

Personal Insight デモページ

862016/7/16

https://personality-insights-livedemo.mybluemix.net/

Page 87: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

Personal Insight デモページ

872016/7/16

結果(性格のサマリー)の例

道草 -夏目漱石 (日本語)

• 熱くなりやすいタイプであり、ひどく陽気なタイプであり、また慣例にとらわれないタイプです.

• 大胆なタイプです: 時間をかけて慎重に検

討するよりもむしろ即座に行動を起こします. 圧力を受けても冷静なタイプです:

冷静で、予期しない出来事にも効果的に対処します. また、自主性の高いタイプです: 自分の時間を大切にしたいという強い願望があります.

• 組織への帰属を意識して意思決定するタイプです.

• 自主性があなたの行動に大きな影響を与えています: 最高の成果が得られるよう、

自分自身で目標を設定する傾向があります. 成功することにはあまりこだわりません: 自分の才能を誇示することにあまり拘らず意思決定します.

Page 88: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

活用想定例:カスタマーケア・アシスタント

882016/7/16

パーソナリティー

検索 問合せ履歴

ジャックフロスト

顧客NO: 0011

電話番号: 080-xxx-xxx

メール: [email protected]

Twitter: @jackfrost

類似するお客様の問合せTop5

タイトル カテゴリー 日付

支払い方法について 支払 2015-01-23

充電が出来ない 故障 2015-03-15

家族プランの問合せ プラン 2015-04-04

現在、B社と契約中のお子様の電話代が安くならないかの相談を受けました。家族プランをご紹介

1. 家族割について2. プランの変更3. 割引適用条件について4. 電源の入れ方5. 充電の仕方

類似するお客様

Page 89: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016© Copyright IBM Corporation 2016

その他の日本語に対応したWatson サービス

Personality Insights

Visual Recognition

892016/7/16

Page 90: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

深層学習のアルゴリズムを使用して画像を分析し、画像に含まれるオブジェクト、顔、テキストを分析します。– 画像に含まれるオブジェクトを分析し、あらかじめサービスで持って

いるカテゴリの該当するものに確信度付きで分類します。• 利用目的に合わせたて独自に分類した画像を学習データとして、

カスタマイズされた分類器の作成も可能です。– 顔認識(Detect faces) API を使用することで、画像に含まれる顔

を検知し、性別と年連を判別します。• 有名人については人物の特定もします。

– 文字認識(Recognize text)API を使用することで、画像に含まれるテキスト(現時点で英語のみ)を認識します。

活用シーン– 画像データをカテゴリーごとに整理– ソーシャルメディアの写真からユーザーの興味をセグメント化– 特定のコンテンツに関連した画像を、探し出す

Visual Recognition – 概要

902016/7/16

Page 91: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

Visual Recognition – デモページ

912016/7/16

http://visual-recognition-demo.mybluemix.net/

Page 92: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

目的– Visual Recognition による事前分類やフィルタリングをすることで、

業務における様々な確認や分析作業を行う人間の負荷低減をする。• 不適切な画像のフィルタリング• 画像選択での事前分類• 商品や製作物の品質確認

トレーニングデータ– 分類すべきクラスごとに集められた最低10枚の画像

(適切な分類品質を得るには50枚以上)– どのクラスにも該当しないネガティブな最低10枚の画像

Visual Recognition – カスタマイズされた分類器の作成

922016/7/16

分類器

Appleクラス

(ポジティブ)

Bananaクラス

(ポジティブ)

Orangeクラス

(ポジティブ)

Vegetable(ネガティブ)

Apple

Page 93: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

Visual Recognition -カスタマイズされた分類器の使用例

932016/7/16

これらの画像と、同じ特徴を持つ画像を検出

但し、これらの画像と、同じ特徴を持つ画像は不正解

学習データ

実行結果1

77%の確信度で、この分類器にマッチ

この分類器にマッチする確信度は50%以下

実行結果 2

Page 94: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

Visual Recognition サービスを作成し、cURL で API を呼び出してサンプルの画像を分類します。

Visual Recognition サービスの Tutorial からダウンロードしたトレーニング用の画像データを使用してカスタム分類器を作成し、カスタム分類器での画像の分類を試します。

– この実習内容は、以下のページにある「Visual Recognition -Tutorial」から抜粋したものです。• http://www.ibm.com/watson/developercloud/doc/visual-

recognition/tutorials.shtml

実習 6: Visual Recognition での画像分析

942016/7/16

Page 95: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

1. Bluemix のダッシュボードで Visual Recognition サービスを作成します。

– アプリへのバインドは必要ありません。サービス名はデフォルトで生成された値で構いません。

2. 作成された Visual Recognitionサービスを開き、アクセスするためのサービス資格情報(api_key)をテキストファイルに記録します。

3. コマンドプロンプトで以下の cURL コマンドを発行し、fruitbowl.jpgの画像の分類し、その結果を確認します。

実習手順: Visual Recognition での画像分析

952016/7/16

> curl -k -X POST -F "[email protected]" "https://gateway-

a.watsonplatform.net/visual-recognition/api/v3/classify?api_key={api-

key}&version=2016-05-20"

Page 96: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

4. cURL による呼び出し結果を確認します。

– 「fruit」に高い確信度で分類されていることがわかります。

実習手順: Visual Recognition での画像分析

962016/7/16

{

"images": [

{

"classifiers": [

{

"classes": [

{

"class": "fruit", "score": 0.937027

},

{

"class": "apple", "score": 0.668188

},

{

"class": "banana", "score": 0.549834

},

{

"class": "food", "score": 0.524979

},

{

"class": "orange", "score": 0.5

}

],

"classifier_id": "default", "name": "default"

}

],

"image": "fruitbowl.jpg"

}

],

"images_processed": 1

}

Page 97: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

5. 「Visual Recognition – Tutorial」の Stage 2: Classifying an image セクション内の Sample files (あるいは以下のURL)をダウンロードします。

• https://github.com/watson-developer-cloud/visual-recognition-tutorial/zipball/master?cm_mc_uid=82999389183014561059798&cm_mc_sid_50200000=1468483780

6. ダウンロードしたファイルを展開します。展開されたファイルに含まれる以下の ZIP ファイルをトレーニングデータとして使用します。

– 犬を分類するためのポジティブデータ• beagle.zip、husky.zip、golden-retriever.zip

– ネガティブなデータ• cats.zip

実習手順: Visual Recognition での画像分析

972016/7/16

Page 98: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

7. 以下の cURL コマンドを発行して、カスタム分類器を作成します。

– –F パラメータ送信するデータファイルを指定しています。ポジティブなファイルには、データ名を「{クラス名}_positive_examples」としてクラス名を設定し、ネガティブデータにはデータ名に「negative_examples」を指定しています。

8. cURL コマンドのレスポンスにclassifier_id が含まれているので、テキストファイルなどに記録しておきます。

実習手順: Visual Recognition での画像分析

982016/7/16

> curl -k -X POST -F [email protected]

-F [email protected]

-F [email protected]

-F [email protected] -F "name=dogs“

"https://gateway-a.watsonplatform.net/visual-

recognition/api/v3/classifiers?api_key={api-key}&version=2016-05-20"

{

"classifier_id": "dogs_1941945966",

"name": "dogs",

"owner": "xxxx-xxxxx-xxx-xxxx",

"status": "retraining",

"created": "2016-05-18T21:32:27.752Z",

"classes": [

{“class”: “dalmatian”}, {"class": "husky"},

{"class": "goldenretriever"}, {"class": "beagle"}

]

}

Page 99: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

9. 以下の cURL コマンドを発行して、カスタム分類器をトレーニングの状況を確認します。

10. テキストエディタで myparams.json を編集し、”<classifier_id>” に先ほど作成した分類器 ID を設定します。

11. カスタム分類器の状況が「ready」になるのを待って、以下の cURLコマンドでカスタム分類器での分類を行います。

実習手順: Visual Recognition での画像分析

992016/7/16

> curl -k -X GET "https://gateway-a.watsonplatform.net/visual-

recognition/api/v3/classifiers/{classifier_id}?api_key={api-key}&version=2016-

05-20"

> curl -k -X POST -F "[email protected]" -F

"[email protected]" "https://gateway-a.watsonplatform.net/visual-

recognition/api/v3/classify?api_key={api-key}&version=2016-05-20"

{

"classifier_ids":

["<classifier_id>", "default"]

}

Page 100: Watson API トレーニング 20160716 rev02

© Copyright IBM Corporation 2016

適当なユースケースを想定して、そのユースケースの中で使用する画像を分類するためのカスタム分類器を作成してください。– 例:

• 腐った果物を自動分別する流通アプリケーション• 電車の忘れ物を分別して、問い合わせに照会するシステム• ビン・缶と燃えるものを分別する装置• 猫は通すが、狸や猪を通さない家庭用自動ドア

などなど

トレーニングデータを作成するに当たり、以下の点を考慮してください。– ユースケースで対応すべき対象物の範囲を決めて、それをカバーする

クラスを定義する。– ユースケースで対象が意図する対象物を決めて、ネガティブの画像を

収集する。

課題 3: Visual Recognition でカスタム分類器の作成

1002016/7/16