Интерфейс на естественном языке. Семантический анализ

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

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

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

Министерство общего и профессионального образования Российской Федерации

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

Кафедра  прикладной математики

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

“Интерфейс на естественном языке. Семантический анализ”

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

Группа:               ПМ-91

Студент:             Кучеров  Д. А.

Преподаватель:  Целебровская М. Ю.

НОВОСИБИРСК

2003

1.  Цель работы

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

2. Задание

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

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

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

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

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

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

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

Рассмотрим предметную область из лабораторной работы №4. Будем рассматривать группу студентов,  выделим в ней следующие сущности:

·  Персона

·  Бригада

·  Лабораторная работа

·  Год

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

·  relation("type","person","man")

·  relation("type","person","woman")

·  relation("birthday","person","year")

·  relation("person in brigade ","person","brigade")

·  relation("defence","brigade","laboratory work")

Возможные запросы к базе знаний

В базе знаний, образованной данной семантической сетью, поставим целью отвечать на следующие типы вопросов:

1.  Who(Name) is a man(woman)?

2.  Who(Name) was born before(in,after) 1979?

3.  Who(Name) consist in brigade 1?

4.  What brigade has defended laboratory work 1?

5.  Who(Name) consist in brigade 1 , that has defended laboratory work 2?

6.  Who(Name) is a man(woman) and was born before(in,after) 1979?

7.  Всевозможные сочетания 1-го, 2-го, 3-го, 5-го вопросов различного количества, аналогично вопросу 6.

Набор тестов

Who is a woman and was born in 1979?

Stud2 is a woman and was born in 1979.

Stud4 is a woman and was born in 1979.

Stud7 is a woman and was born in 1979.

Stud10 is a woman and was born in 1979.

Stud13 is a woman and was born in 1979.

Stud8 is a man and was born in 1979 and consist in brigade 1?

Stud8 is a man;

Stud8 was born in 1979;

Stud8 consist in brigade 1;

Stud15 is a woman and was born in 1979?

Stud15 is not a woman;

Stud15 was born in 1979;

What brigade has defended laboratory work 1?

brigade 1 has defended laboratory work 1.

brigade 2 has defended laboratory work 1.

brigade 3 has defended laboratory work 1.

brigade 4 has defended laboratory work 1.

brigade 6 has defended laboratory work 1.

Who consist in brigade 1 , that has defended laboratory work 1?

Stud8 consist in brigade 1, that has defended laboratory work 1.

Stud11 consist in brigade 1, that has defended laboratory work 1.

Stud12 consist in brigade 1, that has defended laboratory work 1.

Stud11 consist in brigade 2 , that has defended laboratory work 1?

Stud11 not consist in brigade 2;

brigade 2 has defended laboratory work 1;

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

DOMAINS

STR_LIST = STRING*

PREDICATES

% Binary relation

relation(STRING,STRING,STRING)

% Possible simple queries in the semantic network

person_brigade(STRING,STRING)

person_sex(STRING,STRING)

person_birthday(STRING,STRING)

brigade_lab(STRING,STRING)

% Semantic analysis

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

%Who    Brigade   Sex    Year   When   Lab

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

%Brigade   Sex    Year   When   Lab

sentence(STR_LIST,STRING)

%Lab

% Queries to a knowledge base

composite_query(STRING,STRING,STRING,STRING,STRING,STRING)

%Who    Brigade   Sex    Year   When   Lab

simple_query   (STRING,STRING,STRING,STRING,STRING,STRING)

%Who    Brigade   Sex    Year   When   Lab

% Working tool

con_lab(STRING,STRING,STRING,STRING)

con_brigade(STRING,STRING,STRING)

def_sex(STRING,STRING)

def_when(STRING,STRING,STRING)

% Procedures of operation with string

str_to_str_list(STRING,STR_LIST)

get_word(STRING,STRING,STRING)

CLAUSES

% Queries of first order with unknown variable.

composite_query("Who","",Sex,"","","") :- !,

def_sex(Sex,S),

person_sex(X,S),

write(X," is a ",Sex,"."),nl,

fail.

composite_query("Who",Brigade,"","","","") :- !,

person_brigade(X,Brigade),

write(X," consist in ",Brigade,"."),nl,

fail.

composite_query("Who","","",Year1,When,"") :- !,

person_birthday(X,Year2),

def_when(Year1,Year2,When),

write(X," was born ",When," ",Year1,"."),nl,

fail.

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