Здравствуйте, сообщество переполнения стека, я обращаюсь к вам за помощью. Я пытаюсь что-то сделать в CLIPS, вроде парсера, и у меня возникли небольшие проблемы. Подводя итог, я пытаюсь сделать программу, которая принимает ввод пользователя, который является фразой, такой как «Я читаю книгу», и дает вывод, основанный на некоторых правилах, которые я определил, скажем, «Я прочитал» идентифицируется как Правило G1, а «книга» идентифицируется правилом G2 («Книга» может быть идентифицирована правилом G3, если нам потребуется обработать ввод «Книга, которую я прочитал»).
Вывод «Я прочитал» книга "должна быть" ДА G1 G2 ", потому что на основе пользовательского ввода и правил программа определила правила, используемые для определения того, что было написано на вводе, предоставленном пользователем. Надеюсь, я объяснил это довольно хорошо, это мой первый вопрос. До сих пор мне удалось создать правила, и я учел ситуации, когда строка могла быть помещена в начало ввода (см. Правило G3, упомянутое выше).
Возможно, это можно решить с помощью слов Explode $ и подстановочных знаков как $? но я действительно не знаю, с чего начать.
Это мой код, я знаю, что он не очень:
(defrule G1
=>
(assert (regula G1 "I read"))
)
(defrule G2
=>
(assert (regula G2 "I read."))
)
(defrule G3
=>
(assert (regula G3 "a book."))
)
(defrule G4
=>
(assert (regula G4 "A book"))
)
Я ценю всю помощь и все ответы.