【Azure Bot Service・QnA Maker周り】最新機能・アップデートまとめ

#はじめに
最近Azure Bot ServiceおよびQnA Maker周りで、大きく発表されたものから地味なアップデートまで色々と出てきているので、この記事では筆者が現時点で気づいた最近の新機能や旧バージョンからの変更点等についてまとめたいと思います。気づいたものから随時追加できればと思います。

#Microsoft Conversational AI Tools
Microsoft Build 2018というイベントで***チャットボット作成のためのツール群***として、Microsoft Conversational AI Toolsが定義されました。以下が、そのコンポーネントです。

・Bot Builder SDK v4
・Bot Framework Emulator v4
・Bot Builder Tools
・Bot Builder Dispatch
・OAuth 対応
・QnA Maker
・Language Understanding (LUIS)
・Project Conversation Learner

###Bot Builder SDK v4 (GA)
Build 2018の時にはPreviewだったBot Builder SDK v4は、2018年10月にGAになりました。v3からの変更点は以下です。

・ASP.NETからASP.NET COREへ
・Java, Python対応(Preview)
・IDialogからIBotへ
・StartAsyncからOnTurnへ
・PostAsyncからSendAsyncへ

ASP.NET COREへのフレームワークの変更により、***IISではない環境でもWebアプリケーションとしてチャットボットを動かすことが出来る***ようになります。環境に依存しない実行を実現できることは良いことですが、一方で大きな変更点も生まれました。ASP.NET COREに変更されたことにより、v3でボットのキーを取得してくる際に使用していた***Configuration Managerが使えなくなりました***(構成ファイルがXMLからJSONに変わるため)。

プログラムにおいては、細かなメソッド名の変更がありました。ボット作成の基本的な考え方は変わりませんが、***v3とv4では違いが多々あるので注意が必要***です。

###Bot Framework Emulator v4 (Preview)
ローカル環境でのボットのテストに用いるエミュレータにもv4が登場しました。UIもv3とは大きく異なります(画面の色もセッティングできます)。v4では***.botファイル***という形式のファイルを読み込んで、テストを行います。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/267543/0e301319-a2d1-ce70-ffc1-f042e64b55af.png)

(Download Page: https://github.com/Microsoft/BotFramework-Emulator/releases)

###Bot Builder Tools
Bot Builder ToolsはEnd to Endでボットの開発を支援するためのクロスプラットフォームCLIツール群です。npmパッケージとしてインストール可能です。詳しくは、GitHubを参照してください。

(参考: https://github.com/Microsoft/botbuilder-tools)

Bot Builer Toolsの一つであるChatdown Toolを用いると、***テキストファイルでボットのフローの設計を行うことが出来ます***。今まで、パワポやエクセルを用いてフローを作成していた運用者は、テキストファイルにイメージを書き、Chatdown Toolを用いてtranscriptファイルを作成するだけで、開発者に設計のイメージをより鮮明に伝えやすくなります。開発者は運用者が作成したフローを、Bot Framework Emulator v4を用いて確認できます。使い方については、別の記事にまとめてありますので、そちらをご参照ください。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/267543/e5793990-7226-6211-6269-c30994e0ccbd.png)


![image.png](https://qiita-image-store.s3.amazonaws.com/0/267543/0224d357-b9ad-aff6-19b8-7ad6a7ddde70.png)


(参考: https://qiita.com/Nori_Min24/items/3f9aa13f34508b8eac12)

###Bot Builder Dispatch
今までユーザからのQに対して返すAの参考とするスコアは、QnA Makerから持ってくるのか、LUISから持ってくるのかを、開発者が設定を行っていました。これが、Bot Builder Dispatchを用いることで、***QnA Makerの複数のKBとLUISの複数のモデルが返したスコア全てを参考にして、最も適切らしいAを返すことができる***ようになります。v4では、LUISとの繋がりが特に意識されているように感じます。

(参考1: https://github.com/Microsoft/botbuilder-tools/tree/master/packages/Dispatch)
(参考2: https://docs.microsoft.com/ja-jp/azure/bot-service/bot-builder-tutorial-dispatch?view=azure-bot-service-4.0&tabs=csharp)

###OAuth 対応
v4では認証機能がSDKに取り込まれたことにより、エンタープライズ向けのサービスとして運用しやすくなりました。

(参考: https://docs.microsoft.com/ja-jp/azure/bot-service/bot-builder-tutorial-authentication?view=azure-bot-service-3.0)

###Project Conversation Learner
LUISは自然言語処理を行いたい際には必要不可欠なサービスではありますが、一方でエンティティの登録などを手作業で全て行うのは骨が折れる作業です。そんな中で、Project Conversation Learnerというサービスを使うと、***チャットボットと会話をしながらLUISを学習させる***ことができます。こちらは、現在英語のみのサポートとなっていますが、日本語が対応し次第紹介予定です。

(参考: https://labs.cognitive.microsoft.com/en-us/project-conversation-learner)

#QnA Makerの最新アップデート
###マニュアルの読み込み(日本語対応)
以前まではマニュアルの読み込みは英語を含めた5ヶ国語のみの対応でしたが、遂に***日本語のマニュアルに関してもQnA Makerによってextraction出来る***ようになりました(これは、日本のお客様にとってはとても嬉しいですね！)。もちろん、精度はまだまだの部分もありますが、PDFファイルから一つずつQとAを抽出することを考えたら、遥かに便利な機能だと思います。是非、試してみてください！

![image.png](https://qiita-image-store.s3.amazonaws.com/0/267543/0d8a54bd-73ad-1da5-3564-29d140d98060.png)

###クローリング対応
以前から、FAQのサイトから直接QとAのextractionをすることは出来ていましたが、ある程度綺麗なデザインで構成されているWebページでないと、上手く取り出すことはできませんでした。最新のアップデートにより、***リンク先にAnswerがあるようなFAQサイトでもQとAを抽出してくれる***ようになりました(これはすごいですね！)。***回答がUIの都合で隠れているようなサイトでも読み込むことができます。***

![image.png](https://qiita-image-store.s3.amazonaws.com/0/267543/fa6d7b84-c515-7582-591b-f033e4cfb0e2.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/267543/1cb3e960-e87a-cc98-3d0f-e3a44919b62b.png)

###Chit-chat
こちらは、現在英語のみのサポートです。私の理解ではこちらはあくまでも、0ベースからキャラクター設定をしたKBを作らなくても良いという機能で、既存のKBに登録された文字列に対してキャラクターを付けるなどといった機能ではなさそうです(初めて見た時はキャラ付けをしてくれる機能かと思っていました・・)。キャラクターごとのデータセットは、GitHubで公開されています。(日本語は現在サポートされておりませんし、ドキュメントも少ないので今後のアップデートに期待ですね・・)


(GitHub: https://github.com/Microsoft/BotBuilder-PersonalityChat/tree/master/CSharp/Datasets)
(参考: https://docs.microsoft.com/ja-jp/azure/cognitive-services/qnamaker/how-to/chit-chat-knowledge-base)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/267543/82d56f69-1dfb-afe6-d42d-0102227b3d2f.png)

#さいごに
知らない間にさりげなくアップデートされていくので、この記事は随時更新していこうと思います。