Системы искусственного интеллекта

Страницы работы

Содержание работы

Министерство Образования РФ

НГТУ

Кафедра программных систем и баз данных

Лабораторная работа №5

По дисциплине "Искусственный интеллект"

Факультет       ПМИ

Группа          ПМ-16

Студенты        Мамаева А.Ю.

Чусовкова А.В.

Преподаватели   Пономаренко В.М.

Ванюкевич О.Н.

Новосибирск 2005

Задание:

1)  Сформулировать задачу семантического анализа в контексте естественно-языкового интерфейса для интеллектуальных компьютерных программ;

2)  реализовать на Прологе падежную грамматику;

3)  выбрать некоторую предметную область, дать ее описание предложением или набором предложений. Расширить универсальную падежную грамматику с учетом семантики  предметной области;

4)  убедиться, что компьютер правильно понимает высказывания из данной предметной области;

5)  построить семантическую сеть выбранной предметной области в терминах падежных отношений;

6)  реализовать несколько запросов к базе знаний, представленной семантической сетью.

Анализ решения:

Опишем предметную область следующим предложением: “Студентка первого курса на зимних каникулах в недорогом магазине купила красивое платье со стипендии для студенческой вечеринки”.

Семантическая сеть предметной области в терминах падежных отношений имеет вид:

Контекстно-свободная грамматика для предложения-действия в модифицированной форме Бэкуса-Наура (распознающая):

<предложение>  := <агент> < действие> <объект> [<инструмент>] [<место>] [<время>] [<цель>];

<агент> := <местоимение> | <именное словосочетание> | <собственное существительное>;

<действие>:= <глагол> | <глагольная группа>;

<объект> := <местоимение> | <именное словосочетание> | <собственное существительное>;

<инструмент> := [<инструментальный предлог>]  <именное словосочетание>;

<время> := [<временной предлог>] <именное словосочетание>;

<место> := [<локутивный предлог>] <именное словосочетание>;

<цель> := [<целевой предлог>] <именное словосочетание>;

<именное словосочетание> := <существительное> | <прилагательное> <существительное>;

местоимение := он, она, оно;

инструментальный предлог:=cо| c помощью| посредством;

временной предлог:=перед | после | за тем | на;

локутивный предлог:=в|на|под|над|внутри|снаружи;

целевой предлог:=с целью | для;

<глагол>:=купила;

<существительное>:=студентка | платье | курс  | каникулы | магазин | стипендия | вечеринка;

<прилагательное>:=первый | зимний | недорогой | красивый | студенческий;

Текст программы:

domains

list=string*

% *************************************************************************

predicates

sentence(list,list)

agent(list,list)

effect(list,list)

object(list,list)

instrument(list,list)

position(list,list)

purpose(list,list)

whentime(list,list) 

named_combination(list,list) 

local_named_combination(list,list) 

time_named_combination(list,list) 

verb_named_combination(list,list)   

instrument_named_combination(list,list)     

verb(string).

instrumental_preposition(string)

purpose_preposition(string)

local_preposition(string) 

time_preposition(string) 

noun(string)

local_noun(string)

time_noun(string)

instrument_noun(string)

pronoun(string)

adjective(string)

qagent(string)

qeffect(string)

qpurpose(string)

qposition(string)

qtime(string)

qobject(string)

qinstrument(string)

qunification(string,list,list)

sublist(list,list)

prefix(list,list)

suffix(list,list)

otvet(string,list)

append (list,list,list)

fact(list)

print_list(list)

% *************************************************************************

goal

write ("\n   Cтудент решил краевую задачу с использованием Maple для \n"),

write ("бакалаврской работы в весеннем семестре в терминальном классе.  \n\n"),

Q=("Кто"),  S=["решил","краевую","задачу","с использованием","Maple"],

write (Q," "), print_list (S), write(" ?\n"),  otvet(Q,S), nl, readchar(_),  nl,

Q2=("Что сделал"),  S2=["студент","краевую","задачу"],

write (Q2," "), print_list (S2), write(" ?\n"),  otvet(Q2,S2), nl, readchar(_),  nl,

Q3=("Когда"),  S3=["студент","решил","краевую","задачу"],   write (Q3," "),  print_list (S3), write(" ?\n"),

otvet(Q3,S3), nl, readchar(_),  nl,

Q4=("Где"),  S4=["студент","решил","краевую","задачу"],

write (Q4," "),  print_list (S4), write(" ?\n"),   otvet(Q4,S4), nl, readchar(_),  nl,

Q5="Для чего",  S5=["студент","решил","краевую","задачу"],  write (Q5," "), print_list (S5), write(" ?\n"),

otvet(Q5,S5), nl, readchar(_),  nl, 

Q6=("Что"),  S6=["студент","решил","с использованием", "Maple"],

write (Q6," "), print_list (S6), write(" ?\n"),

otvet(Q6,S6), nl, readchar(_),  nl,

Q7=("С помощью чего"),  S7=["студент","решил","краевую", "задачу"],

write (Q7," "), print_list (S7), write(" ?\n"),  otvet(Q7,S7).

% *************************************************************************

clauses

% определение подсписка в списке

sublist(Sub,List):- prefix(Pre,List), suffix(Sub,Pre).

sublist(Sub,List):- suffix(Suf,List), prefix(Sub,Suf). 

% определение префикса списка

prefix([],X).

prefix([X|List],[X|List1]):-prefix(List,List1).

% определение суффикса списка

suffix(List,List).

suffix(X,[Y|List]):-suffix(X,List).

% конкатенация списков

append([],L,L).

Информация о работе