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

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

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

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

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

Кафедра ПС и БД

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

по курсу:

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

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

Группа: ПМ-15

Студенты:  Сорокин А.

Шилак Д.

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

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

Новосибирск

2005

Цель работы

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

Задание

  • Сформулировать задачу семантического анализа в контексте естественно-языкового интерфейса для интеллектуальных компьютерных программ;
  • реализовать на Прологе падежную грамматику;
  • выбрать некоторую предметную область, дать ее описание предложением или набором предложений. Расширить универсальную падежную грамматику с учетом семантики  предметной области;
  • убедиться, что компьютер правильно понимает высказывания из данной предметной области;
  • построить семантическую сеть выбранной предметной области в терминах падежных отношений;
  • реализовать несколько запросов к базе знаний, представленной семантической сетью.

Предметная область

Возьмем предметную область из лабораторной работы № 4.

Выделим следующие сущности:

  • обобщенные:

Студент, Бригада, Лабораторная работа, Год рождения студента, Пол студента;

  • индивидуальные:

ФИО студента, год рождения, номер, номер лабораторной работы.

Выделим следующие отношения:

  • базовые:

является видом, является представителем;

  • специальные:

имеет год рождения, представитель бригады, защищённая  бригадой лабораторная работа.

Для описания предметной области были введены следующие предложения:

  • Бригада № X защитила лабораторную работу № Y.
  • Бригаде № X находится студент Y.
  • Студент Y пола X.
  • Студент X родился в году Y.

Базе знаний будем задавать следующие типы вопросов:

·  Какая бригада (или номер бригады) защитила лабораторную работу  №1 ?

·  Кто (или имя студента) родился в 1983 ?

·  Кто (или имя студента) находится в бригаде  №1 ?

·  Кто (или имя студента) является представителем мужского (женского) пола?

Тесты

  1. Kakaja brigada zashitila laba work 1?

brigada 1 защитила laba work 1;

brigada 2 защитила laba work 1;

brigada 3 защитила laba work 1;

brigada 4 защитила laba work 1;

brigada 6 защитила laba work 1;

brigada 7 защитила laba work 1;

brigada 8 защитила laba work 1;

brigada 9 защитила laba work 1;

brigada 10 защитила laba work 1;

brigada 11ащитила laba work 1;

  1. Kto rodilsja v 1983?

Студент Kazygashev K родился 1983 году;

Студент Tcarapkin V родился 1983 году;

Студент Gluhova M  родился 1983 году;

  1. Kto  nahoditsja v brigade 1?

Студент Efremova M находится в brigada 1;

Студент Ignatev A находится в brigada 1;

  1. Ignatev A est Man?

Студент Ignatev A  является Man;

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

DOMAINS

STR_LIST = STRING*

PREDICATES

relation(STRING,STRING,STRING)

person_sex(STRING,STRING)

person_birthday(STRING,STRING)

brig_lab(STRING,STRING)

structure_brig(STRING,STRING)

sentence(STR_LIST,STRING,STRING,STRING,STRING,STRING,STRING)

%Who    Name   Sex    Year   When   Lab

sentence(STR_LIST,STRING)

%Lab

query   (STRING,STRING,STRING,STRING,STRING,STRING)

%Who    Name   Sex    Brig    Year   Lab

con1(STRING,STRING,STRING,STRING)

con2(STRING,STRING,STRING)

str_to_str_list(STRING,STR_LIST)

get_word(STRING,STRING,STRING)

CLAUSES

%вывод результатов 

query("",Name,"","","",Lab) :brig_lab(Name,Lab),

write(Name," защитила ",Lab,";"),nl,!.

query("Who","","","","",Lab) :brig_lab(Name,Lab),

write(Name," защитила ",Lab,";"),nl,fail.

query("",Name,"","","",Lab) :not(brig_lab(Name,Lab)),

write(Name," не защитила ",Lab,";"),nl.

query("",Name,"","",Year,""):person_birthday(Name,Year),

write("Студент ",Name," родился в ",Year," году").

query(Who,"","","",Year,""):person_birthday(Name,Year),

write("Студент ",Name," родился в ",Year," году"),nl,fail.

query("",Name,"","",Year,""):not(person_birthday(Name,Year)),

write("Студент ",Name," не родился в ",Year," году").

query(Who,"",Sex,"","",""):person_sex(Person,Sex),

write("Студент ",Person," является ",Sex),nl,fail.

query("",Name,Sex,"","",""):person_sex(Name,Sex),

write("Студент ",Name, " является ",Sex).

query("",Name,Sex,"","",""):not(person_sex(Name,Sex)),

write("Студент ",Name, " не является ",Sex).

query(Who,"","",Brig,"",""):structure_brig(Name,Brig),

write("Студент ",Name," находится в ",Brig),nl,fail.

query("",Name,"",Brig,"",""):structure_brig(Name,Brig),

write("Студент ",Name," находится в ",Brig).

query("",Name,"",Brig,"",""):not(structure_brig(Name,Brig)),

write("Студент ",Name," не находится в ",Brig).

% разбор предложения

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