Использует ли Microsoft QnA производитель LUIS?

Я планирую использовать QnA Maker, но использует ли он LUIS в фоновом режиме? Если вопросы задаются иначе, чем тот, который был подготовлен для QnA, он ответит?

2 ответа

Решение

он использует LUIS в фоновом режиме?

Нет, но вы можете объединить поиск, QnA Maker и / или LUIS.

Согласно документу, предложены следующие три способа реализации QnA вместе с LUIS.

  1. Вызовите одновременно QnA Maker и LUIS и ответьте пользователю, используя информацию из первого сообщения, которое возвращает оценку определенного порогового значения.

  2. Сначала вызовите LUIS, и если ни одно намерение не соответствует определенному пороговому значению, т. Е. Срабатывает намерение "Нет", то позвоните в QnA Maker. В качестве альтернативы, создайте намерение LUIS для QnA Maker, добавив в свою модель LUIS примеры вопросов QnA, которые отображаются на "QnAIntent".

  3. Сначала позвоните в QnA Maker, и если ни один ответ не соответствует определенному пороговому значению, то позвоните в LUIS.

Здесь я публикую пример кода только для третьего подхода, написанного на C#.

В MessagesController сначала позвоните в QnA Maker:

if (activity.Type == ActivityTypes.Message)
{
    await Conversation.SendAsync(activity, () => new Dialogs.MyQnADialog());
}

В MyQnADialogПосмотрите, есть ли соответствующий ответ, если нет, позвоните в LUIS:

[QnAMakerAttribute("QnASubscriptionKey", "QnAKnowledgebaseId", "No Answer in Knowledgebase, seraching in Luis...", 0.5)]
[Serializable]
public class MyQnADialog : QnAMakerDialog
{

    protected override async Task DefaultWaitNextMessageAsync(IDialogContext context, IMessageActivity message, QnAMakerResults result)
    {
        if (result.Answers.Count == 0)
        {
            await context.Forward(new MyLuisDialog(), this.ResumeAfterNewOrderDialog, message, CancellationToken.None);
        }
        context.Wait(this.MessageReceivedAsync);
        //return base.DefaultWaitNextMessageAsync(context, message, result);
    }
    private async Task ResumeAfterNewOrderDialog(IDialogContext context, IAwaitable<object> result)
    {
        var resultfromnewdialog = await result;
        context.Wait(this.MessageReceivedAsync);
    }

}

QnA не использует LUIS или распознавание намерений, скорее, он использует n-граммы, чтобы обнаружить сходство с документацией, используемой для заявления.

Начиная с MS Build 2018, вы можете использовать диспетчерское приложение LUIS. Он позволяет объединить несколько приложений LUIS и базы знаний QnA в одно приложение диспетчеризации. Это означает, что отправка пользовательского ввода как в LUIS, так и в QnA, или в определенном порядке, в зависимости от показателя доверия, должна быть в прошлом.

Первый звонок, который вы делаете, направлен на приложение отправки LUIS. В результате вы узнаете, нужно ли вам обращаться к детскому приложению luis или, скорее, к базе знаний QnA. Это может быть сделано, потому что высказывания в диспетчерском приложении LUIS заполнены высказываниями из базы знаний QnA. Вы можете добавить несколько приложений LUIS и / или базы знаний QnA к этой рассылке.

Я предлагаю изучить диспетчерский инструмент Bot Builder (CLI).

Другие вопросы по тегам