Программирование в Логике. Чанышев О.Г. - 20 стр.

UptoLike

Составители: 

39
Слово = идет Часть_речи = глагол
Элемент сильный не определен
Слово = дождь Часть_речи = существительное
Знак препинания = . Наименование = точка
Для поиска подстрок и отдельных символов используются
предикаты
searchstring(SourceStr,SearchStr,Position) и
seachchar(SourceString,Char,FoundPos)
соответственно. Они возвращают позиции начала подстроки и
символа.
Для выбора подстроки используется предикат
sub-
string(STRING,Pos,Len,SubStr),
для выбора символапредикат
subchar(String,Position,RetChar).
Длина строки определяется предикатом
str_len.
40
4. Простенькая экспертная система
Задача этого раздела заключается в том, чтобы проиллюст-
рировать использование Пролога для создания игрушечной экс-
пертной системы (ЭС).
Игрушечная ЭС «Кто чем увлекается
Мы хотим создать систему, которая отвечала бы на вопросы,
сформулированные на русском языке, на тему увлечений (hobby)
действующих лиц.
Начнем с простейшего варианта.
В простейшем варианте нам следует создать элементарную
базу фактов типа увлечение (Кто,Что). Все вербальные варианты
запросов система проинтерпретирует так:
1) если в тексте вопроса присутствует значение "Кто" (Пет-
ров, Сидоров, ...), следует выдать все значения "Что";
2) если в тексте вопроса присутствует значение "Что", сле-
дует выдать все значения "Кто";
3) если в тексте запроса присутствуют "Что" и "Кто", то сис-
тема интерпретирует запрос, как "Увлекается ли Кто Что?".
Ответ: "Да" или "Нет" в зависимости от содержания элемен-
тарной базы знаний
.
В таком простейшем варианте ЭС (с единственным видом
отношения между субъектом и объектом) можно не утруждать
пользователя формулированием запроса в полном виде, играя в
понимание, а предоставить ему возможность выбрать тип запроса
и заполнить соответствующие поля.
Алгоритм обработки запросов очень прост. В самом слож-
ном случае, когда их типы заранее
не определены (через меню вы-
бора типа), каждое слово запроса проверяется на принадлежность
типам "Кто" или "Что", и, в зависимости от результата, формули-
руется ответ. "Закодируем" алгоритм обработки строки-запроса
Запрос, полагая, что база знаний содержится в файле
"hobbyNew.dbs".
Программа завершает работу, если в ответ на ее вопрос
write("Есть вопросы? (Д
|Н|д|н)") пользователь ответит 'Н' или 'н'.
     Слово = идет Часть_речи = глагол                                            4. Простенькая экспертная система
     Элемент сильный не определен
     Слово = дождь Часть_речи = существительное                           Задача этого раздела заключается в том, чтобы проиллюст-
     Знак препинания = . Наименование = точка                        рировать использование Пролога для создания игрушечной экс-
                                                                     пертной системы (ЭС).
       Для поиска подстрок и отдельных символов используются
предикаты                                                                        Игрушечная ЭС «Кто чем увлекается?»
             searchstring(SourceStr,SearchStr,Position) и                  Мы хотим создать систему, которая отвечала бы на вопросы,
               seachchar(SourceString,Char,FoundPos)                 сформулированные на русском языке, на тему увлечений (hobby)
соответственно. Они возвращают позиции начала подстроки и            действующих лиц.
символа.                                                                   Начнем с простейшего варианта.
       Для выбора подстроки используется предикат sub-                     В простейшем варианте нам следует создать элементарную
string(STRING,Pos,Len,SubStr),                                       базу фактов типа увлечение (Кто,Что). Все вербальные варианты
       для        выбора          символа         –       предикат   запросов система проинтерпретирует так:
subchar(String,Position,RetChar).                                          1) если в тексте вопроса присутствует значение "Кто" (Пет-
       Длина строки определяется предикатом str_len.                 ров, Сидоров, ...), следует выдать все значения "Что";
                                                                           2) если в тексте вопроса присутствует значение "Что", сле-
                                                                     дует выдать все значения "Кто";
                                                                           3) если в тексте запроса присутствуют "Что" и "Кто", то сис-
                                                                     тема интерпретирует запрос, как "Увлекается ли Кто Что?".
                                                                           Ответ: "Да" или "Нет" в зависимости от содержания элемен-
                                                                     тарной базы знаний.
                                                                           В таком простейшем варианте ЭС (с единственным видом
                                                                     отношения между субъектом и объектом) можно не утруждать
                                                                     пользователя формулированием запроса в полном виде, играя в
                                                                     понимание, а предоставить ему возможность выбрать тип запроса
                                                                     и заполнить соответствующие поля.
                                                                           Алгоритм обработки запросов очень прост. В самом слож-
                                                                     ном случае, когда их типы заранее не определены (через меню вы-
                                                                     бора типа), каждое слово запроса проверяется на принадлежность
                                                                     типам "Кто" или "Что", и, в зависимости от результата, формули-
                                                                     руется ответ. "Закодируем" алгоритм обработки строки-запроса
                                                                     Запрос, полагая, что база знаний содержится в файле
                                                                     "hobbyNew.dbs".
                                                                           Программа завершает работу, если в ответ на ее вопрос
                                                                     write("Есть вопросы? (Д|Н|д|н)") пользователь ответит 'Н' или 'н'.


                               39                                                                   40