Диспетчер CLI не передает сущности из приложения Luis - PullRequest
0 голосов
/ 28 февраля 2019

При создании модели Dispatch с использованием CLI она не передает сущности из приложения Luis в качестве ссылки.Это резко влияет на точность приложения отправки.

Например, для высказывания «Мой [iPhone] не работает» iPhone присоединяется к списку объектов с именем CellPhoneType.В списке три вещи: iPhone, Samsung, Smartphone.

В эмуляторе бота, используя Dispatch, если я пишу «мой iPhone не работает», модель отправки передает его Luis, как и должно быть.Однако, если я напишу «мой смартфон не работает», диспетчер отправит его QnA Maker.

Я проверил модель, и объекты не передаются в качестве ссылки.Я также тестировал с простыми сущностями, они не работают так же хорошо.

У меня установлена ​​самая последняя версия CLI.

Это нормально, это ошибка?Есть ли способ исправить это?

1 Ответ

0 голосов
/ 06 марта 2019

Итак, пара вещей, о которых вы здесь расскажете, о том, как вы создали свою модель LUIS и что ожидать от отправки. Перейдите к 2.), если вы пользователь, который читает этот пост и у которого уже есть сущности, прекрасно работающие в дочерних моделях LUIS. @AlexandreViegas, прочитайте пункт 1.), чтобы помочь правильно построить модель LUIS для обнаруженияумышленно в отправке.


1.Используйте Simple Entity + Phrase List , чтобы воспользоваться преимуществами машинного обучения LUIS, а не List Entity

В настоящий момент кажется, что вы выбрали список сущностей *.1013 * это не лучший способ пойти сюда, и не так, как он предназначен для использования.Вместо этого списочные объекты используются для терминов, которые могут иметь несколько способов обращения к одной и той же вещи.

Примеры случаев, когда вы хотите использовать объект списка

Например, Калифорния, Кали, Калифорния и Золотой штат - все термины, которые относятся к одной и той же вещи (штат).Вы можете создать список «Штаты», включающий все 50 штатов США и их псевдонимы.Теперь, поскольку это закрытый, явный список, при использовании объекта списка нет машинного обучения - LUIS будет обнаруживать объект списка «Состояния» только при наличии точного совпадения текста.

Еще один пример того, когда вы хотите использовать списковые объекты, - например, «Отделы» для школы.Вы можете использовать слова «химия», «CHEM142», «хим» и т. Д., Относящиеся к этому конкретному отделу, и делать это с остальными отделами в школе.

Почему вы хотите использовать простую сущность и добавить список фраз

Вы можете обратиться к этому другому StackOverflow ответу Я написал относительно как создать простую сущность и повысить сигнал сущности, используя список фраз.

Чтобы не полностью дублировать ответ, приведенный в ссылке выше, по сути, вы хотите использовать простую сущность, чтобы LUIS мог правильно предсказать термины как сущность CellPhoneType, даже если вы явно не включили ее втвоя модель

Например, вы можете иметь намерение Phone с высказываниями, помечающими различные слова как CellPhoneIntent сущность.enter image description here

Когда я захожу на панель «Тест», я набираю «подсолнух» и «лунный камень», как составленные мобильные телефоны (возможно, какая-то телефонная компания в будущем создаст телефоны с этимиимена в качестве моделей):

enter image description here

Вы можете видеть, как LUIS правильно предсказывает Phone намерение и правильно извлекает sunflower и moonstone как CellPhoneType сущностей.

Однако, если я введу названия мобильных телефонов, которых нет на английском языке - например, Blackberry "Z3" или T-Mobile "G2X", LUIS не сможет обнаружить это с помощью нашегомодель как есть прямо сейчас.(См. 2 самых последних высказывания).enter image description here

Выше вы можете видеть высказывания "i'd like to order a z3" и "my g2x is broken", которые не могут правильно предсказывать как Phone намерение, так же как и z3 или g2xбыть обнаруженным как CellPhoneType сущность.Именно здесь приходят списки фраз . Как указано в документах , списки фраз хороши для усиления сигнала о том, как может выглядеть тип сотового телефона, а также для добавления запатентованные или иностранные слова для вашей модели LUIS, такие как "готовые" слова многих моделей сотовых телефонов.Опять же, обратитесь к ответу StackOverflow, на который я ссылаюсь, если вам нужно руководство о том, как создать список фраз.

После добавления разных имен моделей сотовых телефонов в список фраз enter image description here enter image description here


2.Запросить конечную точку модели LUIS, которая была создана диспетчеризацией напрямую

Уточнение:

  • При добавлении дочерней модели LUIS в диспетчер дажеесли в этой дочерней модели LUIS есть сущности, то не будет отображаться в модели родительской модели LUIS, созданной диспетчеризацией.
  • исключение из приведенного выше пункта будетесли вы пометили сущность в шаблоне

  • Почему объекты не должны быть помечены в родительской модели LUIS, потому что, когда вы вызываете конечную точку родительской модели LUIS, она выполняет своего рода общий вызов изнутри, поэтомунеобходимо дважды пропинговать LUIS.

  • Вы видите объекты, помеченные из дочерней модели LUIS, в свойстве connectedServiceResult

Как извлечь сущности из дочерней модели LUIS с помощью родительского приложения LUIS

  1. Обязательно опубликуйте оба дочернее приложение LUIS и родительское приложение диспетчеризации.

  2. Перейдя в созданное вами родительское приложение LUIS диспетчеризации, перейдите к Управление> Ключами и конечными точками> нажмите «Конечная точка» , чтобы открыть вкладку браузера, где вы можете запросить родительское приложение в URL после q=

  3. , введите свои высказывания в URL, после q=, чтобы увидеть объекты инамерения, извлеченные из детской модели LUIS под connectedServiceResult

https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx?verbose=true&timezoneOffset=-360&subscription-key=b7xxxxxxxxxxxxxxxxxxxxxxxxxxxx67&q=my%20iphone%20is%20broken

{
  "query": "my iphone is broken",
  "topScoringIntent": {
    "intent": "l_Reminders",
    "score": 0.99594605
  },
  "intents": [
    {
      "intent": "l_Reminders",
      "score": 0.99594605
    },
    {
      "intent": "None",
      "score": 0.002990469
    }
  ],
  "entities": [],
  "connectedServiceResult": {
    "query": "my iphone is broken",
    "topScoringIntent": {
      "intent": "Phone",
      "score": 0.9658808
    },
    "intents": [
      {
        "intent": "Phone",
        "score": 0.9658808
      },
      {
        "intent": "Calendar.Add",
        "score": 0.0142210266
      },
      {
        "intent": "Calendar.Find",
        "score": 0.0112086516
      },
      {
        "intent": "None",
        "score": 0.009813501
      },
      {
        "intent": "Email",
        "score": 0.0025855056
      }
    ],
    "entities": [
      {
        "entity": "iphone",
        "type": "CellPhoneType",
        "startIndex": 3,
        "endIndex": 8,
        "score": 0.998970151
      }
    ]
  }
}

Выше видно, что родительское приложение LUIS, созданное из диспетчеризации, правильно идентифицирует iphone из высказывания my iphone is broken как CellphoneType сущность.

Примечание. Результаты дочерней модели LUIS не отображаются на панели «Тест» родительской отправки, поскольку пользовательский интерфейс не отображает connectedServiceResult

...