会話ボットに迫る – Azure Bot Service と Language Understanding の一般提供開始と新機能

執筆者: Microsoft Azure

このポストは、12 月 13 日に投稿された Conversational Bots Deep Dive – What's new with the General Availability of Azure Bot Service and Language Understanding の翻訳です。

 

今回は、Azure Bot Service および Language Understanding チームが執筆した記事をご紹介します。

マイクロソフトは、開発者の皆様が自然なスタイルや手段によって、見たり、聞いたり、話したり、理解したり、相手のニーズを解釈するといったコミュニケーションが可能なアプリを作成するための、高度なチャットボット機能を提供しています。

このたびマイクロソフトは、Microsoft Cognitive Services の Language Understanding Intelligent Service (LUIS、一部英語)Azure Bot Service (英語) の 2 つのサービスの一般提供を開始しました (英語)。これは、自然に対話し、周囲の環境を理解するデジタル エージェントを作成できる高度な AI サービスです。

これらのサービスを活用することで、さまざまな可能性が拓かれます。データ サイエンスの専門知識の有無にかかわらず、あらゆる開発者が会話 AI を構築し、幅広い会話チャネルを通じてアプリのユーザー層を拡充できるようになります。自然言語を理解したり、コンテンツについて話したり、インテリジェントな対応をしたりといったことが、アプリで可能になります。データ サイエンスの専門知識を持たない開発者や企業がインテリジェントなエージェントを使用できるようになることで、日常での人とコンピューターの対話方法や、企業のビジネス上の顧客や従業員とのかかわり方などが、まったく新しいものへと変わることが考えられます。

2 年にわたるプレビュー期間中、デジタル トランスフォーメーションを推進しているさまざまなお客様との対話から、多くのことを学びました。このサービスの一般提供開始について発表したこちらの記事 (英語) では、UPS (英語)Equadex (英語) など数社の事例をご紹介しました。今回の記事では、Azure Bot Service と LUIS を使用した会話 AI について簡単に説明すると共に、これまでに学んだことや新機能の詳細についてお伝えします。また、自然言語を使用した会話ボットの構築がいかに簡単に始められるかについてもご紹介します。

Azure Bot Service と LUIS を使用した会話 AI

Azure Bot Service は、デバイスの種類を問わず複数のチャネルでユーザーとやり取りできる会話ボットの開発とホスティングのためのスケーラブルな統合環境を提供します。ボットには、テキスト、音声、カード、画像などのさまざまな形式でユーザー入力を受け取れる会話インターフェイスが備わっています。また、Cortana、Facebook Messenger、Skype などの 14 種類のチャネルがサポートされます。各種のクラウド AI サービスが Azure Bot Service のインテリジェンスを実現し、ユーザー入力を理解し推論するボットの頭脳を形成しています。ボットが入力を理解することで、ユーザーはアクション ハンドラーから何らかのタスクを実行したり、質問に回答したり、さらには雑談をしたりすることもできます。次の図は、会話 AI アプリがどのようにして Azure Bot Service とクラウド AI サービス (言語理解、音声認識、QnA Maker など) から実現されているかを示したものです。

Image 2

Language Understanding Intelligent Service (LUIS) はボットの頭脳の中核となるもので、これによりボットが自然言語入力を理解し、推論して、適切なアクションを取ります。カスタマイズはあらゆるビジネス シナリオで欠かせないものですが、LUIS は、データ サイエンスの専門知識を持っていない人でも独自のビジネス分野に応じたカスタム モデルを簡単に構築できるように支援します。このサービスは会話から価値ある情報を識別するように設計されており、ユーザーの目的 (インテント) を解釈して、文章から有益な情報 (エンティティ) を抽出します。これにより、細かなニュアンスを理解できる高品質の言語モデルが実現されています。

LUISAzure Bot Service の一般提供開始に伴い、次の新機能が導入されました。これらを活用して、これまで以上の成果を達成し、ユーザーの満足度を向上させてください。

Language Understanding Intelligent Service

  • ユーザー インターフェイスが更新され、アプリ 1 つあたりのインテント (文章から識別されるタスクやアクション) は最大 500 に、エンティティ (インテントに関するタスクやアクションを完了させるために文章から抽出された関連情報) は最大 100 に拡張されました。
  • 既存の 5 つのリージョン (西ヨーロッパ、米国西部、米国東部 2、米国中西部、東南アジア) に加えて、新たに
    7 つのリージョン (米国中南部、米国東部、米国西部 2、東アジア、北ヨーロッパ、ブラジル南部、オーストラリア東部) でも利用できるようになりました。これにより、ネットワーク レイテンシと帯域幅が改善されます。
  • 英語以外の言語でもさまざまな機能がサポートされています。
    • これまで英語のみで提供されていた構築済みエンティティ (数字、日付、時刻などの一般的な概念) が、フランス語スペイン語でも利用できるようになりました。
    • 構築済みドメイン (ドメインごとにグループ化された、既製のインテントとエンティティのコレクション。ユーザーが直接追加しアプリ内で使用できる) が中国語にも対応しました。
    • ドメインの語彙のカスタマイズを支援するフレーズ候補が、新たに中国語、スペイン語、日本語、フランス語、ポルトガル語、ドイツ語、イタリア語の
      7 言語でもサポートされるようになりました。

Azure Bot Service

  • Microsoft Bot Framework のチャネル、開発ツール、ホスティング ソリューションを使用した統合環境を提供し、ボット開発を促進します。
  • コードを変更することなく、サポートされているチャネル (Office 365 のメール、GroupMe、Facebook Messenger、Kik、Skype、Slack、Microsoft Teams、Telegram、テキスト/SMS、Twilio、Cortana、Skype for Business) を通じてユーザーとつながったり、アプリや Web サイトでカスタム エクスペリエンスを提供したりできます。
  • Azure ポータルに統合されたことで、年中無休 24 時間体制のサポート、監視機能、料金請求の統合といったメリットが、信頼ある Azure エコシステムから簡単に利用できるようになりました。
  • 以前から提供されていた米国西部、米国東部、西ヨーロッパ、東南アジアに加えて、北ヨーロッパ、オーストラリア東南部、オーストラリア東部、ブラジル南部、東アジアの合計 9 つのリージョンで一般提供が開始されました。
  • Web チャットや専用回線が提供される Premium チャネルがリリースされました。Premium チャネルでは、Standard チャネルの機能に加えて以下の独自の機能が提供されます。
    • パブリックなチャット サービスでデータを共有するのではなく、独自の Web サイトやアプリでユーザーとやり取りできます。
    • オープン ソースの Web チャットや専用回線のクライアントを使用して高度なカスタマイズが可能です。
    • 99.9% の可用性が保証されます。

ボットは、他の Azure サービスと接続して強化できるほか、Cognitive Services を追加してより人間のように見たり、聞いたり、解釈したり、やり取りしたりできるようにすることが可能です。たとえば、Computer Vision API や Face API を使用すれば、言語以外にも、ボットに渡された画像や顔も理解できるようになります。

マイクロソフトのお客様から得た教訓

ここまでの数年間、マイクロソフトは新しいインテリジェントな会話エクスペリエンスへの AI の応用を牽引し、特定のチャット サービスを使用するお客様を対象とした専用ソリューションや、その他のカスタム ソリューションを自身で作成する開発者向けの汎用 API を提供してきました。会話アプリ モデルの進化はまだ始まったばかりですが、その将来の見通しは既に立っています。

ボットがビジネスの進め方を変える: マイクロソフトは常々、デジタル トランスフォーメーションにおけるボットの重要性を理解している企業の皆様と活発な議論を行っています。そうした企業の皆様は、カスタマー サポート エクスペリエンスの強化、アクセシビリティの向上、さらには Web サイトに訪れないようなユーザーへの自社ビジネスの発信などをビジネス チャンスと捉えています。

開発者はテクノロジの選択肢を求めている: オープン ソース テクノロジの人気が高まる中、開発者はソリューションの構築に使用するテクノロジ コンポーネントを選択したいと考えています。

優れた会話アプリはマルチ対応である: マイクロソフトのお客様は、複数のタスクを遂行する会話エクスペリエンスを構築しています。その例としては、Q&A の検索、サポート チケットの発行、問題の診断をガイドするダイアログ、予約をスケジューリングしユーザーに最終確認を求める機能などを兼ね備えたカスタマー サポート ボットが挙げられます。

ビジネス ニーズに応じてスケーリングできる AI プラットフォームが求められている: ボットの中に体系化されている一連の概念によってビジネス シナリオが左右されることは珍しくありません。開発者は、必然性のない制限に邪魔されることなく、ビジネスの複雑さに応じてスケーリングすることができるテクノロジを必要としています。

会話アプリ プラットフォームには信頼性とコンプライアンス対応が必要: モバイル アプリ プラットフォームで優れた生産性シナリオを実現するためには堅牢で安全な環境を提供する必要がありますが、これは会話アプリ プラットフォームにも当てはまり、安全性、信頼性、コンプライアンス、プライバシーへの確実な対応が必要です。また、コンプライアンスに対応したソリューションを容易に構築できる必要もあります。

グローバルな企業は多言語にも対応している: 企業は、さまざまな言語を使用する世界中の顧客に年中無休 24 時間で対応する必要があります。

今こそ会話アプリの構築に乗り出すべきである: 現在ではネイティブ アプリの共通コントロールとされているものが 80 年代や 90 年代には確立され、2000 年代には Web やモバイルが確立されたのと同じように、業界では現在、優れた会話アプリがどのようなものかが定義されようとしています。

設計上の主な考慮事項

マイクロソフトではこれまでに学んだことを踏まえながら、以下の 6 項目に重点を置いて Azure Bot Service と LUIS の機能を設計しました。

コード ファーストのアプローチ: Azure Bot Service は BotBuilder SDK V3 (Node.js) をベースとして構築されており、開発者がボットの会話機能を完全に制御できるようにコード ファーストのアプローチが採用されています。このオープン ソース SDK は Node.js と C# の両方をサポートし、複数種類のダイアログと会話のオーケストレーション ツールを提供します。開発者は、入力欄に記入したり、ダイアログを管理したり、カードを提示するといったさまざまなタスクを利用できます。

多様なダイアログ管理機能: 単純な質問に応えるボットから、10 ~ 15 の複数の手順でタスクを遂行するソリューションまで、開発者は幅広いボットを構築しています。こうしたさまざまな種類のタスクに幅広く対応するために、多様なダイアログ管理機能が提供されます。開発者は、プロンプト、フォーム、自然言語のほかに、それらのコンポーネントを再利用する機能を備えた独自のダイアログ管理システムを組み合わせて使用することができます。

オープンなボット プラットフォーム: マイクロソフトの SDK と LUIS を使用したアプリは、オープン ソース テクノロジに対する Azure の取り組みに基づいて、接続されているあらゆるインフラストラクチャにデプロイできます。このため、複数のチャット チャネルでターゲットとしているユーザーに、デバイスや場所を問わずに利用してもらえます。このようにオープンな設計であるため、パブリック クラウドやオンプレミス インフラストラクチャなどのさまざまなデプロイメント プラットフォームと統合できます。

グローバルと多言語への対応: マイクロソフトが注力したのは、このサービスを幅広い地域で提供することと、Azure クラウドの一部としてできる限りユーザーに近い場所で提供することです。Azure Bot Service と LUIS の対応言語は拡大しています。

すぐに利用可能であること: ボットはどのような環境にもデプロイできますが、ボットや AI アプリをワンクリックでホストできる高機能な接続型クラウド サービスを提供しているのが Azure です。Azure Bot Service と LUIS を使用すると、自然な形でユーザーと会話できるボットを数分程度で立ち上げることができます。必要な Azure リソースのプロビジョニングは Azure Bot Service が行うため、開発者はビジネス ロジックに専念できます。LUIS ではカスタマイズ可能な構築済みアプリとエンティティ辞書 (Calendar、Music、Devices など) が提供されるため、ソリューションを迅速に構築してデプロイできます。辞書は Web 上の知識を総合的に取得したもので、数十億のエンティティが用意されています。ユーザーの会話から有用な情報を正確に識別するモデルを構築する際に便利です。

少ない労力でのモデルのカスタマイズ: カスタマイズは、どのようなビジネス シナリオでも欠かせません。LUIS では機械教育 (マシン ティーチング) の考えを採用しており、機械学習の専門知識を持たない開発者でも効率的に言語理解のカスタム モデルを構築できるようになっています。機械学習では新しいアルゴリズムの作成と「学習器」の精度向上に重点が置かれますが、機械教育の考えでは「教師データ」の有効性に重点が置かれます。機械教育とは、ソフトウェア エンジニアリングとプログラミング言語の原則に従いながらそれを拡張するという、一種のパラダイム シフトです。機械教育では、開発者が扱う情報を機械学習アルゴリズムに変換することで、機械学習モデルを構築するツール セットが開発者に提供されます。一方、機械学習ではそれらの情報から有効なモデルが作成されます。LUIS では、開発者が扱う情報はスキーマ (LUIS アプリに含まれるインテントやエンティティの種類) とラベル付きの手本として表されます。正規化によってエンティティを高い信頼度で認識するためのさまざまな手法がサポートされており、プログラムの中で容易に利用できます。

絶え間ない監視、学習、改良: Azure Bot Service と LUIS では Azure の監視ツールを使用して、言語理解モデルの品質やボットの使用状況などのボットのパフォーマンスを監視できます。モデルが入力の処理を開始すると、LUIS は積極的に学習を開始し、モデルの継続的な更新や改良を支援します。開発者は実際のボットのトラフィックから特に有益な発言を抽出し、モデルに追加して、継続的に改良することができます。モデルのトレーニング データに追加する手本をインテリジェントに選択することで、大量のデータを必要としない、コスト効率の良いモデルで高い精度を実現できます。

Bot Service と LUIS の使用を開始する

このセクションでは、LUIS を使用してユーザーを理解するボットを Azure Bot Service で作成します。自然言語を使用するボットを作成する場合、ボットはユーザーの意図を理解しユーザーが何を望んでいるかを判断します。この意図は音声やテキストによる入力、または発言を基に判断され、ボット開発者がコード化したアクションにマッピングされます。たとえば、メモを取るボットの場合、ボットでメモを認識します。開発者は、メモを作成する関数を呼び出すインテントを作成します。発言の中の重要な単語であるエンティティをボットが抽出することが必要な場合もあります。メモを取るボットの場合、ノートがこれに当たります。Title というエンティティで、それぞれのメモのタイトルを識別します。

Bot Service で言語を理解するボットを作成する

ここからは、実際にボットを作成します。Azure ポータルにログインしてからメニュー ブレードで [Create new resource]、[AI + Cognitive Services] の順に選択します。

AI Cognitive Services

候補の中から探すか、または [Web App Bot] を検索します。

Web App Bot

[Web App Bot] を選択すると、Azure ユーザーに馴染み深い形式の [Bot Service] ブレードが表示されます。ここで、ボットを運用する場所やサブスクリプションなど、使用する Bot Service のサービスに関する情報を指定します。[Bot Service] ブレードで必要な情報を指定し、[Create] をクリックします。これで、ボット サービスと LUIS アプリが作成され、Azure にデプロイされます。特に注目したいフィールドについて説明します。

  • [App name] にはボット名を設定します。この名前は、クラウドにボットをデプロイする時のサブドメインとして使用されます (例: mynotesbot.azurewebsites.net)。また、この名前はボットに関連付けられる LUIS アプリの名前としても使用されます。ボットに関連付けられた LUIS アプリを検索するときに後で使用するので、コピーしておいてください。
  • サブスクリプション、リソース グループ、ホスティング プラン、場所を選択します。
  • [Pricing tier] では、無料の料金レベルを選択できます。必要な場合は、後からいつでもこの手順に戻って変更することができます。
  • この例では、[Bot template] フィールドで [Language understanding (C#) ] テンプレートを選択します。
  • 最後の必須の [Azure Storage] フィールドでは、ボットの会話の状態を保存するストレージを選択します。これは、会話の中で各ユーザーをボットが追跡するため場所と考えてください。

Bot Service

これで作成準備は完了です。[Create] をクリックします。ボット本体、ボットの運用に必要なリソース、自然言語モデルをホストする LUIS アカウントを Azure がセットアップします。完了したら、Azure ポータルの右上のベルで通知されます。通知が届いたら、ボット サービスがデプロイされたことを確認します。

  • 通知 (Azure ポータル右上のベル アイコン) をクリックします。しばらくすると通知が [Deployment started] から [Deployment succeeded] に変わります。
  • 通知が [Deployment succeeded] に変わったら、その通知の [Go to resource] をクリックします。

ボットをテストする

これでボットが動作するようになりました。それでは、テストしてみましょう。

ボットが登録されたら、[Test in Web Chat] をクリックして [Web Chat] ウィンドウを開き、「hello」と入力します。

NotesBot - Test in Web Chat

ボットは、「You have reached Greeting. You said: hello」と応答します。これで、入力したメッセージがボットに受け取られ、先ほど作成した既定の LUIS アプリに渡されたことを確認できました。既定の LUIS アプリは、Greeting インテントを検出しました。

注: セットアップ後の 1 ~ 2 回のメッセージは、ボットが回答するまで再試行が必要な場合があります。

ボットが正常に動作することが確認できました。既定のボットの知識はごくわずかで、いくつかのあいさつ、ヘルプ、キャンセルしか認識できません。次のセクションでは、ボットで使用する LUIS アプリを変更して、メモを取るボットに新しいインテントを複数追加します。

LUIS アプリを変更する

Azure と同じアカウントで www.luis.ai (英語) にログインし、[My apps] をクリックします。すべてが正常に動作していれば、先ほど Bot Service を作成したときに [Bot Service] ブレードの [App name] に入力したのと同じ名前のアプリがリストに表示されます。

アプリを開くと、4 つのインテント (Cancel、Greeting、Help、None) が表示されます。最初の 3 つについては、既に言及しました。None は LUIS 独自のインテントで、「その他すべて」に該当します。

ここでは、ユーザーのインテントを 2 つ追加します (Note.CreateNote.ReadAloud)。LUIS の便利な機能の 1 つが、アプリのブートストラップとして使用できる構築済みドメインです。そのうちの 1 つが Note です。

  • ページ左下の [Prebuilt Domains] をクリックします。Note ドメインを選択してから [Add domain] をクリックします。
  • このチュートリアルでは、構築済みの Note ドメインに含まれているインテントの一部のみを使用します。[Intents] ページで以下のインテント名をそれぞれ選択し、[Delete] ボタンをクリックしてアプリから削除します。
    • Note.ShowNext
    • Note.DeleteNoteItem
    • Note.Confirm
    • Note.Clear
    • Note.CheckOffItem
    • Note.AddToNote
    • Note.Delete
  • 重要: LUIS アプリには、Note.ReadAloud、Note.Create、None、Help、Greeting、Cancel の各インテントのみを残します。他のインテントが残っていても正常に動作する可能性はありますが、多くの場合、挙動が安定しません。

前述のように、追加したインテントが表すのは、ユーザーがボットに要求することとして想定されるものです。これらは事前に定義済みであり、モデルのチューニングをさらに行う必要はないため、モデルのトレーニングと公開の手順に進みます。

  • 右上の [Train] ボタンをクリックしてアプリをトレーニングします。モデルをトレーニングする場合、インテントとエンティティを作成し、発言を入力してそれにラベルを付け、機械学習されたモデルを生成する必要がありますが、その手順をすべてワンクリックで実行することができます。LUIS ポータルでは、アプリをテストすることも、公開してボットの機能を提供することもできます。
  • 上部のナビゲーション バーの [PUBLISH] をクリックして [Publish app] ページを開きます。[Publish
    to production slot] ボタンをクリックします。正常に公開されたら、[Publish app] ページの [Endpoint] 列に表示された URL をコピーします (行の先頭の [Resource Name] 列には「Starter_Key」と表示されています)。 この URL は、後からボットのコードで使用するので保存しておいてください。URL は、次のようになります。
    https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/xxxxxxxxxxxxxxxxx?subscription-key=xxxxxxxxxxxxxx3&timezoneOffset=0&verbose=true&q=

これで、LUIS アプリをボットで使用する準備が整いました。ユーザーがメモの作成、削除、読み上げを要求すると、LUIS がその意図を認識し、ボットが実行すべき適切なインテントを返します。次のセクションでは、これらのインテントを処理するロジックをボットに追加します。

ボットのコードを変更する

Bot Service は従来の開発環境で機能するようになっており、Git でソース コードを同期したり、お好みの開発環境で作業したりできます。また、Azure Bot Service はポータルから直接編集することができ、これはテストのときに便利です。[Build]、[Open online code editor] の順にクリックします。

Modify the bot code

最初に多少の前置きがあります。コード エディターで BasicLuisDialog.cs を開きます。このファイルには、LUIS アプリで Cancel、Greeting、Help、None の各インテントを処理するコードが含まれています。

以下の文を追加します。

using System.Collections.Generic;

メモを保存するクラスを作成する

BasicLuisDialog コンストラクターの後に以下のコードを追加します。

 
private readonly Dictionary<string, Note> noteByTitle = new Dictionary<string, Note>(); 
private Note noteToCreate; 
private string currentTitle; 
// 定数 
// メモのタイトルのエンティティ名 
public const string Entity_Note_Title = "Note.Title"; 
// 既定のメモのタイトル 
public const string DefaultNoteTitle = "default"; 
[Serializable] 
public sealed class Note : IEquatable<Note> 
{ 
public string Title { get; set; } 
public string Text { get; set; } 
public override string ToString() 
{ 
return $"[{this.Title} : {this.Text}]"; 
} 
public bool Equals(Note other) 
{ 
return other != null 
&& this.Text == other.Text 
&& this.Title == other.Title; 
} 
public override bool Equals(object other) 
{ 
return Equals(other as Note); 
} 
public override int GetHashCode() 
{ 
return this.Title.GetHashCode(); 
} 
} 

Note.Create インテントを処理する

Note.Create インテントについては、以下のコードを BasicLuisDialog クラスに追加します。

 
[LuisIntent("Note.Create")] 

public Task NoteCreateIntent(IDialogContext context, LuisResult result) 

{ 

EntityRecommendation title; 

if (!result.TryFindEntity(Entity_Note_Title, out title)) 

{ 

// メモのタイトルの入力をユーザーに促す 

PromptDialog.Text(context, After_TitlePrompt, "What is the title of the note you want to create?"); 

} 

else 

{ 

var note = new Note() { Title = title.Entity }; 

noteToCreate = this.noteByTitle[note.Title] = note; 

// メモの入力をユーザーに促す 

PromptDialog.Text(context, After_TextPrompt, "What do you want to say in your note?"); 

} 

return Task.CompletedTask; 

} 

private async Task After_TitlePrompt(IDialogContext context, IAwaitable<string> result) 

{ 

EntityRecommendation title; 

// タイトルを設定する (作成、削除、読み上げに使用) 

currentTitle = await result; 

if (currentTitle != null) 

{ 

title = new EntityRecommendation(type: Entity_Note_Title) { Entity = currentTitle }; 

} 

else 

{ 

// 既定のメモのタイトルを使用する 

title = new EntityRecommendation(type: Entity_Note_Title) { Entity = DefaultNoteTitle }; 

} 

// 新しいメモ オブジェクトを作成する 

var note = new Note() { Title = title.Entity }; 

// 新しいメモをメモのリストに追加し、後でテキストを追加するために保存する 

noteToCreate = this.noteByTitle[note.Title] = note; 

// メモの入力をユーザーに促す 

PromptDialog.Text(context, After_TextPrompt, "What do you want to say in your note?"); 

} 

private async Task After_TextPrompt(IDialogContext context, IAwaitable<string> result) 

{ 

// メモのテキストを設定する 

noteToCreate.Text = await result; 

await context.PostAsync($"Created note **{this.noteToCreate.Title}** that says \"{this.noteToCreate.Text}\"."); 

context.Wait(MessageReceived); 

} 

Note.ReadAloud インテントを処理する

このボットでは、Note.ReadAloud インテントを使用してメモの内容を表示できます。メモのタイトルが検出されなかった場合はすべてのメモの内容を表示します。BasicLuisDialog クラスに以下のコードを追加します。

 [[LuisIntent("Note.ReadAloud")]

public async Task NoteReadAloudIntent(IDialogContext context, LuisResult result) 
{ 
Note note; 
if (TryFindNote(result, out note)) 
{ 
await context.PostAsync($"**{note.Title}**: {note.Text}."); 
} 
else 
{ 
// 特定のタイトルのメモが検出されなかった場合はすべてのメモを表示する 
string NoteList = "Here's the list of all notes: \n\n"; 
foreach (KeyValuePair<string, Note> entry in noteByTitle) 
{ 
Note noteInList = entry.Value; 
NoteList += $"**{noteInList.Title}**: {noteInList.Text}.\n\n"; 
} 
await context.PostAsync(NoteList); 
} 
context.Wait(MessageReceived); 
} 
public bool TryFindNote(string noteTitle, out Note note) 
{ 
// 一致するものがなかった場合は TryGetValue が false を返す 
bool foundNote = this.noteByTitle.TryGetValue(noteTitle, out note); 
return foundNote; 
} 
public bool TryFindNote(LuisResult result, out Note note) 
{ 
note = null; 
string titleToFind; 
EntityRecommendation title; 
if (result.TryFindEntity(Entity_Note_Title, out title)) 
{ 
titleToFind = title.Entity; 
} 
else 
{ 
titleToFind = DefaultNoteTitle; 
} 
// 一致するものがなかった場合は TryGetValue が false を返す 
return this.noteByTitle.TryGetValue(titleToFind, out note); 
} 

ボットをビルドする

コードの追加が終了したら、コード エディターの build.cmd を右クリックし、[Run from Console] をクリックします。これでボットがビルドされ、オンラインのコード エディター環境内にデプロイされます。

ボットをテストする

Azure ポータルで [Test in Web Chat] をクリックしてから、「create a note」、「read my notes」、「delete notes」などのメッセージを入力して、ボットをテストします。自然言語を使用しているため、ユーザーの要求を柔軟に受け取れます。その後 LUIS の能動学習機能を使用して LUIS アプリを監視することで、アプリが理解できなかったユーザーの発言内容の候補が提示されます。これにより、アプリの有効性を向上させることができます。

Test in Web Chat

ヒント: ボットがインテントやエンティティを正しく認識しないことがある場合、発言のサンプルを多く入力してトレーニングを行うと LUIS アプリを改善できます。LUIS アプリを再トレーニングする際は、ボットのコードを変更する必要はありません。

まとめ (現時点)

これで使用を開始する準備が整いました。ボット サービスをさらに充実させて、さまざまな会話チャネルにボットを接続することができます。また、構築済みインテントを削除し、アプリ用に独自のインテントを作成することもできます。

会話アプリの作成にはまだまだ未知の領域がありますが、始めるのは簡単です。ぜひ皆様の作品の情報やご意見をお寄せください。詳細については、以下のサイトを参照してください。

ではまた!

Azure Bot Service および Language Understanding チーム