このハンズオン ラボでは、マイクロソフトの Language Understanding Intelligent Service (LUIS) を使用して、アプリケーションの自然言語処理機能を強化したモデルを作成する方法について説明します。
このラボでは、LUIS モデルの構築、トレーニング、および公開を行い、(将来のラボで作成される) ボットが人間のユーザーと効果的に通信できるようにします。
注記: このラボでは、今後のラボで使用する LUIS モデルのみを作成して、よりインテリジェントなボットを構築します。
LUIS の機能については既にワークショップで説明しました。LUIS について復習するには、詳細をお読みください。
LUIS の概要を把握したところで、LUIS アプリを計画します。既に特定のテキストが含まれるメッセージに応答する基本的なボット ("PictureBot") を作成しています。ボットが実行できるさまざまなアクションをトリガーする意図を作成し、さまざまなアクションに必要なエンティティを作成する必要があります。たとえば、PictureBot の意図は "OrderPic" であり、適切な応答を提供するためにボットをトリガーするとします。
たとえば、「Search」の場合 (ここでは実装されません)、PictureBot の意図が "SearchPics" であり、写真を検索するために Azure Search サービスがトリガーされます。これには、検索対象を知るために "facet" エンティティが必要です。アプリを計画するためのその他の例については、ここを参照してください。
アプリについて考え抜いたら、それを構築してトレーニングする準備が整いました。
復習のために、LUIS アプリケーションの作成時に一般的に実行する手順は次のとおりです。
LUIS ではラボで使用できる "スターター キー" が提供されるため、Portal での LUIS サービスの作成はオプションです。ただし、Portal で無料または有料のサービスを作成する方法を確認する場合は、以下の手順に従って実行できます。
注 pre-req ARMテンプレートを実行した場合、Language Understanding API を含む Cognitive Services リソースがすでにあります。
-
Azure Portal を開く
-
「リソースの作成」をクリックします。
-
検索ボックスにLanguage Understandingを入力して、 Language Understandingを選びます
-
[作成] をクリックします。
-
Create optionsはBothを選択します。
-
名前に {YOURInitial}luisbot と入力します
-
サブスクリプションとリソースグループを選択します。
-
Authoring locationを選択します。
-
Authoring pricing tierについては、 F0を選択します
-
Runtime locationを選択します。
-
Runtime pricing tierについては、 F0を選択します。
-
リソース グループを選択します。
-
[作成] をクリックします。
注: Luis AI Web サイトでは、Azure ベースのコグニティブ サービス リソースを制御または公開することはできません。トレーニングと公開を行うには、API を呼び出す必要があります。
LUIS を使用して、自然言語機能を追加する方法を見てみましょう。LUIS を使用すると、自然言語の発話 (ボットと話すときにユーザーが話す単語/フレーズ/文) を意図 (ユーザーが実行するタスクやアクション) にマッピングできます。ここでは、写真の検索、写真の共有、写真のプリントの順序付けなど、いくつかの意図があります。これらの事柄を尋ねる方法として、発話のいくつかの例をご紹介します。LUIS では、学習した内容に基づいて、それぞれの意図に追加の新しい発話がマッピングされます。
警告: Azure サービスでは IE を既定のブラウザーとして使用しますが、LUIS にはお勧めしません。すべてのラボで Chrome または Firefox を使用できるはずです。あるいは、Microsoft Edge または Google Chrome のいずれかをダウンロードすることもできます.
- https://www.luis.aiに移動します (ヨーロッパまたはオーストラリアにいない場合*)。ボットをサポートする新しい LUIS アプリを作成します。
注: ヨーロッパ リージョンでキーを作成した場合は、https://eu.luis.ai/ でアプリケーションを作成する必要があります。オーストラリア リージョンでキーを作成した場合は、https://au.luis.ai/ でアプリケーションを作成する必要があります。LUIS を公開しているリージョンの詳細については、ここを参照してください。
-
Microsoft アカウントを使用してサインインします。(これは、前のセクションで LUIS キーを作成したのと同じアカウントにする必要があります)。
-
[今すぐ LUIS アプリを作成する] をクリックします。LUIS アプリケーションの一覧にリダイレクトされるはずです。メッセージが表示されたら、[レイヤーの移行] をクリックします。
-
初めての場合は、サービスの利用規約に同意し、お住まいの国を選択するよう求められます。
- 次のステップでは、推奨オプションを選択し、Azure アカウントを LUIS にリンクする必要があります。
- 最後に設定を確認すると、LUIS アプリページに転送されます。
注意: 現在のページの「New App」 (新しいアプリ) ボタンの横に「Import App」 (アプリのインポート) もあります。LUIS アプリケーションを作成した後、アプリ全体を JSON としてエクスポートし、ソース管理にチェックインできます。これは推奨されるベスト プラクティスであり、コードのバージョン管理に合わせて LUIS モデルのバージョンを管理できます。エクスポートされた LUIS アプリは、「Import App」 (アプリのインポート) ボタンを使用して再インポートできます。ラボの進行が遅れてしまい、ショートカットする場合は、「Import App」 (アプリのインポート) ボタンをクリックして LUIS モデルをインポートできます。
-
メインページで、[新しいアプリの作成] ボタンをクリックします
-
名前を入力し、[完了]をクリックします。[効果的な LUIS アプリの作成方法] ダイアログを閉じます。
- 上部のナビゲーションで、[BUILD] リンクを選択します。"None" (なし) という意図が 1 つあることにも注意してください。いずれの意図にもマッピングされないランダムな発話は、"None" (なし) にマッピングされる場合があります。
ボットが次のことを実行できるようにしましょう。
- 写真を検索する
- ソーシャル メディアで写真を共有する
- 写真のプリントを注文する
- ユーザーに挨拶する (ただし、これは後で説明するように、他の方法でも可能)
これらのそれぞれを要求するユーザーの意図を作成してみましょう。
-
「Create new intent」(新しい意図の追加) ボタンをクリックします。
-
最初の意図に "Greeting" という名前を付け、「完了」をクリックします。
-
ボットに挨拶するときにユーザーが話す可能性のある言葉の例をいくつか示し、それぞれの後に Enter キーを押します。
エンティティを作成する方法を見てみましょう。ユーザーが写真の検索を要求するとき、何を探すかを指定できます。エンティティ内でキャプチャしてみましょう。
-
左側の列の**「Entities」をクリックし、「Create new entity」**をクリックします。
-
エンティティ名 facet を付ける
-
エンティティタイプとして[シンプル] を選択します。
-
完了をクリック します。
-
左側のサイドバーの「Intents」 (意図) をクリックし、「Create new intent」 (新しい意図の追加) ボタンをクリックします。
-
"SearchPics" という意図名を付け、「Done」 (完了) をクリックします。
"greetings" で行ったのと同じように、いくつかのサンプル発話 (ボットと話すときにユーザーが話す可能性のある単語/フレーズ/文) を追加してみましょう。写真を検索する方法は数多くあります。以下の発話の一部を自由に使用して、ボットに写真を検索するように依頼する方法について独自の文章を追加してください。
- Find outdoor pics (屋外の写真を見つける)
- Are there pictures of a train? (電車の写真はあるか)
- Find pictures of food. (食べ物の写真を見つける)
- Search for photos of kids playing (遊んでいる子供の写真を検索する)
- Show me beach pics (ビーチの写真を見せて)
- 犬の写真を見つける
- Show me pictures of men wearing glasses (眼鏡をかけている男性の写真を見せて)
- Show me happy baby pics (幸せな赤ちゃんの写真を見せて)
いくつかの発話を用意したら、検索トピックを "facet" エンティティとして選択する方法を LUIS に教える必要があります。"facet" エンティティが選択するものは何でも検索されます。
- 単語にカーソルを合わせてクリックするか、連続する単語をクリックして単語のグループを選択し、次に "facet" エンティティを選択します。
ファセットにラベルが付けられると、発話がこのようになる可能性があります。
注 このワークショップには Azure Search は含まれていませんが、この機能はデモンストレーションのために残されています。
- 左側のサイドバーの「Intents」(意図) をクリックして、さらに 2 つの意図を追加します。
-
1つの意図に "SharePic" という名前を付けます。これは、次のような発話によって識別される場合があります。
-
この写真を共有
-
水泳写真を送って
-
ツイートできますか?
-
ツイッターに投稿
-
"OrderPic" という名前の別の意図を作成します。これは、次のような発話で伝達できます。
-
この写真を印刷
-
プリントを注文したい
-
8x10 が入手可能であるか
-
注文ウォレット
発話を選択するときには、質問、命令、"...したい..." 形式の組み合わせを使用すると便利です。
- 最後に、"None" という意図にサンプル発話を追加する必要があります。これにより、アプリケーションのスコープ外である場合に LUIS にラベルを付けることができます。"I'm hungry for pizza" (ピザを食べたい)、"Search videos" (動画を検索) などを追加します。「None」 (なし) という意図には、アプリの発話の約 10-15% が必要です。
これで、モデルをトレーニングする準備が整いました。
-
右上のバーで「Train」 (トレーニング) をクリックします。これにより、指定したトレーニング データを使用して「utterance」 (発話) --> 「intent mapping」 (意図のマッピング) を行うモデルが構築されます。トレーニングはすぐに行われるとは限りません。場合によっては、キューに入れられ、数分かかることがあります。
-
トップバーの [管理(Manage)] をクリックします。ウィンドウの左側には、いくつかのオプション (「Application Information」 (アプリケーション情報)、「Azure Resources」 (Azure リソース)、「Publish Settings」 (発行設定)、「Versions」 (バージョン)、「Collaborators」 (共同作業者)) があります。さまざまな公開オプションの詳細については、ここを参照してください。
-
[Azure リソース] を選択すると、後で LUIS 統合にここでキーを使用することも、単に Azure Portal のキーを使用することもできます。
-
トップバーで [公開(Publish)] をクリックします。"Production" エンドポイントまたは "Staging" エンドポイントに公開するオプションがあります。
-
「Production」を選択し、2 つのエンドポイントの理由についてお読みください。
-
次に、「Publish」 (公開) をクリックします。
公開すると、LUIS モデルを呼び出すエンドポイントが作成されます。URL が表示されます。これについては、後のラボで説明します。
-
[アプリケーション情報] をクリックし、**アプリケーション ID **をコピーします。
-
[Azure Resources] をクリックして、キーとエンドポイント URL をコピーします。
注 URL全体は使用しません。https://{region}.api.cognitive.microsoft.com 部分のみが必要です。
- 右上のバーの「Test」 (テスト) をクリックします。いくつかの発話を入力して、意図が返されることを確認してください。現在または将来のラボでこれを行う場合に備えて、対話型のテストとエンドポイントの発話に慣れておいてください。
次に、簡単な例を示します。モデルで間違って "send me a swimming photo" (水泳写真を送って) が SharePic として割り当てられていることに気付きました。これは SearchPic に割り当てる必要があります。意図を再割り当てしました。
ここで、「Train」 (トレーニング) ボタンを選択して、アプリを再トレーニングする必要があります。次に、同じ発話をテストし、今回のトレーニングと以前に公開されたモデルの結果を比較しました。モデルを使用するアプリケーションの更新を確認するには、モデルを再公開する必要があります。
公開されたエンドポイントをブラウザーでテストすることもできます。エンドポイントの URL をコピーします。ブラウザーでこの URL を開くには、URL パラメーター&q=
をテスト クエリに設定します。たとえば、URL にFind pictures of dogs
を追加し、Enter キーを押します。ブラウザーには、HTTP エンドポイントの JSON 応答が表示されます。
まだ時間がある場合は、www.luis.ai サイトを探索してください。「Prebuilt Domains」 (事前構築済みドメイン) を選択し、既に利用できるものを確認してください。また、他の機能やパターンの一部を確認し、 LUIS モデルの作成、LUIS モデルの管理、会話のシミュレーションなどを行うための BotBuilder ツールを確認することもできます。後で、LUIS スキーマの設計方法が含まれる別のコースに興味を抱くこともあるでしょう。
Azure Search が含まれる LUIS モデルの作成を試みる場合は、検索を含めた LUIS モデルのトレーニングに従います。