Изучение приемов семантического анализа предложений естественного языка посредством падежной грамматики

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

4 страницы (Word-файл)

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

Министерство образования Российской Федерации

Новосибирский Государственный Технический Университет

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

Лабораторная работа №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

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