AIML Parser PHP

Я пытаюсь разработать искусственного бота. Я обнаружил, что AIML - это то, что можно использовать для достижения этой цели. Я нашел эти моменты, касающиеся синтаксического анализа AIML, который выполняется программой-O.

1.) Все буквы во вводе преобразуются в ЗАГЛАВНЫЕ 2.) Все знаки препинания удаляются и заменяются пробелами 3.) лишние пробелы, включая табуляцию, удаляются.

Оттуда программа O выполняет поиск в базе данных, ища все возможные совпадения с вводом, включая подстановочные знаки. Затем возвращенные результаты «оцениваются» на предмет релевантности и выбирается «наилучшее соответствие». Затем программа O обрабатывает AIML на основе выбранного результата и возвращает готовый продукт пользователю.

Мне просто интересно, как определить оценку и найти соответствующий ответ, наиболее близкий к вводу пользователя.

Любая помощь или идеи будут оценены


person user3589042    schedule 26.12.2016    source источник
comment
Мне кажется, что вы просите не об интерпретаторе (т.е. PHP, Perl, C, Java), а скорее о самом языке. Просматривали ли вы alicebot.org, чтобы узнать, как должен работать сопоставитель шаблонов?   -  person A. Kootstra    schedule 11.01.2017
comment
Я еще не видел, чтобы проверить это сейчас, в основном я хочу разработать свой собственный интерпретатор AIML на PHP, который будет иметь возможность находить ближайший ответ на мой ввод, кроме того, у него будут некоторые предустановленные команды, из-за которых я использую этот индивидуальный подход   -  person user3589042    schedule 16.01.2017
comment
Стандарт AIML устанавливает особый способ обработки категорий AIML. Это гарантирует, что файлы AIML, загруженные в один интерпретатор, приведут к тому же опыту в другом. Отказ от этого будет означать, что ваш движок создаст несовместимость. Не проблема сама по себе, но о чем нужно знать.   -  person A. Kootstra    schedule 16.01.2017
comment
Спасибо, что упомянули об этом, просто чтобы подтвердить, что мой интерпретатор будет совместим с aiml. Я разработаю функцию импорта и экспорта, которая будет похожа на стандартную aiml, кроме того, я хочу выполнить несколько задач с ответом бота (своего рода предустановленные команды)   -  person user3589042    schedule 19.01.2017


Ответы (1)


@ user3589042 (довольно громоздкое имя, не правда ли?)

Я Дэйв Мортон, ведущий разработчик программы O. Мне жаль, что я пропустил это в то время, когда вы задали вопрос. Это привлекло мое внимание только сегодня.

Программа O оценивает потенциальные совпадения, извлеченные из базы данных, следующим образом:

  1. Это ответ из таблицы aiml_userdefined? да = 300 / нет = 0
  2. Категория для этого бота или родительская (если она есть)? это = 250 / родитель = 0
  3. Есть ли в шаблоне один или несколько подстановочных знаков подчеркивания (_)? да = 100 / нет = 0
  4. Есть ли в текущей категории тег <topic>? да (см. ниже) / нет = 0

    а. <topic> содержит один или несколько подстановочных знаков подчеркивания (_)? да = 80 / нет = 0

    б. <topic> прямо соответствует текущей теме? да = 50 / нет = 0

    c. Содержит ли <topic> подстановочный знак звездочки (*)? да = 10 / нет = 0

  5. Содержит ли текущая категория тег <that>? да (см. ниже) / нет = 0

    а. <that> содержит один или несколько подстановочных знаков подчеркивания (_)? да = 45 / нет = 0

    б. <that> прямо соответствует текущей теме? да = 15 / нет = 0

    c. Содержит ли <that> подстановочный знак звездочки (*)? да = 2 / нет = 0

  6. Совпадает ли <pattern> с вводом пользователя? да = 10 / нет = 0

  7. Содержит ли <pattern> один или несколько подстановочных знаков звездочки (*)? да = 1 / нет = 0

  8. <pattern> соответствует шаблону AIML по умолчанию из конфигурации? да = 5 / нет = 0

Затем сценарий складывает все пройденные тесты, перечисленные выше, а также добавляет точку для каждого слова в <pattern> категории, которое также соответствует слову во вводе пользователя. Категория AIML с наивысшим баллом считается «лучшим совпадением». В случае ничьей сценарий затем выберет либо «первую» категорию с наивысшим баллом, «последнюю» или случайную категорию, в зависимости от настроек конфигурации. эта выбранная категория затем возвращается другим функциям для анализа XML.

Надеюсь, это ответит на ваш вопрос.

person Dave Morton    schedule 27.06.2017