Министерство образования Российской Федерации
Новосибирский Государственный Технический Университет
Кафедра программных систем и баз данных
Лабораторная работа №5
по дисциплине «Искусственный интеллект»
Факультет: ПМИ
Группа: ПМ-13
Студент: Глухова М.А.
Преподаватель: Пономаренко В.М.
Ванюкевич О.Н.
Новосибирск
2005
Цель работы:
Изучение приемов семантического анализа предложений естественного языка посредством падежной грамматики
Задание:
Ход выполнения:
<предложение>:=[<время>][<место>]<агент><действие><итог>
<агент> := <именное словосочетание> | <местоимение>|<собственное существительнок>
<действие>:= <глагольная группа> |<глагол> ;
<глагольная группа>:= [<наречие>] <глагол> ;
<объект> :=[<локутивный предлог>]<существительное>;
<место> := [<локутивный предлог>]<существительное>;
<именное словосочетание> := <прилагательное> <существительное> | <существительное>;
<время>:=<наречие>
<итог>:=[<локутивный предлог>]<существительное>
<прилагательное>:= бедный | счастливый
<местоимение> := он | она ;
<глагол> := попал;
<собственной существительное> := Ленин
<существительное> := деньги | таверне | домой;
<наречие> := вчера | случайно;
<локутивный предлог> := в | на;
Предметная область для этой грамматики задана следующим фактом:
Вчера в таверне Ленин случайно попал на деньги.
Семантическая сеть
Действие= «случайно попал»
кто (объект)
когда (время) агент куда (итог)
«Вчера» «Ленин»
«на деньги» где (место)
«в таверне»
Текст программы:
DOMAINS
list=string*
PREDICATES
sentence(list,list)
agent(list,list) %агент
action(list,list) %действие
noun_grup(list,list) %именное словосочетание
verb_grup(list,list) %глагольная группа
ttime(list,list) %время действия
mesto(list,list) %место
object(list,list) %итог
adjective(list,list) %прилагательное
name(list,list) %собственное существительное
verb(list,list) %глагол
noun(list,list) %существительное
pronoun(list,list) %местоимение
loc_predlog(list,list)%локутивный предлог: в,на
narechie(list,list) %наречие
CLAUSES
sentence(S,S0):-ttime(S,S1),mesto(S1,S2),agent(S2,S3),action(S3,S4),object(S4,S0).
sentence(S,S0):-ttime(S,S1),agent(S1,S2),action(S2,S3),object(S3,S0).
sentence(S,S0):-mesto(S,S1),agent(S1,S2),action(S2,S3),object(S3,S0).
sentence(S,S0):-agent(S,S1),action(S1,S2),object(S2,S0).
agent([X|S0],S0):-pronoun([X|S0],S0).
agent([X|S0],S0):-name([X|S0],S0).
agent(S,S0):-noun_grup(S,S0).
action([X|S0],S0):-verb([X|S0],S0).
action(S,S0):-verb_grup(S,S0).
object(S,S0):-noun_grup(S,S0).
object([X|S0],S0):-noun([X|S0],S0).
mesto(S,S0):-noun_grup(S,S0).
verb_grup([X,Y|S0],S0):-narechie([X|S0],S0),verb([Y|S0],S0).
noun_grup([X,Y|S0],S0):-adjective([X|S0],S0),noun([Y|S0],S0).
noun_grup([X,Y|S0],S0):-loc_predlog([X|S0],S0),noun([Y|S0],S0).
noun_grup([X|S0],S0):-noun([X|S0],S0).
name(["Lenin"|S0],S0).
verb(["popal"|S0],S0).
noun(["dengi"|S0],S0).
noun(["taverne"|S0],S0).
noun(["domoi"|S0],S0).
pronoun(["on"|S0],S0).
ttime(["vchera"|S0],S0).
loc_predlog(["v"|S0],S0).
loc_predlog(["na"|S0],S0).
adjective(["bednii"|S0],S0).
adjective(["schastlivii"|S0],S0).
narechie(["sluchaino"|S0],S0).
narechie(["vchera"|S0],S0).
Тест1: ответ на вопрос: «Где Ленин попал на деньги»
Goal: sentence(["vchera","v",X, "Lenin","popal","na","dengi"],[])
X=dengi
X=taverne
X=domoi
3 Solutions
Тест2: ответ на вопрос: «Когда Ленин попал на деньги»
Goal: sentence([X,"v","taverne","Lenin","popal","na","dengi"],[])
X=vchera
1 Solutions
Тест3: ответ на вопрос: «Кто попал на деньги»
Goal: sentence([X,“popal”,”na”,”dengi”],[])
X=on
X=Lenin
X=dengi
X=taverne
X=domoi
5 Solutions
Тест4: правильное ли предложение
Sentence([“vchera”, “v”, “taverne”, “Lenin”, “sluchaino”, “popal”, “na”, “dengi”],[])
yes
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.