5

У меня возникли проблемы с попыткой понять, как работает сопоставление образцов AIML. В чем разница между _ и *? И как я должен использовать их, чтобы получить лучший матч?Соответствие шаблону AIML - howto?

У меня есть только this document, но у него нет хороших примеров.

ответ

4

A * будет соответствовать ничего, если образец слова или нескольких слов, не совпадают

A _ будет соответствовать ничего, даже если модель слова или несколько слов может соответствовать

<pattern>BYE _</pattern> не имеет смысла, так как <pattern>BYE *</pattern> соответствует той же модели, но <pattern>BYE _</pattern> будет тень <pattern>BYE * SEE YOU</pattern> тогда BYE * не будет.

Использовать _ тщательно, например _ будет соответствовать чему угодно, и ваш бот будет давать одинаковый ответ каждый раз.

<pattern>_ A COUPLE OF WORDS *</pattern> и <pattern>_ A COUPLE OF WORDS</pattern> - это правильный способ использования _, если вы хотите каждый раз ловить ПАРЫ СЛОВА внутри или в конце предложения.

0

_ и * оба являются подстановочными знаками, разница в том, где они должны использоваться при сопоставлении с образцом.

_ should be used before the word or phrase you're matching on 
* should be used after the word or phrase you're matching on. 

См: AIML spec

Чтобы понять это лучше, это может быть стоит посмотреть на примеры в существующих AIML ботов.

См: Downloads, это один Saluations.aiml есть примеры

+0

Таким образом, это означает, что «HELLO _» является недопустимым выражением? Правильно? – 2009-12-03 10:33:31

+0

Это то, что я нашел в http://www.alicebot.org/aiml/aaa/Salutations.aiml В чем существенное различие между этими двумя шаблонами? * BYE _ BYE Btw, спасибо за ответ :) – 2009-12-03 10:41:10

+0

я бы сказал, на основе спецификации, что ПРИВЕТ _ недействителен да. И это был очень плохой пример с моей стороны. Я не думаю, что * BYE будет оценен. * BYE на мой взгляд недействителен и должен быть BYE *. – Bravax

Смежные вопросы