Ответ на этот вопрос зависит от того, используете ли вы 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>