М О Р Ф
НГТУ
Кафедра прикладной математики
Лабораторная работа №5
По курсу: «Системы искусственного интеллекта»
Факультет: ПМИ
Группа: ПМ-06
Выполнила: Кудрявцева М. А.
Принял: Шнитко А.Г.
Новосибирск 2004
Цель работы.
Изучение приемов семантического анализа предложений естественного языка посредством падежной грамматики
Задание.
o Сформулировать задачу семантического анализа в контексте естественно-языкового интерфейса для интеллектуальных компьютерных программ;
o реализовать на Прологе падежную грамматику;
o выбрать некоторую предметную область, дать ее описание предложением или набором предложений. Расширить универсальную падежную грамматику с учетом семантики предметной области;
o убедиться, что компьютер правильно понимает высказывания из данной предметной области;
o построить семантическую сеть выбранной предметной области в терминах падежных отношений;
o реализовать несколько запросов к базе знаний, представленной семантической сетью.
Выполнение работы.
База данных
pronoun("он").
pronoun("она").
pronoun("они").
essen("остров").
essen("праздник").
essen("бригада").
essen("фильм").
essen("режиссер").
essen("трагедия").
essen("актер").
essen("представитель").
essen("благотворительность").
name("Квентин Тарантино").
name("Джеки Чан").
name("Оскар").
verb("снялся").
verb("сдала").
verb("является ли").
verb("входит").
verb("является").
verb("защитила").
verb("получил").
instr_prep("с").
instr_prep("с помощью").
instr_prep("посредством").
time_prep("перед").
time_prep("после").
time_prep("за тем").
lok_prep("в").
lok_prep("на").
lok_prep("под").
lok_prep("над").
lok_prep("снаружи").
lok_prep("внутри").
purp_prep("с целью").
purp_prep("для").
adjective("сложный").
adjective("успешный").
adjective("неизвестный").
Текст программы.
domains
words=string*
database
pronoun(string)
name(string)
verb(string)
instr_prep(string)
time_prep(string)
lok_prep(string)
purp_prep(string)
essen(string)
adjective(string)
predicates
sentence(words,words)
agent(words,words)
effect(words,words)
object(words,words)
instrument(words,words)
position(words,words)
times(words,words)
purpose(words,words)
noun_group(words,words)
clauses
sentence(S,S0):-
agent(S,S1), effect(S1,S2), object(S2,S0).
sentence(S,S0):-
agent(S,S1), effect(S1,S2), object(S2,S3), instrument(S3,S0).
sentence(S,S0):-
agent(S,S1), effect(S1,S2), object(S2,S3),
instrument(S3,S4), position(S4,S0).
sentence(S,S0):-
agent(S,S1), effect(S1,S2), object(S2,S3),
instrument(S3,S4), position(S4,S5), times(S5,S0).
sentence(S,S0):-
agent(S,S1), effect(S1,S2), object(S2,S3),
instrument(S3,S4), position(S4,S5), times(S5,S6),
purpose(S6,S0).
agent([X|S0],S0):pronoun(X).
agent(S,S0):noun_group(S,S0).
agent([X|S0],S0):name(X).
agent([X|S0],S0):essen(X).
effect([X|S0],S0):verb(X).
object([X|S0],S0):agent([X|S0],S0).
instrument(S,S0):noun_group(S,S0).
instrument([X|S],S0):instr_prep(X),
noun_group(S,S0).
times(S,S0):noun_group(S,S0).
times([X|S],S0):time_prep(X),
noun_group(S,S0).
position(S,S0):noun_group(S,S0).
position([X|S],S0):lok_prep(X),
noun_group(S,S0).
purpose(S,S0):noun_group(S,S0).
purpose([X|S],S0):purp_prep(X),
noun_group(S,S0).
noun_group([X|S0],S0):essen(X).
noun_group([X|S0],S0):name(X).
noun_group([X|[S|S0]],S0):adjective(X),
essen(S).
goal
consult("c:/prolog/case2.dba"),
clearwindow,write("Результат: "),
S=["неизвестный","актер","получил","Оскар"],
% S=["Оскар","внутри","успешный"],
sentence(S,[]),
write(S).
Результат.
Предложение неизвестный актер получил Оскар воспринято.
Предложение Оскар внутри успешный отвергнуто.
Семантическая сеть для первого (верного) предложения.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.