Frank im Wald
Frank im Wald

Reputation: 918

How to correctly use LUIS ML-features?

I just stumbled over the new "ML-features" in LUIS and I am not sure if I really understand how to use them correctly. The documentation seems very abstract and vague to me:

https://learn.microsoft.com/de-de/azure/cognitive-services/luis/luis-concept-feature

Besides a good general explanation a solution for the following example would be very welcome:

Example

Intent: OpenABox

Sample utterances: "open the green box", "open the azure box".

Entity: ColorEntity (no prebuilt entity).

The color should understand "green", "blue", "azure" and "olive", where "olive" should be regarded as synonym to "green" and "azure" to "blue".

Solution Proposal

I assume you would have to

Is it correct, that there is no way to confirm the correct resolution of "olive" to its canonical form "green" using the test panel? So I have to use the API to test this?

The Model

This model has been created as described above. It seems to do its job. But is this really the optimal way to do it? There seems to be a lot of redundancy in there.

{
  "luis_schema_version": "7.0.0",
  "intents": [
    {
      "name": "None",
      "features": []
    },
    {
      "name": "OpenABox",
      "features": [
        {
          "modelName": "ColorMLEntity",
          "isRequired": false
        }
      ]
    }
  ],
  "entities": [
    {
      "name": "ColorMLEntity",
      "children": [],
      "roles": [],
      "features": [
        {
          "featureName": "ColorPhraseList",
          "isRequired": false
        },
        {
          "modelName": "ColorListEntity",
          "isRequired": true
        }
      ]
    }
  ],
  "hierarchicals": [],
  "composites": [],
  "closedLists": [
    {
      "name": "ColorListEntity",
      "subLists": [
        {
          "canonicalForm": "green",
          "list": [
            "olive"
          ]
        },
        {
          "canonicalForm": "blue",
          "list": [
            "azure"
          ]
        }
      ],
      "roles": []
    }
  ],
  "prebuiltEntities": [],
  "utterances": [
    {
      "text": "open the azure box",
      "intent": "OpenABox",
      "entities": [
        {
          "entity": "ColorMLEntity",
          "startPos": 9,
          "endPos": 13,
          "children": []
        }
      ]
    },
    {
      "text": "open the green box",
      "intent": "OpenABox",
      "entities": [
        {
          "entity": "ColorMLEntity",
          "startPos": 9,
          "endPos": 13,
          "children": []
        }
      ]
    }
  ],
  "versionId": "0.1",
  "name": "ColorTest",
  "desc": "",
  "culture": "en-us",
  "tokenizerVersion": "1.0.0",
  "patternAnyEntities": [],
  "regex_entities": [],
  "phraselists": [
    {
      "name": "ColorPhraseList",
      "mode": true,
      "words": "green,blue,azure,olive",
      "activated": true,
      "enabledForAllModels": false
    }
  ],
  "regex_features": [],
  "patterns": [],
  "settings": []
}

Upvotes: 0

Views: 421

Answers (1)

Maged Refaat
Maged Refaat

Reputation: 81

Features are supposed to be signals relevant to an intent, or an entity. So for this example,

  • Create an ML entity "ColorEntity",
  • Label the utterances
  • Add ColorEntity as a feature for the intent
  • Then you can add a feature to ColorEntity, either a list entity or phrase list, no need for both.

Upvotes: 1

Related Questions