Microsoft Bot Framework で簡単なbotを作ってみようと思ったので、その過程を記録に残しておきます。
Microsoft Bot Framework とは?
今年の4月に Microsoft Bot Framework というBotを簡単に作るためのフレームワークが公開されました。
公式ドキュメントに書いてある通り、Microsoft Bot Frameworkは次の3つの柱で構成されています。
- Bot Connector
- Bot Builder SDKs
- Bot Directory
Bot Connector
Bot Connectorは、既に存在しているBotをSkypeやSlackなどのサービスに簡単にデプロイするための仕組みです。
後述のSDKを使ってBotを作成した後に使用します。
Bot Builder SDKs
Bot Builder SDKは、名前の通りbotを作成するためのSDKです。C#とNode.jsのSDKが用意されており、オープンソースなのでGithubでコードも確認できます。
Bot Directory
Bot Directoryとは、作成したbotを登録して、世の中に公開するための場所です。スマホのアプリで言うところの、AndroidのGoogle PlayやiOSのApp Storeのようなイメージです。
ドキュメントによると、Bot DirectoryはCOMING SOONとなっているので、まだこの機能はリリースされていないのでしょうかね。
LUIS (Language Understanding Intelligent Service)
Microsoft Cognitive Services と呼ばれるAPI群の中に、Language Understanding Intelligent Services (LUIS) というものがあります。
LUISは、与えられた文章の意図(Intent)と、その文章に含まれるエンティティを抽出するためのサービスです。
例えば、次のような意図をエンティティをあらかじめLUISに学習させておいたとします。
- 意図:飛行機のチケットの予約 (BookFlight)
- エンティティ:目的地 (ToLocation)
- エンティティ:出発地 (FromLocation)
このようなLUISに対して「パリへのチケットを予約して」というクエリを入力してあげると、LUISは「意図はBookFlightで、エンティティはToLocation=パリが抽出されました」というような答えを返してきます。(もちろん自然言語じゃなくてJSONなどのフォーマットで。。)
このような意図やエンティティを学習させるのも実に簡単で、このドキュメントにあるようにGUIで簡単にアノテーションができるようになっています。リンク先は英語ですが、英語が読めない方もスクロールして貼り付けられている画像を見てみてください。どのようにアノテーションをするかがなんとなくわかるかと思います。
いくつか文章をアノテーションすると、裏で自動でモデルが訓練され、訓練が終わったらボタン一つで新しいモデルをPublishしてあげればいいわけです。
またこのLUIS、先述のBot Builder SDKと簡単にインテグレードができるようになっています。のちの記事で紹介する機会があるかと思いますが、この意図が検出されたら、この関数を呼ぶ、という処理が簡単にできちゃうんです。
ただし、非常に残念なことに、このLUISは現在日本語に対応していません。現時点では英語、フランス語、イタリア語、スペイン語、そして中国語のみに対応しているようです。
現在は日本語のLUISも公開されています。こちらの記事で実際にLUISを使ってみています。
Microsoft Bot Framework と LUIS で複数の状態を持ったBotを作ってみる (完結編) - 今日も窓辺でプログラム
どんなBotを作るか?
試しに触ってみる段階なので、ネタはなんでもいいのですが、現在の各電力会社の電力使用状況を教えてくれるbotにしてみようと思います。
理由は特にありません。たまたま電力使用状況APIを見つけたからです。
Bot Builder SDKsはC#とNode.js向けに用意されていますが、今回はC#のものを試していきます。
では、次回からは実際にコードを書いていきたいと思います。
次回記事
Microsoft Bot Frameworkで簡単なBotを作ってみる (2) ~1つのフレーズだけに答えてくれるBot~ - 今日も窓辺でプログラム