サーチ…


前書き

BotフレームワークはRecognizersサポートしています。レコグナイザーは、ユーザーがbotにメッセージを送信するたびに何をすべきかを認識するために使用されます。したがって、ユーザーの入力に基づいてインテントを認識するようにボットを設計できます。レコグナイザは、ボットの自然言語の理解を追加するためにLUIS APIと共に使用することができます。

構文

  • var recognizer = new builder.LUISRecognizer( 'あなたのモデルのURL');

  • var intents = new builder.IntentDialog({認識子:[認識子]});

LUISRecognizerの初期化と追加

はじめにで紹介した基本テンプレートを使って新しいプロジェクトを作成したら、LUISRecognizerを追加することができます。

var model = ''    // Your LUIS Endpoint link comes here
var recognizer = new builder.LuisRecognizer(model);

今、 recognizerはLUISRecognizerであり、定義されたLUISモデルに基づいてインテントを渡すことができます。 recognizerプログラムをインテントに追加するには

var intents = new builder.IntentDialog({recognizers: [recognizer]});

あなたのボットはLUISからのインテントを処理できるようになりました。 IntentDialogクラスのmatchesプロパティを使用すると、LUIS上の任意の名前付きインテントを検出できます。つまり、 hiという名前のインテントがLUISモデルで定義され、ボットの意図を認識し、

intents.matches('hi', function(session) {
    session.send("Hey :-)");
});

インテントによるLUISモデルの定義

LUISモデルを作成するには、プログラミングの経験はほとんど必要ありません。ただし、広範囲に使用される2つの重要な用語に精通している必要があります。

  1. インテント - ユーザーが何かを入力したときに実行する必要のある関数を識別する方法です。例: Hiという名前のインテントは、ユーザーが「Hi」を送信するたびに実行する必要のある関数を識別します。インテントは、プログラム/モデル内で一意に命名されます。
  2. エンティティ(Entities) - ステートメント内の名詞を識別します。例えば、 - 「午後1時にアラームを設定する」、ここでは1:00 pmは、アラームを設定するためにチャットボットによって認識される必要があるエンティティです。

注:ウェブサイトの画像は私の変更のフロントエンドとして提供されていませんが、コアコンセプトは変わりません。

新しいモデルを作成するには、LUIS.aiにアクセスし、Microsoftアカウントでサインインしてアプリ作成ページに移動します。空のプロジェクトを作成できる場所。

インテントの定義:

インテントは[ Intents ]タブで定義できます。ユーザーが何かを入力したときに実行する必要がある機能を識別します。

すべてのアプリケーションには、ユーザーの入力が他のインテントと一致しない場合にアクティブ化されるデフォルトの「 Noneインテントがあります。

インテントを定義するには、

  1. 実行する機能に固有の固有の名前を付けます。
  2. 命名が完了したら、意図にutterancesを追加する必要があります。発話は、定義している意図をアクティブにするためにユーザーが送信したいものです。 LUISがintentsutterances適切に関連付けるためには、できるだけ多くの異なるutterancesを試してみてください。
  3. Train and Testタブの「 Trainボタンをクリックして、LUISモデルをトレーニングします。トレーニングの後、アプリは下のパネルでテストすることができます。
  4. 最後に、アプリを[アプリのPublish AppタブにPublish Appします。 LUISRecognizerで、ボットコードにLUISRecognizerを定義するLUISRecognizerに入力する必要のあるエンドポイントURLを取得する必要があります。

LUISモデルへのエンティティの追加

エンティティは、ボットがインテントに従った特定の発話から抽出した情報です。

してみましょうEG- My name is John Doeと呼ばれる意思に属しintroduction 。あなたのボットが文からJohn Doeという名前を理解して抽出するには、そうするエンティティを定義する必要があります。エンティティには任意の名前を付けることができますが、抽出する内容に名前を付けるのが最善です。この例では、エンティティname呼び出すことができます。

エンティティは異なる目的間で再利用され、異なるものを抽出することができます。ですから、最良の原則は、データのタイプのみを抽出し、異なるインテントで使用するエンティティを作成することです。したがって、上記の例では、 bookingとは、 Book a flight on Emiratesがインテントbooking属している場合、同じエンティティ、 name使用してemirates航空のフライト名を抽出することができます。

エンティティを定義する前に、2つのことを覚えておく必要があります。

  1. エンティティは意図的に発声ごとに一意でなければなりません。エンティティは同じ発声で2回使用できません。
  2. LUISは大文字と小文字を区別しません。これは、エンティティ抽出によって抽出され受信されるすべてが小文字になることを意味します。したがって、エンティティを介して大文字と小文字を区別するデータを抽出することはおそらく悪い考えです。

あらかじめ作成されたエンティティを追加する

名前が示すように、あらかじめ作成されたエンティティは、事前に構築されているため、追加された意図を超えて特定のタイプのデータを抽出するように既に設定されています。例は、それが割り当てられている意図からnumberを抽出するエンティティnumberです。数字は10またはtenような数字またはアルファベットのいずれかにすることができます。

すべての事前構築エンティティの完全なリストについては、[Pre-built Entities List] [1]を参照してください。

あらかじめ作成されたエンティティを追加するには、

  1. entitiesタブに移動します。
  2. [ Add pre-built entitiesAdd pre-built entitiesクリックし、モデルに追加するAdd pre-built entitiesを選択して[保存]をクリックします。

カスタムエンティティの追加カスタムエンティティは4種類あり、

  1. シンプル :単純なエンティティは特定のデータを抽出しますが、上記の例のnameは単純なエンティティです。
  2. 階層的 :親に依存する子エンティティ(サブタイプ)を持つ親エンティティ。
  3. コンポジット :2つ以上のエンティティからなる独立したグループ。
  4. リスト :与えられたリストからの単語だけを認識する実体。

単純なエンティティの定義

  1. entitiesタブに移動します。
  2. Add Custom Entitiesクリックします。
  3. エンティティに名前を付け、必要なエンティティタイプを確認して[ Save

Entity Typeを上記のいずれかのEntity Typeに変更するだけで、他のすべてのタイプのエンティティを同じ方法で追加できます。階層型および複合型のエンティティタイプでは、親エンティティ名とともに子ネームも与える必要があります。リスト・エンティティを定義することは、残りのものとは少し異なります。

リスト・エンティティの定義

上記の手順に従って、 List EntityとしてEntity Typeを入れてList Entityを作成すると、今定義したエンティティの詳細ページが表示されます。

  1. 標準的な値を定義する。これは、ユーザーが同義語のいずれかをタイプするときにボットが受け取る標準​​値です。
  2. シノニムを標準的な値に定義します。それらは、エンティティが遭遇すると、標準的な値に変換されます。

次の形式のJSONオブジェクトの配列を使用して、リスト全体をインポートすることもできます。

[
    {
        "canonicalForm": "Hey",
        "list": [
            "Howdy",
            "Hi"
         ]
    },
    .
    .
    .
]

エンティティとインテントの関連付け

Pre-builtエンティティとlistエンティティには、すべての入力から抽出できる値のセットがすでに定義されていますが、 SimpleHierarchicalComposite発話を訓練して値を取得する必要があります。

これは、

  1. [ intents ]タブに移動し、エンティティを追加するintentsを選択します。
  2. あなたが抽出したいダミーの値を持つ発話を追加してください。言って、 My name is John Doeを発言として追加できます。
  3. エンティティが抽出する単語にマウスをクリックしてドラッグします。上記の例では、 john doeを強調表示する必要があります。
  4. プロジェクトで使用できるすべてのエンティティのリストがドロップダウンで表示されます。適切なものを選択してください。 Nameは上記の例で選択されたエンティティです。
  5. 毎回異なるダミー値を持つ発話を追加し、考えられるすべての可能な構造を追加します。
  6. LUISモデルをトレーニングして公開します。


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow