Как мне заставить моего AIML-бота ответить только один раз?

#bots #chatbot #aiml

#боты #чат-бот #aiml

Вопрос:

Я новичок в программировании, программирующий чат-бота для развлекательных целей. В настоящее время я использую PandoraBots в качестве хоста для него.

Итак, как вы, наверное, знаете, если вы вводите в чат-боте несколько предложений, по умолчанию бот отвечает тем же количеством сообщений, что и предложений. Это делает бота менее «реальным», чем я хочу.

Например, допустим, я хотел поговорить о боли в животе, которая у меня была.

ПОЛЬЗОВАТЕЛЬ: Я не очень хорошо себя чувствую. Должно быть, я что-то съел. Тьфу.

Реальный человек ответит на общую идею фраз и, скорее всего, ответит одним сообщением.

ПОЛЬЗОВАТЕЛЬ: Я не очень хорошо себя чувствую. Должно быть, я что-то съел. Тьфу.

ДРУГ: Лол, тебе не следовало есть эти попперсы с халапеньо

ПОЛЬЗОВАТЕЛЬ: О, заткнись.

Но бот будет отвечать сообщением на каждую обнаруженную им полную остановку.

ПОЛЬЗОВАТЕЛЬ: Я не очень хорошо себя чувствую. Должно быть, я что-то съел. Тьфу.

БОТ: болеть не весело. Соблюдайте постельный режим!

БОТ: Я люблю есть печенье!

БОТ: Ну тогда.

ПОЛЬЗОВАТЕЛЬ: Теперь мое погружение полностью потеряно. Большое спасибо, бот.

БОТ: Если вы заблудились, достаньте карту!

БОТ: Не за что, мой друг.

Из-за некоторых программ, которые у меня уже есть в моем боте, я бы хотел, чтобы он случайным образом отвечал только на первое или последнее предложение, для более естественного звучания разговора, например:

ПОЛЬЗОВАТЕЛЬ: Я не очень хорошо себя чувствую. Должно быть, я что-то съел. Тьфу.

БОТ: болеть не весело. Соблюдайте постельный режим!

ПОЛЬЗОВАТЕЛЬ: Вау, какое правдоподобное и веселое взаимодействие! Хороший бот!

БОТ: Я рад, что вы считаете, что у меня все хорошо.

Возможно ли что-то подобное с помощью Pandorabots? И если да … какой код для этого? Спасибо!

Ответ №1:

Это сделано специально, так как чат-бот не будет автоматически знать, на какой части пользовательского ввода он должен сосредоточиться. Например, если на вашем вводе бот просто обработал «ТЬФУ» и проигнорировал остальную часть предложения, это не имело бы особого смысла.

Единственный способ для бота обработать ввод как единое целое — удалить разделители предложений из файла свойств вашего бота.