Как установить порог доверительной вероятности до 50% у лазурного бота (веб-чата)? - PullRequest
0 голосов
/ 20 сентября 2019

Я работаю с ботом QnAmker с лазурным ботом. Я не написал ни одной строчки, я просто использую его онлайн.Теперь я хочу установить порог достоверности 50%.Я редактирую код бота с помощью онлайн-редактора и внедряю его с помощью консоли KUDU. Где я могу редактировать или кодировать порог доверительной вероятности? Моя бот-платформа C #.

Ответы [ 2 ]

2 голосов
/ 20 сентября 2019

Чтобы изменить пороговое значение на другое значение, установите пороговое значение в качестве свойства тела JSON GenerateAnswer API.Это означает, что вы устанавливаете его для каждого вызова GenerateAnswer.

Если вы используете ботов в Azure, вам нужно будет отредактировать файл BotServices.cs для учета метаданных QnAMaker, который возвращаетсяв вызове GenerateAnswer.В частности, вам нужно будет добавить следующее:

var qnaOptions = new QnAMakerOptions();
var metadata = new Microsoft.Bot.Builder.AI.QnA.Metadata();

metadata.Name = Constants.MetadataName.Intent;
metadata.Value = topIntent;

qnaOptions.StrictFilters = new Microsoft.Bot.Builder.AI.QnA.Metadata[] { metadata };
qnaOptions.Top = Constants.DefaultTop;
qnaOptions.ScoreThreshold = 0.5F;

Важными битами являются var metadata... и qnaOptions.ScoreThreshold = 0.5F;. Единственный пример, который показывает это в действии, это следующий пример на Botbuilder-Примеры репо: Поддержка ботов в QnA Maker .

ОДНАКО, две вещи, которые следует иметь в виду, если вы решите попрактиковаться с этим образцом: 1) он находится в экспериментальной ветви репозитория образцов, что означает, что нет никаких гарантий для идеальной функциональности.2) В этом примере показано несколько различных функций QnAMaker.Я предлагаю вам клонировать код и просмотреть его, прежде чем просто вставить его в свой код в Azure.

0 голосов
/ 20 сентября 2019

Я использую nodejs вместо C #, но реализация должна быть похожей.Я попробовал упомянутый метод, чтобы установить порог в вызове generateanswer, но это удастся только дать вам ответ по умолчанию, если порог не был достигнут, что-то вроде «Не найдено ответов на этот запрос».В большинстве случаев вам не нужен этот ответ для ваших пользователей, и я считаю, что проверка достоверности после дает более полезный ответ.

Я делаю проверкув реальном диалоге и настройке выходной активности оттуда.Опять же, это nodejs, но вы должны быть в состоянии сделать то же самое в C #.Вот как я это реализовал.

// Apply confidence filter
if (qnaResult[0].score > MINIMUM_SCORE) {
    outputActivity = MessageFactory.text(qnaAnswer);
}
else {
    // If low confidence, send to social talk
    var socialResult = await SocialTalkHelper.queryQnAService(query, oldState);
    if (socialResult[0].score > MINIMUM_SCORE) {
        outputActivity = MessageFactory.text(socialResult[0].answer);
    }
    else {
        // If low confidence for social talk, use default answer
        outputActivity = MessageFactory.text(defaultAnswer);
    }
}

Я на самом деле каскадировал это, чтобы использовать второй вызов QnA Maker в Enterprise Social Talk KB, если мой минимальный балл не достигнут.Я установил пользовательский ответ по умолчанию для использования, если этот вызов также не соответствует моему порогу.Обратите внимание, что MINUMUM_SCORE находится вне 100 , а не 1,0 (например, 50% -ная достоверность составляет 50 , а не 0,5).

Не уверен, какой образец вы используете.Мой ответ основан на «экспериментальной» версии, но в любом случае вы должны получать тот же объект обратно из QnA Maker, и вопрос только в том, как вы с ним справитесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...