Министерство общего и профессионального образования Российской Федерации
Новосибирский Государственный Технический Университет
Кафедра прикладной математики
Лабораторная работа №5
“Интерфейс на естественном языке. Семантический анализ”
Факультет: ПМИ
Группа: ПМ-91
Студент: Кучеров Д. А.
Преподаватель: Целебровская М. Ю.
НОВОСИБИРСК
2003
Изучение приемов семантического анализа предложений естественного языка посредством падежной грамматики.
· Сформулировать задачу семантического анализа в контексте естественно-языкового интерфейса для интеллектуальных компьютерных программ;
§ реализовать на Прологе падежную грамматику;
§ выбрать некоторую предметную область, дать ее описание предложением или набором предложений. Расширить универсальную падежную грамматику с учетом семантики предметной области;
§ убедиться, что компьютер правильно понимает высказывания из данной предметной области;
§ построить семантическую сеть выбранной предметной области в терминах падежных отношений;
§ реализовать несколько запросов к базе знаний, представленной семантической сетью.
Рассмотрим предметную область из лабораторной работы №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.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.