Задачи

Скачать

MathLogicQA

Описание задачи

Задание состоит в решении математических задач, сформулированных на естественном языке. Математические задачи можно разделить на несколько видов:

  • составление и решение уравнения,
  • составление и решение системы уравнений,
  • решение задачи на пропорции и сравнение,
  • сопоставление описываемых в задаче объектов с неизвестными переменными в уравнении.

Мотивация

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

Описание датасета

Каждый пример в датасете состоит из текстовой задачи с вопросом и 4 вариантами ответа. Правильный ответ может быть только один.

Поля данных

Каждый пример имеет фиксированные поля данных:

  • instruction — строка, содержащая инструкцию для задачи и информацию о требованиях к формату вывода модели. Использованные промпты представлены в репозитории проекта.
  • inputs — словарь, содержащий данные для входа модели.
    • id — целое число, обозначающее индекс примера;
    • option_a — строка, содержащая вариант ответа A;
    • option_b — строка, содержащая вариант ответа B;
    • option_c — строка, содержащая вариант ответа C;
    • option_d — строка, содержащая вариант ответа D;
  • outputs — строка, содержащая букву правильного ответа.
  • meta — словарь, содержащий метаинформацию:
    • id — целое число, обозначающее номер задания;
    • task — строка, содержащая информацию о типе задания: math — решение систем уравнений и сравнение величин; logiс — сопоставление объектов, описываемые в задаче, с неизвестными переменными в уравнении и их решение.

Пример данных

Ниже приведен пример данных из датасета:

{
	"instruction": "{text}\nA. {option_a}\nB. {option_b}\nC. {option_c}\nD. {option_d}\nУкажите только букву правильного ответа.\nОтвет:",
	"inputs": {
		"text": "Если из 17 вычесть 26, то получится 3, умноженное на q. Рассчитайте значение переменной q.",
		"option_a": "-3",
		"option_b": "3",
		"option_c": "14",
		"option_d": "14.3"
	},
	"outputs": "A",
	"meta": {
		"id": 1,
		"task": "math"
	}
}

Разбиение данных

Train состоит из 680 примеров.

Test состоит из 1143 примеров.

Train и Test сбалансированны по классам ответа.

Промпты

Промпты представлены в виде инструкций, всего 10 различных промптов.

Пример промпта:

"Решите математичеcкую задачу: {text}\nA) {option_a}\nB) {option_b}\nC) {option_c}\nD) {option_d}\nВыберите один правильный ответ. В ответе укажите только букву правильного ответа.\nОтвет:"

Создание датасета

В датасет вошли два типа задач: logic и math.

logic

Задачи типа logic представляют собой математические задачи, сформулированные на естественном языке. Для решения подобного вида задач необходимо построить систему уравнений (или одно уравнение) и решить ее, сопоставив описываемые в задаче объекты с неизвестными переменными в уравнении. Задачи данного типа формировались с использовались открытых источников, содержащие базы математических задач.

math

Задачи типа math состоят из математического выражения (линейного уравнения или системы линейных уравнений), а также вопроса по данному выражению. Для ответа на вопрос необходимо решить линейное уравнение или систему линейных уравнений. Для некоторых задач также необходимо произвести операцию сравнения. Математические выражения представляют собой синтетические данные, сгенерированные с помощью open source библиотеки google-deepmind/mathematics_dataset с использованием модулей linear_1d и linear_2d. Полученные сгенерированные выражения были переписаны с математического языка на естественный русский язык с использованием разметчиков. Далее для каждого выражения разметчики сформулировали вопрос на естественном языке и правильный ответ.

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

Валидация

Все примеры из датасета прошли валидацию разметчиками на платформе Яндекс.Толока. Разметчики проверяли корректность условий задачи и правильность ответа. Основной пул разметки включал в себя все 2000 заданий типа math и 570 заданий типа logic. Для каждого примера было установлено перекрытие в 3 человека с возможностью увеличения до 5, если согласованность в задании менее 70%. Из итоговой разметки были исключены ответы разметчиков, которые показали точность разметки на контрольных заданиях менее 50% .

В результате валидации в итоговую тестовую выборку вошли примеры с полной согласованностью разметчиков. В обучающую выборку вошли оставшиеся примеры с согласованностью выше 60%.

Оценка

Метрики

В качестве целевой метрики для оценки качества используется Accuracy.

Человеческая оценка

Человеческая оценка производилась с помощью платформы Яндекс.Толока с перекрытием разметчиков равным 5.

Финальная оценка точности человека равна 0.99 .