Поведение sequence_analyzer при одинаковом количестве ошибок в двух ответах

Issue #470 new
Oleg Sychev repo owner created an issue

Имеем тестовый вопрос на составление прототипа функции с двумя параметрами. Есть два варианта ответов: с именами параметров и без. Скажем int funct (float, double) и int funct (float param1, double param2)

Студент в ответе неправильно набирает имя первого параметра (определение опечаток отключено), например int funct (float piram1, double param2)

Выдаваемые ошибки: лишняя лексема piram1, лишняя лексема param2. Вот вторая (про лишнюю param2) сбивает студента с толку, т.к. там все правильно.

Причина проблемы в том, что оба варианта дают одинаковое количество ошибок: к первому варианту можно прийти удалив оба названия параметров, а ко второму - удалив piram1 и вставив param1.

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

Comments (7)

  1. Dmitry Mamontov

    Может завести под это опцию в вопросе?

    Просто наверняка под это есть какой-то контрпример, когда нам может потребоваться обратный вариант.

  2. Oleg Sychev reporter

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

    Внутри одного ответа по идее такие конфликты возникать не могут, т.к. итоговое количество лексем должно быть одинаковым - и количество ошибок тоже, а разные ошибки по-разному влияют на количество лексем.

    Можем мы принять как принцип что если (особенно не увеличивая количество ошибок) что-то написанное студентом можно сохранить, его следует сохранить?

  3. Dmitry Mamontov

    По сути это означает, что в момент выбора верного ответа, если у нас присутствует несколько вариантов, мы выбираем ответ с меньшим количеством ошибок вида “лишняя лексема“. Это если навскидку. В сущности, это мало что поменяет в логике оценивания, но хочется уточнить.

  4. Oleg Sychev reporter

    Я думаю этого можно достичь вводя ошибке вида “лишняя лексема” немного больший вес чем у остальных, но не настолько чтобы кумулятивно сложилось в целое число. Вес же не обязан быть целым, можно и 1.01 сделать.

    Тогда логика оценивания как выбор ответа с наименьшим суммарным весом ошибок сохранится.

  5. Dmitry Mamontov

    А разве сейчас вес ошибок из LCS таким нельзя задать? Там вроде нет никаких ограничений на формат ввода. Я ещё не смотрел, правда.

  6. Oleg Sychev reporter

    Если речь идет об интерфейсе пользователя, то мне кажется вы путаете вес ошибки (который влияет на выбор наилучшего набора ошибок и ответа - на $fitness) и сколько снимать из оценки за ошибку. Пользователь может настроить только последнее, веса насколько я помню это хардкод.

  7. Dmitry Mamontov

    Ок, попробую посмотреть как там это в fitness работает.

  8. Log in to comment