Отвечая на несколько совпадений в Chatscript

В настоящее время я пытаюсь изучить Chatscript, но документация кажется плохой. Моя текущая проблема заключается в том, как реагировать на совпадение с несколькими утверждениями для ввода. Так что, если я скажу "Привет. Расскажи мне о себе", и у меня совпадут слова "Привет" и "О себе", это ответит на первый матч, а не на последний. Я почти уверен, что мне нужно изменить скрипт управления, чтобы исправить это, но я не уверен, какие команды использовать. Может быть, что-то, что хранит все совпадения в последнем входе и может выбрать конкретное?

1 ответ

Вы можете создать a u: response, который использует ^next & Уточнить () для перемещения по предложениям, начинающимся с ~ приветствия. Это псевдокод:

u: ( ~greeting ) 

   ^refine()

 a: ( %more ) 

    ^next(input) 
    ^refine()

    b: ( you be ? )

       I'm good!

    b: ( %lenght==0 ) 

       Hi!

( Руководство по системным функциям ChatScript)

^ следующий (какой ярлык) - учитывая что из GAMBIT или RESPONDER или REJOINDER или RULE и метки или тега правила, найдите следующее правило того что. Сбой, если ничего не найдено. REJOINDER потерпит неудачу, если достигнет следующего правила верхнего уровня. Если метка "~", она будет использовать ответ последнего вызова в качестве отправной точки, что позволит вам последовательно следовать правилам. Также есть ^next(FACT @xxx) - см. Руководство по фактам. Для ^ next (входной) система прочитает следующее предложение и подготовит систему к нему. Это означает, что все шаблоны и код, выполняемый после этого, будут в контексте следующего входного предложения. Это предложение теперь израсходовано, и его не будет видно по окончании текущего пересмотренного предложения.

Другие вопросы по тегам