Читать нас в Telegram
Иллюстратор: Женя Родикова

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

В англоязычной специальной литературе для неправильных вариантов ответа в тестах существует специальное название — дистракторы (distractors, букв. «отвлекатели»). Хороший подбор дистракторов является одной из наиболее важных задач при дизайне тестов.

Пример тестового вопроса, дистракторы отмечены синим

На Западе, где стандартизированные тесты играют особенно большую роль в вертикальной социальной мобильности, профессия создателя тестовых материалов является одной из самых востребованных и высокооплачиваемых в сфере образования. Неудивительно, что последнее время появляются попытки её автоматизировать. Один из способов сделать это — автоматизировать генерацию дистракторов.

Как ищут ложные варианты-приманки

Один из определяющих факторов в задаче генерации дистракторов —их наличие или отсутствие в обучающей выборке. Проще говоря, есть ли у нас готовые хорошие примеры дистракторов, сделанные людьми. От этого зависит, будем ли мы решать задачу обучения с учителем (supervised learning) или обучения без учителя (unsupervised learning).

В случае обучения с учителем мы будем учиться ранжированию — то есть используемый алгоритм должен присваивать наиболее высокие ранги словам или предложениям, действительно являющимся дистракторами для данного вопроса (помеченным как дистракторы в тестовой выборке).

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

Задача порождения дистракторов сводится к а) подбору списка слов-кандидатов и б) обучению ранжированию. Вопросы нужного формата обычно собираются из оцифрованных копий учебников или интернет-ресурсов.

Найти дистракторы без учителя

В случаях, когда готовый пул вопросов нужного формата отсутствует, наступает время применения unsupervised-подхода. Такая ситуация возникает, когда сами вопросы генерируются из определенного корпуса текстов. Разумеется, в таком случае к ним нет готового обучающего набора отвлекающих неправильных ответов.

Пример такого варианта — gap-filling questions, то есть вопросы, получаемые заменой какого-либо слова или словосочетания в корпусном предложении на пропуск. Задача проходящего тест — догадаться, какая единица должна быть на месте пропуска.

Пример gap-filling вопроса

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

Как делают варианты с дистракторами на корпусе ошибок

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

В системе LangExBank (см. репозиторий) каждый тестовый вопрос — предложение корпуса REALEC, в котором область ошибки заменена на пропуск. Таким образом, правильный ответ и один неправильный ответ в исходных данных уже есть — это исправление и оригинальная область ошибки. Теперь задача состоит в том, чтобы получить ещё 2-3 неправильных варианта.

В LangExBank реализована генерация дистракторов из вопросов, полученных на основе лексических ошибок и ошибок на употребление предлогов. Для подбора дистракторов используется классификатор в виде рекуррентной нейронной сети. Нейросеть должна заполнить пропуск, но в обучение модели внесена такая принципиальная поправка: если модель предсказывала правильный вариант (т.е. слово-исправление), штраф для неё увеличивался в 2 раза.

Схема нейросети, используемой в LangExBank для порождения дистракторов

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

Полученные на выходе рекуррентного слоя векторы «склеиваются» друг с другом и вектором слова в исправлении. В качестве дистракторов используются топ-3 предсказаний модели, не равных слову в области ошибки и слову-исправлению.

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

Примеры работы нейросети

Пример вопроса на употребление предлогов, в котором есть слишком очевидно неправильные варианты (with, if)
Пример вопроса на выбор существительного, в котором получилось несколько правильных вариантов (rate, amount)

Но есть и хорошие примеры:

Пример вопроса, где есть только один правильный ответ (reduce), но остальные варианты тоже могут показаться уместными

Что дальше?

Используемый в системе LangExBank сейчас подход не идеален, однако позволяет добиться некоторых результатов в нетривиальной задаче. Возможное улучшение — использование для генерации дистракторов не рекуррентного классификатора, а генеративной рекомендательной сети, как в работе (Liang et al. 2017). Однако, здесь возникает другая проблема — варианты, которые смогут «обмануть» дискриминатор, могут оказаться «слишком правильными».

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

Несмотря на описанные проблемы, используемый в LangExBank механизм генерации лексических дистракторов должен помочь преподавателем в формировании тестовых материалов — его выдачу сейчас стоит скорее стоит воспринимать как рекомендацию. Поэтому платформа поддерживает редактирование полученных из корпуса тестов. В будущем планируется добавление моделей порождения дистракторов и для других типов ошибок.

Источники