PyAiml:: Условный тег AIML не анализируется с помощью Python

Ниже приведен пример файла AIML:

   <?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8">
<category>
<pattern>DO YOU FIND ME ATTRACTIVE</pattern>
<template>
  <condition name="gender">
    <li value="male">I find you very handsome.</li>
    <li value="female">I find you very pretty.</li>
    <li>I find you very attractive.</li>
  </condition>
</template>
</category>
</aiml>

Ниже приведен простой код Python:

            category = "DO YOU FIND ME ATTRACTIVE"
            bot.setPredicate("gender", "male") ## Setting the Predicate
            reply = bot.respond(category)

Спросите:

Когда пользователь предоставляет значение для пола, я хочу, чтобы мой код на Python установил значение пола как "мужской", а затем дал соответствующий ответ.

Проблема:

Он не может устанавливать предикаты и из их ответов с соответствующими комментариями. Я получаю ответ "Я считаю тебя очень привлекательным" вместо "Я считаю тебя очень красивым". В общем, если я использую set Predicate без тега условия, это работает. Итак, вы можете сообщить мне, если проблема в синтаксическом анализе тега условия или самого кода.

1 ответ

Вы можете изменить свой файл AIML, как показано ниже:-

<?xml version="1.0" encoding="UTF-8"?>
<aiml version="1.0">
<category>
    <pattern>DO YOU FIND ME * ATTRACTIVE</pattern>
    <template>
        What is your gender ?
        <think><set name="topic">GENDER</set></think>
        <br/>In case you dont mind?
    </template>
</category>
<topic name="GENDER">
    <category>
        <pattern>MALE</pattern>
        <that>* CASE YOU *</that>
        <template>I find you very handsome.!</template>
    </category>
    <category>
        <pattern>FEMALE</pattern>
        <that>* CASE YOU *</that>
        <template>I find you very pretty!</template>
    </category>
</topic>
</aiml> 
Другие вопросы по тегам