Использование семантических сетей в
генераторах заданий
Б.Б. Балкаров
Кабардино-Балкарский
Государственный университет, г. Нальчик
Современные
концепции высшего образования включают увеличение объема самостоятельной
работы, которую должен выполнять обучаемый. Это в свою очередь порождает
необходимость в разработке такого большого объема заданий для самостоятельной
работы, чтобы обеспечить индивидуальный подход к каждому обучаемому.
Разработать
такое количество заданий «в ручную» нам представляется не только непродуктивным, но и попросту невозможным.
Именно это подвигло нас на разработку специальных компьютерных программ –
Генераторов заданий. Один из вариантов такой программы приведен в [1]. Работа
этого Генератора состояла в том, что он мог выдавать большое количество
однотипных задач в виде текстового файла не требующего дополнительного
редактирования, варьируя входные данные к ним. Количество вариантов
определялось преподавателем осуществляющим учебный процесс.
Однако
работа над этой программой привела нас к необходимости существенно повысить
уровень «интеллектуальности» последующих вариантов Генераторов, чтобы увеличить
степень разнообразия текстов задач. На наш взгляд наиболее конструктивным путем
в этом случае является использование семантических сетей. Под семантической
сетью согласно П. Уинстону будем подразумевать сеть связанных между собой
понятий, имеющую определенный смысл [2]. Он же приводит следующий пример
семантической сети описывающей стол (рис.1).
Рис.1. Семантическая
сеть, описывающая стол
Здесь
в кружках представлены объекты, из которых состоит стол, а стрелками указаны
отношения между ними. Такая сеть может быть легко формализована в виде орграфа,
где весами дуг являются отношения [3].
Однако формализация заданий базируется на несколько ином представлении
семантической сети. Рассмотрим это на следующем примере [4].
Пусть дано задание: «Поместить в регистр AX константу 260(10) . Младший байт AX переместить в полурегистр BH. Вывести результат в 10-й и 2-й формах».
Превратим это в семантическую сеть, в которой все объекты являются словами
задания, а связи между ними определяют только последовательность появления этих
объектов. Будем выделять:
-
объекты-константы, т.е. те слова, которые не меняются от задания к заданию;
- переменные,
которые могут варьироваться.
Тогда сеть будет иметь вид, как на рис.2:
Рис.2. Семантическая
сеть к примеру задания
Детализируем
блоки переменных, приведя те значения или интервалы значений, которые они могут
принимать и сопоставим каждой две величины: вероятность выбора (ВВ…) и
указатель на выбранное значение (УВ…). Тогда наша схема преобразуется к той,
что приведена на рис. 3.
Приведем
несколько комментариев к рис.3. Во-первых, она заканчивается многоточием,
поскольку дальнейшее расширение тривиально. Во вторых. Значения числовых
переменных приведены в блоках множественного выбора, означающих, что здесь
может быть выбрано любое значение из интервала, указанного на схеме. В
третьих, цикл в низу схемы означает,
что здесь просто нужно выбирать то имя полурегистра, которое не было выбрано на
втором уровне. И, наконец, МВ… означает маркер выбора. В частности, МВ0
показывает на то, что выбирается: регистр или полурегистр.
Программа,
написанная на любом ЯВУ и реализующая алгоритм, представленный на рис.3 должна
работать следующим образом:
1.
В некоторый текстовый файл выводиться значение константы «Переместить в»;
2.
Выбирается одно из значений текстовой переменной: «регистр», «полурегистр». ВВ0«регистр» = ВВ0«полурегистр» = 0,5. При
этом в УВВ отмечается имя выбранного регистра или полурегистра. Выбранное
значение помещается в тот же текстовый файл с помощью операции конкатенации.
3. МВО присваивается значение «регистр».
Осуществляется проверка того то выбрано на шаге 1. Если выбрано регистр, то
переменной, фигурирующей в задании,
может быть присвоено значение из интервала 0…65535. В противном случае
ей может быть присвоено значение из интервала 0…255. И в том и в другом случае
значения переменных задаются генератором случайных чисел, через переменную
ВВ01. Выбранное на предыдущем шаге значение также включается в текстовый фал
задания через конкатенацию.
4. К текстовому файлу добавляется константа
«.», указывающая на конец предложения.
5.
Выбирается одно из значений текстовой переменной: «младший», «старший». ВВ20«младший» = ВВ20«старший» = 0,5. Выбранное
значение помещается в тот же текстовый файл, как начало нового предложения.
6.
Далее в тот же текстовый файл помещаются три
константы (рис.3).
7.
Осуществляется выбор полурегистра с вероятностью ВВ202 = 0,25. При этом
указателю выбора УВ03 присваивается имя выбранного полурегистра.
8.
Про изводится проверка, является ли выбранный полурегистр «занятым» или
«свободным» после выбора значения на шаге 2. Если имя «свободно», то оно
добавляется в текстовый файл. Если занято, то этот шаг повторяется до тех пор
пока буде найден имя «незанятого» полурегистра.
Рис.3. Схема
развернутой семантической сети с указание возможных значений переменных
Самая
грубая оценка количества вариантов заданий без учета вероятности выбора
значений констант составляет 148 вариантов.
Приведенная
схема достаточно просто может быть преобразована в компьютерную программу, на
входе которой преподаватель задет лишь количество вариантов. А на выходе
получает необходимое число полностью сформулированных задач в виде текстового
файла.
Сам
подход может быть применен к задачам, требующим более изощренные семантические
схемы, поэтому принципы построения данных формализмов представляются нам весьма универсальными.
Литература: