Skip to content

Latest commit

 

History

History
233 lines (145 loc) · 9.08 KB

04_composer_luis.md

File metadata and controls

233 lines (145 loc) · 9.08 KB

Language Understanding でユーザーの意図を予測

前のステップ では正規表現を利用してユーザー入力の意図を理解しました。

このステップでは、Language Understanding (LUIS) を利用して、より柔軟で強力にユーザーの意図を予測するように変更します。
Bot Framework Composer の基礎 - 2 では、正規表現 でユーザーの意図を認識しました)

1. Recognizer Type の変更
2. Language Understanding の設定
3. Help トリガーのフレーズの入力
4. Web Chat で動作確認

Language Understanding (LUIS) とは、自然言語による入力に対して、

  • 全体の意味を予測
  • 関連性のある詳細な情報を引き出す

サービスです。


"Language Understanding" はプレビューでは "LUIS" と呼ばれていました。
GA して Language Understanding と名称が変わりましたが、ドキュメントやライブラリにも LUIS という表記が残っていたり、GA 後も LUIS と呼ばれることが多くあります。

このハンズオンでは、ヘルプを呼び出す範囲でのみ Language Understanding を使用するので機能が実感しづらいですが、実装手順を理解することを目的とします。



Recognizer Type の変更

"MyQnaBot" の Recognizer Type (=ユーザー意図の識別方法) は、Bot Framework Composer の基礎 - 2 では "Regular expression recognizer" にしました。

ここで "Default recognizer" (= Language Understanding 利用) に変更して、もう少し柔軟な自然言語処理でユーザー意図を予測するように変更します。


  1. [MyQnaBot] ダイアログを選択して、Property の [Recognizer Type] を "Default recognizer" に変更します。



Language Understanding の設定

Bot Framework Composer の設定画面で Language Understanding のセットアップを行います。

  1. [Configure] - [Development resources] を開いて [Set up Language Understanding] をクリックします。


  1. [Create and configure new Azure Resources] を選択して [Next] を選択します。


  1. Azure の認証を求められたらサインインします。

  2. Language Understanding のリソースを作成する Azure アカウントとサブスクリプションとを選択します。

  3. リソースグループ、リージョン、価格プランを入力・選択します。続いて [Next] をクリックします。

    項目名
    Azure resource group ドロップダウンを開いて [+ Create new] を選択
    Resource group name 任意の名前で新規作成 (上で "Create new" するまでは非表示)
    Region West US
    Language Understanding resouce name 任意の名前で新規作成

  1. しばらく待つと Language Understanding のリソースが作成されます。
    リソース作成に成功するとキーが取得されて [Create Language Understanding resources] が表示されます。
    ポップアップは [Done] で閉じます。


Help トリガーのフレーズの入力

Help ダイアログにコンテキストを切り替える契機となるフレーズを入力します。

  1. "MyQnaBot" の "Help" トリガーを選択します。

    選択するのは "Help" ダイアログではありません。


  1. Property の [Trigger phrases] に以下の入力をします。

    - Help
    - ヘルプ
    - ボットの使い方
    - Botの機能
    - このボットで何が出来るの
    - あなたの機能について教えて

    "Trigger phrases" では、類義語を使用した別のフレーズを登録したり、英語と日本語とを組み合わせるなどをすると認識精度が上がることがあります。
    例えば

    • "使い方" と "機能"
    • "help" と "ヘルプ"
    • "Bot" と "ボット"

    などを使います。
    こうすると "このボットの使い方" や "Botの機能を教えて" などの日本語(自然言語)の表現の揺らぎを吸収してくれます。


  1. 認識の精度をより上げるために エンティティ も合わせて設定します。
    [Trigger phrases] の [Add entity] - [Machine learning entity] を選択します。


  1. 追加された行を変更します。
    さらに同様の操作でもう一つエンティティを追加・変更します。

    @ ml Action

    @ ml Bot


  1. ヘルプの例文にエンティティを設定します。
    1行目の "Help" を選択すると [labe entity] が表示されます。ここで "Action" を選択します。
    この操作で 1行目が以下のように変更されます。

    - {Action = Help}


  1. ほかの例文にも同様の操作でエンティティを設定します。 以下はエンティティも含めた Trigger phrases 全体です。

    - {Action = Help}
    - {Action = ヘルプ}
    - {Bot = ボット}の{Action = 使い方}
    - {Bot = Bot}の{Action = 機能}
    - この{Bot = ボット}で何が{Action = 出来る}の
    - {Bot = あなた}の{Action = 機能}について教えて

    @ ml Action

    @ ml Bot


  1. [Condition] のドロップダウンを開いて "Write an expression" を選択します。


  1. [Condition] に以下の入力をします。
    前の操作で [Condition] には "=" が設定されているので、それも利用して以下のとおり指定します。

    =#Help.Score > 0.94

    Language Understanding での推論の結果、ユーザーの入力が "Help" である可能性が 94% より高い場合に Help ダイアログにコンテキストを切り替えることを意味します。
    それ以下の場合は、ユーザーの入力は "Help" 以外で処理されます。(現在は "Unknown intent" のみ)

    上で指定した 94% という数値は中途半端な値に思えるかもしれません。
    この後の方法で動作確認をしたところ、子のハンズオンを作成時には閾値として適切な値になったために今回は 94% にしました。
    Language Understanding のスコアは随時変更される可能性があるので、その場合はより適切な予測ができる値に変更してください。



Web Chat で動作確認

  1. 組み込みの Web Chat で何か入力してみます。

    • ヘルプ
    • ボットの機能
    • こんにちは
    • ランチのおすすめは

    などを入力します。

    ヘルプに関係する入力の場合はヘルプメッセージが返ってくること、それ以外の入力にはオウム返しすることが確認できます。


  1. "ヘルプ" などと入力した際には Language Understanding で入力の意図を類推していることを確認します。


    ボットの応答の内容だけ見ると、正規表現を使っていた時と同じように見えるかもしれません。
    Web Chat のトレースを見ると、今回は確かに "Language Understanding" への問い合わせが実行されていることがわかります。


以上で Language Understanding を利用してユーザーの意図を予測できるようになりました。

次のステップでは QnA Maker と連携して、FAQ ボットの機能を追加します。

前に戻る | 次に進む
目次に戻る