【jslgg】お手軽watsonアプリ開発セミナー

100
【JSLGG】 女性限定! お手軽Watsonアプリ開発セミナー #softlayer #blemix 日本アイ・ビー・エム システムズ・エンジニアリング株式会社 グロース・テクノロジー コグニティブ・ソリューション 佐藤 大輔 ( [email protected] / VegaSato ) Bluemixを使って、ダイエットQAに答えてくれるWatsonを作ってみよう♪

Upload: softlayerjp

Post on 14-Feb-2017

528 views

Category:

Technology


0 download

TRANSCRIPT

【JSLGG】 女性限定!

お手軽Watsonアプリ開発セミナー

#softlayer #blemix

日本アイ・ビー・エム システムズ・エンジニアリング株式会社

グロース・テクノロジー コグニティブ・ソリューション

佐藤 大輔 ( [email protected] / VegaSato )

Bluemixを使って、ダイエットQAに答えてくれるWatsonを作ってみよう♪

© 2016 IBM Corporation2

IBM Bluemixwww.bluemix.net

ご注意

この資料は日本アイ・ビー・エム株式会社および日本アイ・ビー・エム システムズ・エンジニアリング株式会社の正式なレビューを受けておりません。

資料の内容には正確を期するよう注意しておりますが、この資料の内容は2016年07月現在の情報であり、製品の新しいリリース、修正などによって動作/仕様が変わる可能性があります。

当資料は、資料内で説明されている製品の仕様を保証するものではありません。従って、この情報の利⽤またはこれらの技法の実施はひとえに使⽤者の責任において為されるものであり、資料の内容によって受けたいかなる被害に関しても⼀切の補償をするものではありません。

また、IBM、IBMロゴおよびibm.comは、世界の多くの国で登録されたInternational Business Machines Corporationの商標です。他の製品名およびサービス名等は、それぞれIBMまたは各社の商標である場合があります。現時点でのIBMの商標リストについてはhttp://www.ibm.com/legal/copytrade.shtmlをご覧ください。

© 2016 IBM Corporation3

IBM Bluemixwww.bluemix.net

目次

1.10分でわかるBluemix!

2.さわってみようBluemix!!

3.つくってみようWatsonアプリ!!!

4.まとめ

© 2016 IBM Corporation4

IBM Bluemixwww.bluemix.net

10分でわかるBluemix!

© 2016 IBM Corporation5

IBM Bluemixwww.bluemix.net

ITシステムに関わるSEが抱える課題

顧客の声をもっと細かく拾いたい

異業界のトレンドに合わせてXXをキャンペーンで売り出したい

やっぱりYYはやめよう

企業から顧客へのアプローチが刻々と変化

自然言語処理, 仮説生成,ダイナミック学習

MQTTプロトコルでセンサー情報を収集/活用

技術要素が刻々と変化

提案したいが、技術妥当性が判断できない・・・実機で試してみないと・・・

とにかく時間がない・・・開発に集中できる基盤が欲しい!!

アイデアを元に試してみたいがミドルウェアの導入が面倒・・・

© 2016 IBM Corporation6

IBM Bluemixwww.bluemix.net

アイデアを形にし、迅速に「開発に専念できる環境」を提供します

© 2016 IBM Corporation7

IBM Bluemixwww.bluemix.net

IBM Bluemix

アプリケーションを構築・管理・実行するための、オープン・スタンダードなテクノロジーを活⽤した、クラウド・ソリューション

Bluemixの主な特徴

1. オープン・スタンダードを採⽤したPaaS

2. 豊富な「API」と「サービス」の提供

3. DevOps推進のための開発ツールの提供

4. お客様に合わせた提供形態

© 2016 IBM Corporation8

IBM Bluemixwww.bluemix.net

1. オープン・スタンダードを採⽤したPaaS

Networking Networking Networking Networking

Storage Storage Storage Storage

Servers Servers Servers Servers

Virtualization Virtualization Virtualization Virtualization

O/S O/S O/S O/S

Middleware Middleware Middleware Middleware

Runtime Runtime Runtime Runtime

Data Data Data Data

Applications Applications Applications Applications

Traditional On-Premises

Infrastructureas a Service

Platformas a Service

Softwareas a Service

:利⽤者が⽤意

:サービスとして提供

Platform as a Service(PaaS)で提供することにより、開発者は基盤の⽤意の煩わしさから解放され、迅速に基盤が利⽤可能になる

© 2016 IBM Corporation9

IBM Bluemixwww.bluemix.net

オープンソースを活⽤したOpen PaaS基盤

Cloud Foundry等のオープンソース・ソフトウェアをベースとしてOpen PaaS (特定のIaaS/ベンダーに縛られないPaaS)基盤を提供

New

© 2016 IBM Corporation10

IBM Bluemixwww.bluemix.net

2. 豊富な「API」と「サービス」の提供

デファクト・スタンダードなオープンソース・ソフトウェアからIBM製品ベースのソリューションまで、100を超えるサービスから選択し、利⽤することが可能

ランタイム(言語)を選択

IBM提供

コミュニティー提供

アプリが必要とするサービス(=機能)を選択

11カテゴリーから選択・Wason・モバイル・DevOps・Webとアプリケーション・ネットワーク・統合・データおよび分析・セキュリティー・ストレージ・ビジネス・アナリティクス・モノのインターネット・API

© 2016 IBM Corporation11

IBM Bluemixwww.bluemix.net

Bluemixでの開発アプローチ

組み立て型(コンポーザブル)のアプローチを採⽤し、最小限の機能から開発

段階的に機能追加し、拡張していくスモール・スタートのアプローチが取りやすい

Internet of Things

モバイル

アプリ実行環境

データベース

コグニティブコンピューティング

必要に応じてサービスを追加・削除

アナリティクス

セキュリティー

© 2016 IBM Corporation12

IBM Bluemixwww.bluemix.net

Bluemixの基本⽤語

コンテナー

アプリ

ランタイムJava, Node.js, Ruby, PHP, Python, Go等アプリの開発言語に合わせた実行環境「コンテナー」単位で環境を提供

アプリケーション開発者が実際に開発し、アップロードするコード

サービスアプリケーションが必要とする機能を提供するいつでも好きなタイミングで作成・削除可能ランタイムとの組み合わせ可否に要注意

バインド

バインドランタイムからサービスに接続することランタイム上の環境変数(VCAP_SERVICES)

に接続情報が提供されるようになる

プッシュ

サービス作成

プッシュ作成したアプリケーションのランタイムを要求・生成する操作

アプリ開発者

© 2016 IBM Corporation13

IBM Bluemixwww.bluemix.net

提供中のサービス例) 自然言語処理&画像分析

Language Translation自然言語テキストについて翻訳対象の言語へ翻訳を行う

Relationship Extraction使⽤されている語彙の関連性を見つける

Personality Insights個人の発信した文章を解析して性格を診断する

Concept Insightsテキストからの概念の抽出を行う

Text to Speechテキスト文章を人間の音声に変換する

Speech to Text人間の音声をテキスト文章に変換する

Tradeoff Analytics複数の競合する選択肢の中から、選択を行う過程を支援する

Visual Recognition学習データに基づきイメージの分類を行う人間の顔の位置と性別・年齢判定、画像内の文字を読み取る

Natural Language Classifierテキスト文章の分類を行う(質問の意図推定など)

Dialogユーザーとの対話の制御を事前定義されたルールに基づき行い、対話の内容を記録して次のプロセスに継承

Tone Analyzerテキストの感情や社交性を解析する

Retrieve and Rank自然言語の質問に対して、回答の候補を返す

テキスト解析機能

洞察系

画像系

音声系

テキスト応答機能

Document Conversionテキスト文章を段落などの塊に分割する

BETA

日本語対応済みサービス

ベータ版サービスBETA

AlchemyAPI - AlchemyLanguageURLやテキストからポジネガ分析等を行う

(2016/05/20にAlchemyVisionと統合)

AlchemyAPI - AlchemyDataニュースやブログをキーワード等で検索する

※2016年7月現在

Conversationユーザーの発言の意図を理解し、それに応じた応答を返しながら対話を行う

非推奨

New

© 2016 IBM Corporation14

IBM Bluemixwww.bluemix.net

3. DevOps推進のための開発ツールの提供

SaaSの開発ツールであるIDS (IBM Bluemix DevOps Services)を合わせて提供

あるいはコマンドライン + お使いのIDE自由に開発を進められる

主な提供機能

アジャイルな計画立案と追跡(TRACK & PLAN)

Web IDE (Webブラウザー上でのソースコードの修正と管理)

Git, Jazz SCM, GitHubを使⽤したソースコード管理 (SCM)

Bluemixへの自動デプロイ (BUILD & DEPLOY)

EclipseやAtomなどで開発でも問題なし‼︎

© 2016 IBM Corporation15

IBM Bluemixwww.bluemix.net

アイデアを実現するための開発エディター: Node-RED

シンプルなWebアプリケーションからIoT関連のアプリケーションまで、

自由に開発可能なフロー・エディター

ブラウザー・ベースのUIを提供し、

ドラッグ&ドロップで直感的に作業ができる点がポイント!!

© 2016 IBM Corporation16

IBM Bluemixwww.bluemix.net

4. お客様に合わせた提供形態

3つの提供形態で、お客様の要件に応じた最適な環境を選択可能

パブリック・クラウド(SoftLayer)上 オンプレミス(お客様DC)

共有 専有 オンプレミスIBM Bluemix (Public) IBM Bluemix Dedicated IBM Bluemix Local

・マルチテナントの経済性を活⽤し、費⽤を抑えてアプリを開発したい

・思い立ったときにすぐに始められる迅速性を活かしたい

・いろいろなサービスを試してみたい

・規制遵守やコンプライアンス対応の観点から、SoftLayerの国内のDCでかつ占有環境を確保し、使⽤したい

・物理的に社内環境での運⽤を必要としている

・オンプレミス資産を有効活⽤したい

© 2016 IBM Corporation17

IBM Bluemixwww.bluemix.net

ハイブリッド連携も容易に実現可能

他クラウド, オンプレミスにある外部リソースとセキュアに連携し、容易に基盤をハイブリッド化するためのサービスが複数提供

例) Secure Gatewayサービス

- 他クラウド/オンプレミス上のリソースとの間の通信をセキュアに行うための連携サービス

他クラウド or オンプレミスBluemix

app

セキュア・トンネル 既存リソース

SGゲートウェイ SGクライアント

ランタイム

セキュアな通信を保証

関係ないアプリの通信の遮断も可

© 2016 IBM Corporation18

IBM Bluemixwww.bluemix.net

ここまでのまとめ

IBM Bluemixはアプリケーションを構築・管理・実行するための、

オープン・スタンダードなテクノロジーを活⽤した、クラウド・ソリューション

開発者のアイデアを形にし、「開発に専念できる環境」を提供します

Bluemixの主な特徴

1. オープン・スタンダードを採⽤したPaaS

2. 豊富な「API」と「サービス」の提供

3. DevOps推進のための開発ツールの提供

4. お客様に合わせた提供形態

© 2016 IBM Corporation19

IBM Bluemixwww.bluemix.net

もっと学びたい!

例えば、以下の資料などでBluemixの基本が学べます

[1] Bluemixハンズオンセミナー資料: 基本操作はこちらから https://ibm.biz/BMhandsontext

[2] IBM Bluemix の基礎: [1]と同じく基本操作/サンプルを説明 http://www.ibm.com/developerworks/jp/bluemix/fundamentals/

[3] 今からはじめるBluemix Webinarシリーズ: サービスの紹介など動画で公開 https://www.ibm.com/developerworks/community/wikis/home?lang=ja#!/wiki/Wdec01e50fbfa_493c_8a88_6d

d85c4d983f/page/今からはじめるBluemix Webinarシリーズ

[4] IoTをBluemixで使ってみる: IoT関連のブログ記事などの紹介 https://ibm.biz/bluemix-iot

[5] dashDB Learning Center: dashDBの利⽤方法を紹介

https://developer.ibm.com/clouddataservices/docs/dashdb/

Qiita Watson Qiita Bluemix

他にも以下のキーワードで検索すると様々な情報が見つかります

© 2016 IBM Corporation20

IBM Bluemixwww.bluemix.net

さわってみようBluemix!!

© 2016 IBM Corporation21

IBM Bluemixwww.bluemix.net

ハンズオンをはじめるにあたり

テキストを見れば大体わかるようになっています

できる人はどんどん進めていただいて構いません

ハンズオン・サポーターが控えています

わからない/できないところがあったら、手をあげてお近くのサポーターに知らせてください

© 2016 IBM Corporation22

IBM Bluemixwww.bluemix.net

Bluemixにログインする(1/3)

1

2

https://new-console.ng.bluemix.net/ にアクセスし、Bluemixトップページを開きます

画面右上の「ログイン」ボタンをクリックし、Bluemixのログイン・ページを開きます

© 2016 IBM Corporation23

IBM Bluemixwww.bluemix.net

Bluemixにログインする(2/3)

3

4

「Enter your IBM id」および「Password」欄にはBluemix

登録時に入力したEメール・アドレスとパスワードを入力します

「LOG IN」ボタンをクリックし、Bluemixにログインします

Eメール・アドレスを入力

パスワードを入力

© 2016 IBM Corporation24

IBM Bluemixwww.bluemix.net

Bluemixにログインする(3/3)

5 以下のようなWelcomeページが表示されることを確認します

© 2016 IBM Corporation25

IBM Bluemixwww.bluemix.net

アプリケーション実行環境の構築 (1/6)

ようこそ画面で、「すべての項目」を選択1

【ハンズオン1】

ダッシュボード画面右上にある をクリック2

© 2016 IBM Corporation26

IBM Bluemixwww.bluemix.net

アプリケーション実行環境の構築 (2/6)

表示されたカタログの中から、作成するアプリケーションの実行環境を選択

「計算」カテゴリから「CF アプリケーション」を選択

「CF アプリケーションの作成」画面の「ランタイム」にて「SDK for Node.js」を選択

3

【ハンズオン1】

© 2016 IBM Corporation27

IBM Bluemixwww.bluemix.net

アプリケーション実行環境の構築 (3/6)

アプリ名とホスト名を指定して「作成」ボタンをクリック

アプリ名とホスト名はハンズオン2で使⽤するのでメモを⽤意

任意の名前/ホスト名を指定する重複しているとエラーになるため

ユニークな名称を指定してください

4

【ハンズオン1】

© 2016 IBM Corporation28

IBM Bluemixwww.bluemix.net

アプリケーション実行環境の構築 (4/6)

30秒ほどでインスタンスの作成および起動が完了

アプリケーションの設定を確認するため、「概要」をクリック5

【ハンズオン1】

© 2016 IBM Corporation29

IBM Bluemixwww.bluemix.net

アプリケーション実行環境の構築 (5/6)

アプリ名の右に表示される 「状況」ランプが緑色に変わり、「アプリは実行中です」のメッセージが表示されることを確認

「状況」ステータスが変わらない場合は、Webブラウザーのリロード(F5キー)を試行

6

【ハンズオン1】

© 2016 IBM Corporation30

IBM Bluemixwww.bluemix.net

アプリケーション実行環境の構築 (6/6)

サンプルとして用意されたスターター・アプリケーションにアクセス

「アプリの表示」リンクをクリックすると、Node.jsで作成されたスターター・アプリケーションが動いていることの確認が可能

7

【ハンズオン1】

© 2016 IBM Corporation31

IBM Bluemixwww.bluemix.net

サービスの追加 (1/4)

アプリの「概要」画面左下にある「新規に接続」ボタンをクリック

アプリに追加するサービスのカタログを表示1

【ハンズオン1】

© 2016 IBM Corporation32

IBM Bluemixwww.bluemix.net

サービスの追加 (2/4)

表示されたカタログの中から、アプリと連携させたいサービスを選択

先ほど作成した Node.js の実行環境にCloudant NoSQL DBサービスを追加2

【ハンズオン1】

© 2016 IBM Corporation33

IBM Bluemixwww.bluemix.net

サービスの追加 (3/4)

サービスを追加するアプリケーションを指定し、「作成」ボタンをクリック

「接続」の項目で、先ほど作成したアプリ名が指定されているのを確認

サービス名はハンズオン2で使⽤するのでメモを⽤意

3

【ハンズオン1】

© 2016 IBM Corporation34

IBM Bluemixwww.bluemix.net

サービスの追加 (4/4)

アプリの再起動(再ステージ)の確認画面で「再ステージ」をクリック

約20秒ほどでサービスの追加が完了。アプリケーションの「概要」画面の「接続」欄に、追加したサービスが表示されることを確認

必要となるサービス毎に、この追加操作を適宜実施

4

5

【ハンズオン1】

© 2016 IBM Corporation35

IBM Bluemixwww.bluemix.net

アプリケーションの 「概要」 の画面には、実行環境が使⽤するリソース情報が表示されるここでは実際にリソースの変更を行う

インスタンス : 3、メモリー : 384MB と指定して「保存」をクリック再起動後、リソースが拡張されていることを確認

アプリケーション実行環境の操作 (1/5) ~リソースの動的追加

合計値が

1GBを超えないように

メモリー量を変更

【ハンズオン1】

© 2016 IBM Corporation36

IBM Bluemixwww.bluemix.net

「概要」の右隣にある「ランタイム」を選択

ページ上部で CPU やメモリーの使⽤率など、インスタンスの詳細情報が確認可能

先程インスタンスを増やしたので、リストには3行が表示される

今度はリソースの縮退を行う

インスタンス : 1、メモリー : 256MB と指定して「保存」をクリック

リソースは増やすだけでなく、減らすこともできることを確認してください

アプリケーション実行環境の操作 (2/5) ~リソースの動的追加

【ハンズオン1】

© 2016 IBM Corporation37

IBM Bluemixwww.bluemix.net

「メモリーおよびインスタンス」の右二つ隣にある「ファイル」を選択

実行環境のファイル・システム上にあるアプリケーション・ファイルやログ・ファイルを参照/ダウンロードすることが可能

アプリケーション実行環境の操作 (3/5) ~ファイルの参照

【ハンズオン1】

© 2016 IBM Corporation38

IBM Bluemixwww.bluemix.net

アプリケーション実行環境の操作 (4/5) ~ログの参照

「ランタイム」の右二つ隣にある「ログ」を選択

実行環境の標準出力およびエラーが表示される

【ハンズオン1】

© 2016 IBM Corporation39

IBM Bluemixwww.bluemix.net

アプリケーション実行環境の操作 (5/5) ~環境変数の参照

上側のメニュー内の「ランタイム」を選択後、「環境変数」を選択

インスタンスに設定されている環境変数の情報を確認することが可能

連携に必要となる情報は、自動的に環境変数にセットされるので、アプリケーションはこれらの環境変数の値を取得して、サービスにアクセスするようにコーディングする

環境変数をユーザー個別に設定することも可能(例:デバッグ・モードでの起動)

Bluemix では、Web ブラウザーからアプリケーション実行環境の構築やサービスのバインド、様々な

運用管理作業ができることを確認いただきました。お疲れ様でした!

サービスにアクセスするための認証情報やURLなどがVCAP_SERVICESと呼ばれる変数で渡される

【ハンズオン1】

© 2016 IBM Corporation40

IBM Bluemixwww.bluemix.net

作ってみようWatsonアプリ!!!

© 2016 IBM Corporation41

IBM Bluemixwww.bluemix.net

目次

1. 実習その1 NLCによる分類を体験する

2. 実習その2 画面を作成してオウム返しアプリを作る

3. 実習その3 NLCでクラスを返すアプリを作る

4. 実習その4 NLCの結果でセリフが変わるアプリを作る

5. まとめ

© 2016 IBM Corporation42

IBM Bluemixwww.bluemix.net

アプリケーション全体像

このハンズオンでは次のような動きをするアプリケーションを作成する

1. ユーザーがアプリに質問を入力

2. アプリがWatsonのNLCに質問の意図を問い合わせる

3. NLCは判定した意図をアプリに返す

4. アプリは意図に応じた応答メッセージを選択する

5. アプリは応答メッセージをユーザーに返す

アプリケーション

①質問入力

⑤応答出力

②意図の問い合わせ

③意図を返信

④意図に応じたメッセージをセット

ユーザーNLC

© 2016 IBM Corporation43

IBM Bluemixwww.bluemix.net

ハンズオンの流れ

Natural Language Classifier(NLC)による分類を体験する

NLCのサービスを追加する

NLC ToolkitでNLCをトレーニングする

NLC ToolkitでClassifierをテストする

NLCを利⽤するアプリケーション作成を体験する

Node-RED Starterを作成する

オウム返しするアプリケーションを作成する

NLCに問い合わせてクラスを返すアプリケーションを作成する

NLCに問い合わせた結果に応じて応答が変わるアプリケーションを作成する

© 2016 IBM Corporation44

IBM Bluemixwww.bluemix.net

実習その1 NLCによる分類を体験する

© 2016 IBM Corporation45

IBM Bluemixwww.bluemix.net

Natural Language Classifier

概要自然言語を理解し、意味を抽出する予め定義されたクラスに分類する

ユースケース質問応答、Twitter/SMSの分類、感情分析、ダイアログによる分類

バリュー・プロポジション先進の分類器

関連サービス Dialog Speech to Text Text to Speech

© 2016 IBM Corporation46

IBM Bluemixwww.bluemix.net

NLCの利⽤ステップ

NLCを利⽤する場合、大きく分けて以下の3ステップがある

今回はデータは⽤意してあるものを利⽤し、Step 2とStep 3を体験する

Step 1

トレーニングデータの用意(CSV形式)

Step 2

Classifierインスタンスの作成と学習

Step 3

Classifierの利用と改善

© 2016 IBM Corporation47

IBM Bluemixwww.bluemix.net

トレーニング・データ

例文と分類すべきクラスのペアをCSV形式で保存

NLC_TrainingData_Diet.csvから⼀部抜粋

目安として1つのクラスにつき5個以上の例文を⽤意する

ファイルの文字コードはUTF-8である必要がある

メモ帳では「名前を付けて保存」時に文字コードを指定して保存する

例文 クラス

炭水化物抜きダイエットについて教えて。 糖質制限ダイエット

炭水化物を控えるダイエットを教えて。 糖質制限ダイエット

糖質制限や炭水化物抜きダイエットって何のこと? 糖質制限ダイエット

糖質制限ダイエットって何? 糖質制限ダイエット

低糖質ダイエットについて教えて。 糖質制限ダイエット

雑穀米ダイエットについて教えて。 雑穀米ダイエット

雑穀米ダイエットって何を食べればいいの? 雑穀米ダイエット

雑穀ダイエットのやり方を教えて。 雑穀米ダイエット

雑穀ダイエットって何? 雑穀米ダイエット

雑穀を食べて痩せたい。 雑穀米ダイエット

雑穀ダイエットって? 雑穀米ダイエット

食べたいものは食べてやせたいんだけど。 食事制限ダイエット

食事の制限しないでダイエットしたいんだけど 食事制限ダイエット

食事制限はしたくないのだけど。 食事制限ダイエット

食事制限は嫌だ。 食事制限ダイエット

ご飯の量は減らしたくないのですが。 食事制限ダイエット

: :

© 2016 IBM Corporation48

IBM Bluemixwww.bluemix.net

Bluemixにログインする

Bluemixのトップページにアクセス

https://new-console.ng.bluemix.net/

画面右上の「ログイン」をクリック

Bluemix登録時に使⽤したユーザーID、パスワードを入力し「LOG IN」をクリック

© 2016 IBM Corporation49

IBM Bluemixwww.bluemix.net

NLCのサービスを追加する(1/3)

初期画面(概要)で「すべての項目」タブをクリック

画面右上の をクリック

© 2016 IBM Corporation50

IBM Bluemixwww.bluemix.net

NLCのサービスを追加する(2/3)

画面左側のカテゴリー・リストから「Watson」をクリック

「Natural Language Classifier」をクリック

© 2016 IBM Corporation51

IBM Bluemixwww.bluemix.net

NLCのサービスを追加する(3/3)

サービス名に「watson-handson-nlc-xxxxxx」を入力する

xxxxxxは社員番号等任意の文字列とする

下までスクロールして「作成」をクリック

© 2016 IBM Corporation52

IBM Bluemixwww.bluemix.net

NLCの資格情報を確認する

「サービス資格情報」をクリックする

NLCのAPI呼び出し⽤のユーザーIDとパスワードを確認できる

あとで利⽤するので覚えておく

© 2016 IBM Corporation53

IBM Bluemixwww.bluemix.net

NLC Toolkitを起動する

「管理」タブをクリック

「Access the beta toolkit」をクリックする

© 2016 IBM Corporation54

IBM Bluemixwww.bluemix.net

NLC Toolkitにログインする

Bluemixへのログインが表示された場合はクリックしてログインする

確認許可が出た場合は内容を確認して「確認」をクリック

© 2016 IBM Corporation55

IBM Bluemixwww.bluemix.net

NLC Toolkitでトレーニングする(1/7)

NLC Toolkitの初期画面が表示される

© 2016 IBM Corporation56

IBM Bluemixwww.bluemix.net

NLC Toolkitでトレーニングする(2/7)

「Add training data」をクリック

© 2016 IBM Corporation57

IBM Bluemixwww.bluemix.net

NLC Toolkitでトレーニングする(3/7)

アップロード・ボタンをクリック

© 2016 IBM Corporation58

IBM Bluemixwww.bluemix.net

NLC Toolkitでトレーニングする(4/7)

アップロードするトレーニング・データのファイルを選択する

NLC_TrainingData_Diet.csv を選択して「開く」をクリック

トレーニング・データはUTF-8で保存されている必要がある

© 2016 IBM Corporation59

IBM Bluemixwww.bluemix.net

NLC Toolkitでトレーニングする(5/7)

アップロードが完了する

「Create classifier」ボタンをクリック

© 2016 IBM Corporation60

IBM Bluemixwww.bluemix.net

NLC Toolkitでトレーニングする(6/7)

Classifierの属性を指定する

Name:Classifierの名前

ここでは「ダイエット」とする

Training data language:「Japanese」であることを確認

「Create」をクリック

© 2016 IBM Corporation61

IBM Bluemixwww.bluemix.net

NLC Toolkitでトレーニングする(7/7)

NLCのトレーニングが開始される

今回のケースではトレーニングは10分程度かかる

データ量およびサーバーの負荷状況によっては必要時間は変化する

トレーニングが完了すると右図のようになる

Classifier IDは後で使⽤するので覚えておく

© 2016 IBM Corporation62

IBM Bluemixwww.bluemix.net

NLC ToolkitでNLCをテストする(1/2)

テストしたいNLCの右下の矢印をクリック

試したい質問を入力して「Classify」をクリック

© 2016 IBM Corporation63

IBM Bluemixwww.bluemix.net

NLC ToolkitでNLCをテストする(2/2)

NLCの分類結果が表示される

「ダイエットの種類」クラスの確信度が「0.98」あるという意味

© 2016 IBM Corporation64

IBM Bluemixwww.bluemix.net

(参考)NLC Toolkitが使えない場合(1/4)

cURLを使⽤してNLCのトレーニングが可能 NLCのドキュメントにはcURLを使う方法が紹介されている

cURLとは cURLはURLシンタックスを⽤いてファイルを送信または受信するコマンドラインツールである

(Wikipediaより)

コマンド・プロンプト等からHTTPリクエスト(GET/POST等)を発行可能

REST APIのテストをするのに適している

当ハンズオンでのcURL利⽤環境の立ち上げ方 デスクトップの「ハンズオン⽤データ」フォルダーを開く

hansdon(またはhandson.bat)をダブルクリックする

コマンド・プロンプトが立ち上がってcURLが使えるようになる

ユーザーIDとパスワードが必要 ユーザーIDとパスワードの確認方法はNLCの資格情報のページを参照

© 2016 IBM Corporation65

IBM Bluemixwww.bluemix.net

(参考)NLC Toolkitが使えない場合(2/4)

Classifierの作成

指定するオプション

username、passwordはNLCの資格情報を参照

training_dataにトレーニング・データのファイル名を指定

training_metadataのnameにClassifier名を指定(※Windowsの場合は前後を「¥"」で囲む)

結果

Classifier IDが生成される

以降のリクエストで使⽤するので覚えておく

> curl -k -i -u "<username>":"<password>" -F training_data=@./NLC_TrainingData_Diet.csv -F training_metadata="{¥"language¥":¥"ja¥",¥"name¥":¥"Diet¥"}" "https://gateway.watsonplatform.net/natural-language-classifier/api/v1/classifiers"

{

"name": "Diet",

"language": "ja",

"status": "Training",

"url": "https://gateway.watsonplatform.net/natural-language-classifier/api/v1/classifiers/<your-classifier-id>",

"classifier_id": "<your-classifier-id>",

"created": "2015-05-28T18:01:57.393Z",

"status_description": "The classifier instance is in its training phase, not yet ready to accept classify requests"

}

© 2016 IBM Corporation66

IBM Bluemixwww.bluemix.net

(参考)NLC Toolkitが使えない場合(3/4)

Classifierのステータス確認

指定するオプション

username、passwordはNLCの資格情報を参照

URLの最後にClassifier IDを指定する

結果

statusが「Available」になったらトレーニング完了

> curl -k -i -u "<username>":"<password>" -X GET "https://gateway.watsonplatform.net/natural-language-classifier/api/v1/classifiers/<your-classifier-id>"

{

"name": "Diet",

"language": "ja",

"status": "Available",

"url": "https://gateway.watsonplatform.net/natural-language-classifier/api/v1/classifiers/<your-classifier-id>",

"classifier_id": "<your-classifier-id>",

"created": "2015-05-28T18:01:57.393Z",

"status_description": "The classifier instance is in its training phase, not yet ready to accept classify requests"

}

© 2016 IBM Corporation67

IBM Bluemixwww.bluemix.net

(参考)NLC Toolkitが使えない場合(4/4)

Classifierのテスト

指定するオプション

username、passwordはNLCの資格情報を参照

URLの最後にClassifier IDを指定する

「text=質問文」をURLエンコードして渡す

結果

結果がJSON形式で返される

top_class:確信度が⼀番高いクラス

classes:確信度の順にクラスと確信度を並べたもの

> curl -k -G -u "<username>":"<password>" "https://gateway.watsonplatform.net/natural-language-classifier/api/v1/classifiers/<your-classifier-id>/classify" --data-urlencode "text=糖質制限ダイエットって?"

{

"classifier_id" : "<your-classifier-id>",

"url" : "https://gateway.watsonplatform.net/natural-language-classifier/api/v1/classifiers/<your-classifier-id>",

"text" : "糖質制限ダイエットって?",

"top_class" : "糖質制限ダイエット",

"classes" : [ {

"class_name" : "糖質制限ダイエット",

"confidence" : 0.9795312414924932

}, {

"class_name" : "食事制限ダイエット",

"confidence" : 0.003724224889437014

(以下略)

コマンドプロンプトで実行した場合結果の日本語は文字化けしますが、

動作は正常です

© 2016 IBM Corporation68

IBM Bluemixwww.bluemix.net

実習その2 画面を作成してオウム返しアプリを作る

© 2016 IBM Corporation69

IBM Bluemixwww.bluemix.net

Node-RED Starterを追加する(1/5)

初期画面(概要)で「すべての項目」タブをクリック

画面右上の をクリック

Node-RED Starterを探してクリック

© 2016 IBM Corporation70

IBM Bluemixwww.bluemix.net

Node-RED Starterを追加する(2/5)

アプリ名に「watson-handson-xxxxxx」を入力する

xxxxxxは社員番号等任意の文字列

ホスト名は自動で埋まる

ホスト名+ドメインがユニークになるように設定する必要あり

下までスクロールして「作成」をクリック

© 2016 IBM Corporation71

IBM Bluemixwww.bluemix.net

Node-RED Starterを追加する(3/5)

「ログ」をクリック

以下メッセージがログに表示されるのを待つ(約5分かかる)

上記メッセージが表示されたら、「アプリの表示」をクリックする

または「https://watson-handson-xxxxxx.mybluemix.net」にアクセス

© 2016 IBM Corporation72

IBM Bluemixwww.bluemix.net

Node-RED Starterを追加する(4/5)

「Go to your Node-RED flow editor」をクリックして、フロー・エディターを起動する

© 2016 IBM Corporation73

IBM Bluemixwww.bluemix.net

Node-RED Starterを追加する(5/5)

フロー・エディターが起動する

© 2016 IBM Corporation74

IBM Bluemixwww.bluemix.net

画面表示⽤フローの作成(1/2)

httpノードをエディター上にドラッグ&ドロップする

同様に、templateノード、http responseノードをドラッグ&ドロップする

© 2016 IBM Corporation75

IBM Bluemixwww.bluemix.net

画面表示⽤フローの作成(2/2)

ノード同士を線でつなぎ、フローをつくる

httpノードのout側をクリックしたまま、templateノードのin側まで移動し、ボタンを離す

同様に、templateノードのout側とhttp responseノードのin側をつなぐ

© 2016 IBM Corporation76

IBM Bluemixwww.bluemix.net

HTTPリクエストの受け口を作る

httpノードを編集してHTTPリクエストの受け口を作る

httpノードをダブルクリック

以下のように値を入力

URL:/sample

「Ok」をクリック

httpノードの表示が右のようになる

© 2016 IBM Corporation77

IBM Bluemixwww.bluemix.net

templateノードにHTMLを記述する

Webブラウザー表示のHTMLをtemplateノードに記述する

templateノードをダブルクリック

以下のように値を入力

Name:チャット画面

Template:ファイルからコピペ

もともとある1行のメッセージは削除する

「Node-RED_template.txt」をメモ帳などで開いてコピペする

章末のリンクからも入手可能

「Ok」をクリック

templateノードの表示が右のようになる

削除

© 2016 IBM Corporation78

IBM Bluemixwww.bluemix.net

デプロイ

ここまでの変更を保存・反映するため「デプロイ」する

右上の「Deploy」ボタンをクリック

正しくデプロイされると「Successfully deployed」が表示される

更新ありを示す表示が消える

ノードの右上の青丸が消える

「Deploy」ボタンがグレーアウトする

© 2016 IBM Corporation79

IBM Bluemixwww.bluemix.net

画面を表示してみる

以下のURLにアクセスし、ブラウザーで画面を表示してみる

https://watson-handson-xxxxxx.mybluemix.net/sample

xxxxxxは社員番号等任意の文字列

右のような画面が表示される

メッセージを入力して「送信」をクリックするとメッセージが表示されるが、まだ何も応答は返ってこない

© 2016 IBM Corporation80

IBM Bluemixwww.bluemix.net

応答⽤フローの作成

以下のノードをドラッグ&ドロップし、線でつなぐ

httpノード

changeノード

http responseノード

httpノードをダブルクリックして、以下の値をセットして「Ok」をクリック

Method:POST

URL:/sampleanswer

© 2016 IBM Corporation81

IBM Bluemixwww.bluemix.net

changeノードによる値のセット

オウム返しの設定をchangeノードに記述する

changeノードをダブルクリック

以下のように値を入力

Name:オウム返し

Rules

Set:msg.payload.response

to:msg.payload.input_text

「Ok」をクリック

toは▼をクリックしてmsgを選択する

© 2016 IBM Corporation82

IBM Bluemixwww.bluemix.net

デプロイ&テスト

「Deploy」ボタンをクリックしてデプロイする

ブラウザーで以下にURLにアクセスする

https://watson-handson-xxxxxx.mybluemix.net/sample

xxxxxxは社員番号等任意の文字列

右のような画面が表示される

メッセージを入力して「送信」をクリックするとメッセージが表示され、応答として同じメッセージが表示される

© 2016 IBM Corporation83

IBM Bluemixwww.bluemix.net

実習その3 NLCでクラスを返すアプリを作る

© 2016 IBM Corporation84

IBM Bluemixwww.bluemix.net

ノードの追加

changeノード、NLCノード、changeノードをドラッグ&ドロップする

既存の接続を削除する

接続部分を選択して、DELETEキーで削除可能

以下のようにつなぎなおす

© 2016 IBM Corporation85

IBM Bluemixwww.bluemix.net

値のセット

1つ目のchangeノードをダブルクリック

以下のように値を入力

Name:入力文章セット

Rules

Set:msg.payload

to:msg.payload.input_text

「Ok」をクリック

2つ目のchangeノードをダブルクリック

以下のように値を入力

Name:クラスセット

Rules

Set:msg.payload.response

to:msg.payload.top_class

「Ok」をクリック

msgを選択

msgを選択

© 2016 IBM Corporation86

IBM Bluemixwww.bluemix.net

NLCノードの設定

NLCノードをダブルクリック

以下のように値を入力

Name:ダイエットNLC

Username:NLCのユーザーID

Password:NLCのパスワード

Mode:Classifyのまま

Classifier ID:使⽤するClassifierのID

「Ok」をクリック

以下のようなフローができあがる

BluemixのNLCの「サービス資格情報」から確認可能

NLC Toolkitで確認可能

BluemixのNLCの「サービス資格情報」から確認可能

© 2016 IBM Corporation87

IBM Bluemixwww.bluemix.net

デプロイ&テスト

「Deploy」ボタンをクリックしてデプロイする

ブラウザーで以下にURLにアクセスする

https://watson-handson-xxxxxx.mybluemix.net/sample

xxxxxxは社員番号等任意の文字列

右のような画面が表示される

メッセージを入力して「送信」をクリックすると、入力文章がNLCによりクラス分類され、最も確信度の高いクラスを返す

© 2016 IBM Corporation88

IBM Bluemixwww.bluemix.net

実習その4 NLCの結果でセリフが変わるアプリを作る

© 2016 IBM Corporation89

IBM Bluemixwww.bluemix.net

NLCの結果と適切なセリフのマッピング(1/2)

NLCでは以下の5種類のクラスを返すようにトレーニングしている

糖質制限ダイエット

雑穀米ダイエット

食事制限ダイエット

運動ダイエット

ダイエットの種類 例文 クラス

炭水化物抜きダイエットについて教えて。 糖質制限ダイエット

炭水化物を控えるダイエットを教えて。 糖質制限ダイエット

糖質制限や炭水化物抜きダイエットって何のこと? 糖質制限ダイエット

糖質制限ダイエットって何? 糖質制限ダイエット

低糖質ダイエットについて教えて。 糖質制限ダイエット

雑穀米ダイエットについて教えて。 雑穀米ダイエット

雑穀米ダイエットって何を食べればいいの? 雑穀米ダイエット

雑穀ダイエットのやり方を教えて。 雑穀米ダイエット

雑穀ダイエットって何? 雑穀米ダイエット

雑穀を食べて痩せたい。 雑穀米ダイエット

雑穀ダイエットって? 雑穀米ダイエット

食べたいものは食べてやせたいんだけど。 食事制限ダイエット

食事の制限しないでダイエットしたいんだけど 食事制限ダイエット

食事制限はしたくないのだけど。 食事制限ダイエット

食事制限は嫌だ。 食事制限ダイエット

ご飯の量は減らしたくないのですが。 食事制限ダイエット

: :

◆トレーニング・データの抜粋

© 2016 IBM Corporation90

IBM Bluemixwww.bluemix.net

NLCの結果と適切なセリフのマッピング(2/2)

これらのクラスに応じて、以下のコメントを応答として返すようにする

「上記以外」は現在はありえないが、クラスが追加になったときを想定して設定しておく

クラス 応答コメント

糖質制限ダイエット糖質制限ダイエットのやり方はとっても簡単。普段の食事から、主食や糖分を抜くだけなんです。ご飯・パン・麺・イモ類などの炭水化物や糖質を避けて、おかずをメインで食べていくやり方ですね。

雑穀米ダイエット痩せたいけどご飯もお腹いっぱい食べたい。そんな方でもできるダイエット方法は雑穀米ダイエットです。白米を雑穀米に代えるだけでよく噛み、高い栄養を得られる、そんな美しく健康的にダイエットができるとブームになっています。

食事制限ダイエットダイエットの道は険しいのです。運動はダイエットに効果的ですが、消費カロリーそのものは微々たる物ですし、運動によって食欲が高まったりしますので、やはり食事制限は併⽤した方が良いでしょう。

運動ダイエット運動するなら、脂肪燃焼効果の高い有酸素運動と、基礎代謝をあげる筋トレを併⽤するのがおすすめです。有酸素運動はウォーキングやジョギングがいいですね。筋トレは下半身などの大きな筋肉から鍛えていくと効果的ですよ。

ダイエットの種類ダイエットにはいろいろありますが、糖質制限ダイエット、雑穀米ダイエット、食事制限、運動などが特にお勧めですよ。

上記以外 すみません、よくわかりませんでした。もう⼀度お願いします。

© 2016 IBM Corporation91

IBM Bluemixwww.bluemix.net

セリフ選択⽤フローの作成(1/2)

新しいフロー⽤にノードを追加する

switchノード、changeノード(6個)をドラッグ&ドロップする

© 2016 IBM Corporation92

IBM Bluemixwww.bluemix.net

セリフ選択⽤フローの作成(2/2)

NLCの選択クラスによる条件分岐を作成する switchノードをダブルクリック

以下のように値を入力

Name:条件分岐

Property:msg.payload.top_class

条件:「==」のまま

値:属性はString(a-z)で「糖質制限ダイエット」を入力

左下の「+rule」をクリックして入力欄を増やす

同様に、以下の値を繰り返し入力する

「Ok」をクリック

swithノードの出力が6つに分岐する

条件 値

== 雑穀米ダイエット

== 食事制限ダイエット

== 運動ダイエット

== ダイエットの種類

otherwise

© 2016 IBM Corporation93

IBM Bluemixwww.bluemix.net

クラスに応じたセリフのセット

各クラスのセリフをセットする

changeノードをダブルクリック

添付ファイル「応答メッセージ.txt」を参照して各ノードの値を入力する

Name:クラス名

Rules

Set:msg.payload.response

to:応答コメント

ハンズオン⽤ファイル「応答メッセージ.txt」からコピペできる

「Ok」をクリック

編集後、changeノードは右のようになる

Stringを選択(デフォルト)

© 2016 IBM Corporation94

IBM Bluemixwww.bluemix.net

セリフ選択⽤フローの作成

フローのつなぎ換え

NLCの出口からクラスセットの間、クラスセットからhttp responseノードの間の接続を削除する

以下のように接続する

© 2016 IBM Corporation95

IBM Bluemixwww.bluemix.net

デプロイ&テスト

「Deploy」ボタンをクリックしてデプロイする

ブラウザーで以下にURLにアクセスする

https://watson-handson-xxxxxx.mybluemix.net/sample

xxxxxxは社員番号等任意の文字列

右のような画面が表示される

メッセージを入力して「送信」をクリックすると、入力文章がNLCによりクラス分類され、クラスに応じたセリフを応答する

いろんな会話をテストしてみよう!

© 2016 IBM Corporation96

IBM Bluemixwww.bluemix.net

まとめ

© 2016 IBM Corporation97

IBM Bluemixwww.bluemix.net

まとめ

このハンズオンでやったこと

NLCを⽤いた自然言語によるクラス分類の実現

NLCのトレーニングを実行した

NLCを⽤いて自然言語の文章のクラス分類を行った

Node-REDを使いWatsonサービスを呼び出すWebアプリの作成

IBM_Watsonカテゴリーのノードを使⽤してNLCを簡単に呼び出した

NLCを使った応答システムを作成した

応⽤編:アプリをさらに改良するなら

Confidence(確信度)の値に応じて応答メッセージを変える

Confidenceが高い=自信満々

Confidenceが低い=自信なさげ、聞き返す 等

NLC以外のWatsonサービスとの連携

Speech to Text、 Text to Speechと併⽤して、音声入力/音声応答の実現

Retrieve & Rankと併⽤して、さらに柔軟な応答システムの作成

Dialogと併⽤して、会話しながら自然に対象を絞込む

Watson Developer Cloudのリファレンスを見ながら試してみよう!

© 2016 IBM Corporation98

IBM Bluemixwww.bluemix.net

参考

© 2016 IBM Corporation99

IBM Bluemixwww.bluemix.net

ハンズオン資料

本日のハンズオンのデータは以下のサイトからダウンロード可能です

NLCトレーニング⽤ CSVファイル

NLC_TrainingData_Diet.csv

https://gist.github.com/satohdai/6f3cf674a02e1d1ee550d0f23536c50e

(UTF-8で保存する必要があります)

Node-RED templateノード⽤ HTMLファイル

Node-RED_template.txt

https://gist.github.com/satohdai/8ca13bbb98b21aabc093b7bdd5ccbd14

changeノード⽤ 応答メッセージファイル

応答メッセージ.txt

https://gist.github.com/satohdai/17f551714da589d6c93fc0b6c9388f83

© 2016 IBM Corporation100

IBM Bluemixwww.bluemix.net