Цель работы: Изучение приемов семантического анализа предложений естественного языка посредством падежной грамматики
Задача семантического анализа:
“Студент третьего курса в осеннем семестре в терминальном классе реализовал эффективную программу на языке Пролог для курсового проекта”.
Семантическая сеть:
Действие = “реализована”
кто (объект)
кем (агент) с помощью чего (инструмент)
студент
3-го курса эффективная
программа язык
пролог
для чего
(цель)
где (место) когда (время)
курсовой проект терминальный класс осенний семестр
Запросы:
"кто реализовал эффективную программу на си в терминальном классе в осеннем семестре для курсового проекта"
"что реализовал студент третьего курса",FRS),
"студент третьего курса что сделал в осеннем семестре"
"студент третьего курса реализовал эффективную программу на чём"
Текст программы:
DOMAINS
PHRASE = STRING*
PREDICATES
sentence(PHRASE,PHRASE,STRING) %предложение
agent(PHRASE,PHRASE,STRING) %агент
effect(PHRASE,PHRASE,STRING) %действие
object(PHRASE,PHRASE,STRING) %объект
instrument(PHRASE,PHRASE,STRING) %инструмент
position(PHRASE,PHRASE,STRING) %место
time_p(PHRASE,PHRASE,STRING) %время
purpose(PHRASE,PHRASE,STRING) %цель
noun_group(PHRASE,PHRASE) %именное словосочетание
question(STRING,STRING) %вопрос
question_verb(STRING,STRING) %глагольный вопрос
name(STRING) %собственное существительное
noun(STRING) %существительное
verb(STRING) %глагол
pronoun(STRING) %местоимение
adjective(STRING) %прилагательное
instrument_pretext(STRING) %инструментальный предлог
time_pretext(STRING) %временной предлог
position_pretext(STRING) %локутивный предлог
purpose_pretext(STRING) %целевой предлог
delqst(PHRASE,PHRASE,STRING)
delqst1(PHRASE,PHRASE,PHRASE)
answer(STRING,PHRASE,PHRASE) %ответ
answer1(STRING,PHRASE,PHRASE,PHRASE) %ответ
relation(STRING,PHRASE,PHRASE) %сеть
relation1(STRING,PHRASE,PHRASE) %сеть
relation2(STRING,PHRASE,PHRASE) %сеть
scan(STRING,PHRASE) %сканер
lst_to_str(STRING,PHRASE) %перевод в строку
word(STRING,STRING,STRING)
ins(STRING,PHRASE,PHRASE) %вставить элемент в конец списка
run
CLAUSES
sentence(S,S0,QST):-agent(S,S1,QST), effect(S1,S2,QST), object(S2,S3,QST),instrument(S3,S4,QST),
position(S4,S5,QST),time_p(S5,S6,QST),purpose(S6,S0,QST).
sentence(S,S0,QST):-agent(S,S1,QST), effect(S1,S2,QST), object(S2,S3,QST),instrument(S3,S4,QST),
position(S4,S5,QST),time_p(S5,S0,QST).
sentence(S,S0,QST):-agent(S,S1,QST), effect(S1,S2,QST), object(S2,S3,QST),instrument(S3,S4,QST),
position(S4,S0,QST).
sentence(S,S0,QST):-agent(S,S1,QST), effect(S1,S2,QST), object(S2,S3,QST),instrument(S3,S0,QST).
sentence(S,S0,QST):-agent(S,S1,QST), effect(S1,S2,QST), object(S2,S0,QST).
sentence(S,S0,QST):-agent(S,S1,QST), effect(S1,S2,QST), time_p(S2,S0,QST).
agent([X|S0],S0,_):-pronoun(X).
agent(S,S0,_):-noun_group(S,S0).
agent([X|S0],S0,_):-name(X).
agent([X|S0],S0,QST):-question(X,QST).
effect([X|S0],S0,_):-verb(X).
effect(["что",X|S0],S0,QST):-question_verb(X,QST).
object([X|S0],S0,_):-pronoun(X).
object(S,S0,_):-noun_group(S,S0).
object([X|S0],S0,_):-name(X).
object([X|S0],S0,QST):-question(X,QST).
instrument([X|S],S0,_):-instrument_pretext(X),noun_group(S,S0).
instrument(S,S0,_):-noun_group(S,S0).
instrument([X,Y|S0],S0,QST):-instrument_pretext(X),question(Y,QST).
instrument([X|S0],S0,QST):-question(X,QST).
time_p([X|S],S0,_):-time_pretext(X),noun_group(S,S0).
time_p(S,S0,_):-noun_group(S,S0).
time_p([X,Y|S0],S0,QST):-time_pretext(X),question(Y,QST).
time_p([X|S0],S0,QST):-question(X,QST).
position([X|S],S0,_):-position_pretext(X),noun_group(S,S0).
position(S,S0,_):-noun_group(S,S0).
position([X,Y|S0],S0,QST):-position_pretext(X),question(Y,QST).
position([X|S0],S0,QST):-question(X,QST).
purpose([X|S],S0,_):-purpose_pretext(X),noun_group(S,S0).
purpose(S,S0,_):-noun_group(S,S0).
purpose([X,Y|S0],S0,QST):-purpose_pretext(X),question(Y,QST).
purpose([X|S0],S0,QST):-question(X,QST).
noun_group([X|S],S0):-noun(X),noun_group(S,S0).
noun_group([X|S],S0):-adjective(X),noun_group(S,S0).
noun_group([X|S0],S0):-noun(X).
noun_group([X,Y|S0],S0):-noun(X),adjective(Y).
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.