Курсовая работа: Построитель вопросительных предложений

char params[6]; // параметры слова

}.

Если же какой-то параметр не учитывается или у данного слова его нет, то в масиве params он обозначается как число 255 (или FF в шестнадцатиричной системе). Остальные значения могуь лежать в интервале от 0 до 254.

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); // Запись результата во входную структуру

К-во Просмотров: 380
Бесплатно скачать Курсовая работа: Построитель вопросительных предложений