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

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

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

М О Р Ф

НГТУ

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

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

Результат.

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

Предложение Оскар внутри успешный отвергнуто.

Семантическая сеть для первого (верного) предложения.

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