Синтаксис AIML для обнаружения ключевого слова в любом месте строки? - PullRequest
0 голосов
/ 26 марта 2020

Пусть ключевое слово будет "курс". Я пробовал * COURSE *, _ COURSE * и различные другие варианты этого, но не получил желаемого результата (моя строка может быть чем угодно, но определенно где-то есть слово course).

1 Ответ

0 голосов
/ 27 марта 2020

Ответ на этот вопрос зависит от того, используете ли вы AIML v1 или AIML v2.

Для AIML v1 вам потребуется настроить 4 категории. Один для определения «курса» сам по себе, один для любого ввода, начинающегося с «курса», один для любого ввода, заканчивающегося «курсом», и другой для обработки ввода с «курсом» внутри:

<category>
    <pattern>COURSE</pattern>
    <template>Your input contained the word "course".</template>
</category>

<category>
    <pattern>COURSE *</pattern>
    <template><srai>course</srai></template>
</category>

<category>
    <pattern>_ COURSE</pattern>
    <template><srai>course</srai></template>
</category>

<category>
    <pattern>_ COURSE *</pattern>
    <template><srai>course</srai></template>
</category>

Причина, по которой вам нужны 4 категории, заключается в том, что подстановочные знаки * и _ соответствуют одному или нескольким словам. Однако, если вы используете AIML v2 (что и должно быть!), Вы можете сделать это, используя # wildcard, который соответствует нулю или более словам:

<category>
    <pattern># COURSE #</pattern>
    <template>Your input contained the word "course".</template>
</category>
...