2.2 Построение дерева синтаксического подчинения

Один из самых трудоемких этапов в разборе предложений это построение дерева подчинения. Данная задача не входит в рамки нашего исследования, т. к. является проблемой из области прикладной лингвистики.

Однако хотелось бы сказать, что на данный момент нам известен один способ решения: с помощью семантической нейронной сети[2].

2.3 Генерация вопросов

По сути, формулировка вопроса к какому-то члену предложения строится на онове исходного предложения путем удаления из него данного члена и подчененных ему синтаксических единиц, добавления вопросительного слова или словосочетания, а также изменения порядка оставшихся членов.

Отметим, что не все предложения подходят для генерации вопросов. К потенциально применимым относятся предложения, являющиеся повествовательными, синтаксически членимыми и полными в плане граматической структуры. Предпочтение при выборе стоит отдавать простым двусоставным предложениям с прямым порядком слов. Осложненные и сложные предложения также могут использоваться, однако сложность их синтаксической структуры необходимо ограничить.


2.3.1 Задание вопроса к слову

На наш взгляд, самым простым способом задания вопроса к слову будет выбор подходящего вопросительного слова из заранее подготовленной таблицы по некоторым критериям. Такой подход можно наблюдать в базах данных, когда по некоторым исходным параметрам выбираются подходящие результаты. Например:

Пусть задана таблица с вопросительными словами или словосочетаниями QTABLE.

Для того, что бы задать вопрос к слову «раму», надо сделать следующий запрос:

SELECT * FROM QTABLE WHERE params=wparams,

где wparams – список атрибутов слова, к которому задается вопрос (в этом примере это «сущ.,ед.,нар.,неод.»).

Результатом работы данного запроса будет вопросительное слово «что».

В нашей работе за этот этап отвечает функция getqword(). Алгоритм ее работы заключается в следующем:

Пусть у нас есть файл, в котором хранятся структуры word, в которых заданы только параметры и вопросительные слова. Функция принимает в качестве параметра структуру word. По заданным параметрам из базы данных (в нашем случае это файл qwrds.dat) выбирается вопросительное слово или словосочетание и записывается в соответствующее поле во входной структуре. Если же вопросительное слово не найдено, то функция возвращает 0.

Код функции getqword():

int getqword(word *wrd){

FILE *f;

int res=0;

word tmp;

f=fopen("qwrds.dat","r"); // Открытие базы данных

while(fread(&tmp,sizeof(word),1,f)>0){ // Пока есть записи...

if((wrd->params[0]&tmp.params[0])&& \

(wrd->params[1]&tmp.params[5])&& \

(wrd->params[2]&tmp.params[5])&& \

(wrd->params[3]&tmp.params[5])&& \

(wrd->params[4]&tmp.params[5])&& \

(wrd->params[5]&tmp.params[5])){

strcpy(wrd->qwrd,tmp.qwrd); // Запись результата во входную структуру

res=1;

break;

}

}

fclose(f);

return res; // выход из функции

}

2.3.2 Построение вопросительного предложения

Опишем правила построения вопросов. Для того чтобы сформировать вопрос к главному члену, необходимо представить структуру предложения в виде тройки:

(pq, Ps, Pn), (1)

где pq – член, к которому ставится вопрос (подлежащее или сказуемое);

Ps – множество членов, транзитивно подчиненных pq;

Pn – множество прочих членов.

Выражение (1) определяет аспекты синтаксической структуры, существенные при постановке вопроса к pq. Позиции, занимаемые составляющими (1), не отражают порядка слов в предложении. Например, pq может располагаться в его середине, а компоненты, соответствующие Pn, в начале и конце.

Структура вопроса к подлежащему двусоставного предложения описывает кортеж:

(wq, pop, Pn`), (2)

где wq – вопросительное слово или словосочетание;

pop – сказуемое (pop Î Pn);

Pn` - Pn\{pop}.

Из (2) видно, что из предложения удаляются pq и Ps. На первое место wq, после него указывается pop, за которым приводятся оставшиеся члены из Pn`. Выделение pop из Pn фиксирует изменение порядка слов, относящихся к Pn, по сравнению с исходным предложением. Таким образом, (2) отражает порядок слов в вопросе на уровне его декомпозиции на wq, pop и Pn`. Порядок слов в рамках pop и Pn` соответствует исходному предложению.

Следующий кортеж определяет структуру вопроса к сказуемому двусоставного предложения:

(wq, Pn, Psq), (3)

где Psq Í Ps.

В контексте (3) Pn состоит из подлежащего и транзитивно подчиненных ему членов. Другое отличие (3) от (2) заключается в том, что при формировании вопроса из предложения могут быть удалены не все члены, транзитивно подчиненные pq. К числу обязательно удаляемых относятся определения, дополнения, придаточные изъяснительные, определительные, образа действия, меры и степени, а так же все транзитивно подчиненные им члены. Обстоятельства и другие виды придаточных могут быть как удалены, так и оставлены в вопросе.

Для выражения правила построения вопросов к второстепенным членам перепишем (1), выделив еще два компонента в структуре предложения:

(Pmq, Pmn, pq, Ps, Pn), (4)

где Pmq = (pmq.1, pmq.2, …, pmq.i) – цепочка второстепенных членов, транзитивно подчиняющих pq;

Pmn – множество, включающее: главные члены, однородный по отношению к главному члену, которому подчинен pq; второстепенные члены, однородные по отношению к элементам Pmq; второстепенные члены, транзитивно подчиненные этим главным и второстепенным членам;

Pn – множество прочих членов не входящих в Pmq, Pmn и Ps.

Место, которое занимают элементы из Pmq и Pmn в структуре предложения, иллюстрирует ориентированный граф, изображенный на рис. 2. Его вершины соответствуют главным («Г») и второстепенным («В») членам предложения, а ребра – отношениям подчинения. Множества однородных членов охватывают прямоугольники. Гиперребро в виде овала обозначает ПЕ. Вершина, ассоциируемая с членом pq, к которому задается вопрос, выделена жирной рамкой.


Рис. 2

Из рис. 2 видно, что цепочка Pmq задает путь, ведущий из вершины pq к вершине подчиняющего ее главного члена, образованный транзитивными вершинами второстепенных членов. Вершины, представляющие элементы Pmn, помечены крестиками. При построении вопроса соответствующие члены удаляются из предложения.

Структуру вопроса к второстепенному члену определяет кортеж:

(pmq.i, pmq.i-1, …, pmq.2, wq, pmq.1, Pp, Pn`), (5)

где Pp – множество, состоящее из главного члена, непосредственно подчиняющего pmq.i или pq, и транзитивно подчиненных ему членов, исключая pq и элементы из Pmq и Pmn;

Pn` = Pn\Pp.

При единичной длине Pmq вместо (5) используем кортеж:

(wq, pmq.1, Pp, Pn`). (6)

Если pq непосредственно подчинен главному члену, то Pmq не задается, а структура вопроса имеет вид:

(wq, Pp, Pn`). (7)

При обработке предложения в рамках интерактивной процедуры формирования модели УТЗ следует стремиться к тому, чтобы Pmq содержала не больше трех элементов.

Примеры вопросов разных типов приведены в таблице 2.

Таблица 2.

Тип вопроса Примеры
Вопрос к подлежащему М. Планк впервые предположил, что энергия осциллятора принимает дискретные значения, пропорциональные частоте колебаний.
Кто предположил впервые, что энергия осциллятора принимает дискретные значения, пропорциональные частоте колебаний?

wq

pop

Pn`

В трансформаторе тока первичная обмотка включается в цепь измеряемого тока, а вторичная обмотка включается в цепь измерительных приборов и реле защиты.
Что включается в трансформаторе тока последовательно в цепь измеряемого тока?

wq

pop

Pn`

Что включается в трансформаторе тока в цепь измерительных приборов и реле защиты?

wq

pop

Pn`

Вопрос к сказуемому Сальник герметизирует зазор между подвижной и неподвижной частями машины.
1-й вариант вопроса:
Что делает сальник между подвижной и неподвижной частями машины?

wq

Pn

Psq

2-й вариант вопроса:
Что делает сальник?

wq

Pn

Вопрос к определению Кварцевые пески широко применяются в производстве стекла, фарфора, динаса и силикатного кирпича.
Какие пески широко применяются в производстве стекла, фарфора, динаса и силикатного кирпича?

wq

pmq.1

Pp

В производстве какого кирпича широко применяются кварцевые пески?

pmq.2

wq

pmq.1

Pp

В какую цепь в трансформаторе тока включается последовательно первичная обмотка?

wq

pmq.1

Pp

Pn`

В цепь какого реле В трансформаторе тока включается Вторичная обмотка?

pmq.2

wq

pmq.1

Pp

Pn`

Какие значения принимает энергия осциллятора?

wq

pmq.1

Pp

Pn`

Вопрос к дополнению Что широко применяется в производстве стекла, фарфора, динаса и силикатного кирпича?

wq

Pp

Куда в трансформаторе тока включается последовательно первичная обмотка?

wq

Pp

Pn`

Вопрос к обстоятельству Как в трансформаторе тока включается в цепь измеряемого тока первичная обмотка?

wq

Pp

Pn`

Где включается последовательно в цепь измеряемого тока первичная обмотка?
включается в цепь измерительных приборов и реле защиты вторичная обмотка?

wq

Pp

Pn`

Вопрос ко всему придаточному Что впервые предположил М.Планк?

wq

Pp

Pn`


Заключение

В процессе работы над темой «Построитель вопросительных предложений» были рассмотрены алгоритмы построения вопросительных предложений и разбора исходного предложения на составные части.

При рассмотрении основных алгоритмов часть из них была реализована на языке Си. Это алгоритмы разбиение предложения на состовляющие его слова и генирация вопроса к слову.

В ходе наших исследований были рассмотренны различные электронные ресурсы, книги и научные работы, посвященные данной тематике.


Список литературы

1.         Башмаков А.И., Башмаков И.А. Разработка компьютерных учебников и обучающих систем. М.: Филинъ, 2003

2.         Семантическая нейронная сеть, как формальный язык описания и обработки смысла текстов на естественном языке [Электронный ресурс] http://www.shuklin.com/ai/ht/ru/ai00001f.aspx –Загл. С экрана. Яз. Рус.

3.         Греков В.Ф., Крючков С.Е., Чешко Л.А Пособие для занятий по русскому языку. М.: Просвящение, 1990

4.         Гладкий А.В. Формальные грамматики и языки. М.,: Наука, 1973.

5.         Розенталь Д.Э. Управление в русском языке. Словарь-справочник. М.: Книга, 1986.

6.         Апресян Ю.Д., Богуславский И.М., Иомдин Л.Л., Лазурский А.В., Перцов Н.В., Санников В.З., Цинман Л.Л. Лингвистическое обеспечение системы ЭТАП-2. М.: Наука, 1989

7.         Розенталь Д.Э., Голуб И.Б., Теленкова М.А. Современный русский язык: Учебное пособие. М.: Международные отношения, 1994. 560 с.

8.         Синтаксический разбор в системах статистического анализа текста [Электронный ресурс] http://www.metric.ru/publications.asp?ob_no=306 –Загл. С экрана. Яз. Рус.

9.         Автоматическая генерация позитивных и негативных тестов для тестирования фазы синтаксического анализа [Электронный ресурс] http://citforum.univ.kiev.ua/SE/testing/generation/ –Загл. С экрана. Яз. Рус.


Приложение 1

Листинг программы разбиения предложения на отдельные слова и поиска вопросительных слов к ним

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <alloc.h>

typedef struct{

char wrd[20];

char qwrd[40];

char params[6];

} word;

char res[20];

char *tmp;

int words(){

char *r;

memset(res,0,20);

r=res;

if(*tmp==0)return 0;

while(!(islower(*tmp)||isupper(*tmp)))tmp++;

if(islower(*tmp)||isupper(*tmp))

while(islower(*tmp)||isupper(*tmp))*r++=*tmp++;

tmp++;

return 1;

}

int getqword(word *wrd){

FILE *f;

int res=0;

word tmp;

f=fopen("qwrds.dat","r");

while(fread(&tmp,sizeof(word),1,f)>0){

if((wrd->params[0]&tmp.params[0])&& \

(wrd->params[1]&tmp.params[5])&& \

(wrd->params[2]&tmp.params[5])&& \

(wrd->params[3]&tmp.params[5])&& \

(wrd->params[4]&tmp.params[5])&& \

(wrd->params[5]&tmp.params[5])){

strcpy(wrd->qwrd,tmp.qwrd);

res=1;

break;

}

}

fclose(f);

return res;

}

int main(int argc, char *argv[])

{

char str[1000];

word *arr[100];

int i=0,j;

memset(str,0,1000);

printf("Input string:");

gets(str);

tmp=str;

while(words()!=0){

arr[i]=(word *)calloc(1,sizeof(word));

memset(arr[i]->wrd,0,20);

strcpy(arr[i]->wrd,res);

i++;

}

for(j=0;j<i;j++)

if(getqword(arr[i])==0)

printf(“Вопрос к слову не найден!!!\n”);

return 0;

}


Приложение 2

Список сокращений

КУ – компьютерный учебник

КОС – компьютерная обучающая система

УТЗ – учебно-тренировочная задача

ПО – предметная область

СНС – синтаксически неразложимое словосочетание

ПЕ – предикативная единица


Информация о работе «Построитель вопросительных предложений»
Раздел: Информатика, программирование
Количество знаков с пробелами: 21979
Количество таблиц: 2
Количество изображений: 2

Похожие работы

Скачать
26443
15
0

... на все предлагаемые вопросы, необходимо знать операторы задания шаблонов. Приведем несколько примеров. Примеры использование символов задания шаблонов Использование символов Образец Поиск в Microsoft Access Вопросительный знак ( ? ); в качестве шаблона для любого символа. За?ор Забор Затор Звездочка ( * ); в качестве шаблона для любой группы символов. Д*нь День ...

0 комментариев


Наверх