学習させることで、どんどん賢くなっていくLUISをbotサービスで活用するには:認識系API活用入門(終)(1/3 ページ)
コグニティブサービスのAPIを用いて、「現在のコグニティブサービスでどのようなことができるのか」「どのようにして利用できるのか」「どの程度の精度なのか」を検証していく連載。最終回となる今回は、LUIS(Language Understanding Intelligent Service)とMicrosoft Bot Frameworkを組み合わせてbotサービスを作成します。
※本稿は2017年7月6日の情報を基に作成しています。この記事内で使用している画面やコグニティブサービスの仕様は変更になっている場合があります。
本連載「認識系API活用入門」では、MicrosoftのコグニティブサービスのAPIを用いて、「現在のコグニティブサービスでどのようなことができるのか」「どのようにして利用できるのか」「どの程度の精度なのか」を検証していきます。連載第1回の「Deep Learningの恩恵を手軽に活用できるコグニティブサービスとは」では、コグニティブサービスとは何かの概要とAPIを使うための準備の仕方を説明しました。
前回は「LUIS(Language Understanding Intelligent Service)」の概要とLUISへアプリケーションを登録する方法、LUISに学習させる方法を紹介しました。最終回となる今回は、LUISとMicrosoft Bot Frameworkを組み合わせてbotサービスを作成します。
Microsoft Bot Frameworkを使う
LUISの準備が終わったところで、ここから実際にLUISを呼び出すアプリケーションの作成に入ります。今回は天気予報botアプリケーションということで、Microsoft Bot Frameworkを使用します。
Microsoft Bot Frameworkとは
Microsoft Bot Framework(以下、Bot Framework)は、Microsoftが提供するbotサービスのための仕組みです。Skype、Microsoft Teams、Facebook Messenger、Slackなどのサービスと接続して独自のチャットbotを提供できるようになります。
ダウンロード
今回はC#でbotサービスを作成するためのプロジェクトテンプレートを使用するので、Bot Frameworkのサイトからプロジェクトテンプレートをダウンロードします。プロジェクトテンプレートは以下のサイトからダウンロードできます。
「Visual Studio project templates」の下の「Bot template for Visual Studio for developing bots with C#」をクリックし、「Bot Application.zip」というZIPファイルをダウンロードします。
ダウンロードが完了したら、このZIPファイルをZIPファイルのままの状態でVisual StudioのC#プロジェクトテンプレートのフォルダに置いてください。
通常、Visual Studio 2015のC#プロジェクトテンプレートのフォルダは下記のようになっています。
C:\Users\[ユーザー名]\Documents\Visual Studio 2015\Templates\ProjectTemplates\Visual C#
Microsoft Bot Framework Emulatorのダウンロードとインストール
「Bot Frameworkを使ったアプリケーションの作成中に動作確認を行いたい」というときに、わざわざSkypeなどの実際のサービスに接続させてテストするのは非常に面倒です。そんな作成中のテストのために実際のSkypeなどの代わりをしてくれるのがMicrosoft Bot Framework Emulator(以下、Bot Framework Emulator)です。
ダウンロード
Bot Framework Emulatorは下記URLからダウンロードできます。
この記事の執筆時点での最新バージョンは3.5.29となっていました。
インストール
Download the Bot Framework Emulator下のリンクから「botframework-emulator-Setup-3.5.29.exe」というファイルがダウンロードできたら、実行してインストールします。
「Bot Application」プロジェクトの作成
Visual Studioを起動し、新規プロジェクトを作成します。Visual Studio 2015では、C#のテンプレートの下に「Bot Application」が新たに追加されていますので、これを選択します。プロジェクト名は「LUIS_WeatherBotApp」としています。
今回はLUISの結果と天気予報の結果をJSON形式で受け取るので、JSONを取り扱えるようにするためライブラリを追加します。
まず、メニューバーの「プロジェクト」から「NuGetパッケージの管理」をクリックします。「参照」をクリックし、検索のテキストボックスに「Json」と入力すると、「System.Runtime.Serialization.Json」が検索結果として表示されます。これを選択して、画面右側の「インストール」ボタンをクリックします。
変更の確認の画面が表示されたらOKボタンをクリックします。
ライセンスへの同意の画面が表示されたら「同意する」をクリックします。
続いて、先ほどインストールしたSystem.Runtime.Serialization.Jsonをプログラム内から使用できるようにするため、参照を追加します。メニューバーの「プロジェクト」から「参照の追加」をクリックします。
フレームワークの中にある「System.Runtime.Serialization」にチェックを入れ、「OK」ボタンをクリックします。
botのインタフェース部分の作成
botアプリケーションのテンプレートを使用すると、インタフェースとなる部分の機能は既にCSファイルができている状態です。それがControllersフォルダの下の「MessagesController.cs」と、Dialogsフォルダの下の「RootDialog.cs」です。
実はこのテンプレートから作成しただけの何も手を加えていない状態のままでも、すでにbotサービスとして動かせます。試しに動かしてみましょう。
プロジェクトを実行すると、ブラウザが立ち上がり、botサービスが起動したことが分かります。
続いて、Bot Framework Emulatorを起動します。「Enter your endpoint URL」のところに起動したbotサービスのEndpoint URLを入力してbotサービスに接続します。
上の例の場合、下記のようになります。
http://localhost:3979/api/messages
正常に接続できていれば、画面右下のlogに下記のように表示されます。
POST 200 [conversationUpdate]
ここで、画面下の「Type your message…」のところに、何でもいいので入力してメッセージを送信してみてください。すると、botサービスからレスポンスが返ってきます。
このbotサービスのレスポンスの処理はRootDialog.csに記述されています。そのため、最終的にユーザーにレスポンスを返す部分はRootDialog.csになります。そして今回は、「LUISに受け取ったメッセージを渡して結果を受け取り、さらにそこから天気予報のWebサービスに接続して天気予報をユーザーに返す」処理を加えていきます。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- LUIS(自然言語解析サービス)
LUISはマイクロソフトが提供する自然言語解析サービス。ユーザーが「何をしたいのか」(インテント)とそれに付随する情報(エンティティ)を取り出せる。 - LUISを使って頭の悪いLINE Botを作ってみよう!
LUIS(自然言語解析サービス)とロケスマWeb(お店発見Webサービス)とGoogle Geocoding APIを使って、ユーザーが探しているお店を教えてくれるLINE Botを作ってみよう! - WebhookやHubotを使ってチャットとSubversion、Redmine、Jenkinsを連携させる基本設定とは
OSSのチャット基盤であり、Dockerコンテナとして簡単に導入できるRocketChatを使った、コミュニケーション基盤の作り方を学ぶ連載。最終回は、RocketChatと他のアプリケーション(Subversion、Redmine、Jenkins、Zabbix、fluentdなど)と連携させる方法を紹介します。