p align="left">В нашей работе за этот этап отвечает функция 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() 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 Список сокращений КУ - компьютерный учебник КОС - компьютерная обучающая система УТЗ - учебно-тренировочная задача ПО - предметная область СНС - синтаксически неразложимое словосочетание ПЕ - предикативная единица
Страницы: 1, 2
|