Как мы измеряем успешность ученика в английском (4 года разработки)

5ksm8zztk1vrc-0mg0c5g4s5hha.png
Шанс, что у взрослого человека, не знающего английский, хватит терпения выучить его, стремится к нулю. Последние 4 года я занят тем, чтобы исправить это.

У нас 12 тысяч учителей английского в Skyeng, и каждый из них имеет своё представление о том, как именно измеряется уровень ученика. Вводить единую методику и контролировать её выполнение на таком количестве человек не представляется целесообразным, но показывать ученику, где он находится и сколько ему потребуется для достижения цели, необходимо. Нужны были объективные метрики, которые можно было бы снимать в автоматическом режиме.

Поэтому я занялся большим почти научным проектом, начавшимся в 2017-м году и длящимся по сей день:

  1. Собрал по данным методологических исследований карту навыков английского языка, разбитую на сотни отдельных веток, связанных друг с другом, как в хорошей RPG.
  2. Отскринил несколько реальных учеников по этой карте и придумал, как с её помощью вычислить образовательный прогресс.
  3. Наложил карту навыков на контент, чтобы каждое упражнение автоматически учитывалось в оценке прогресса (о, это было долго и сложно).
  4. Провалидировал на тысячах внутренних тестов, не зависящих от системы оценки прогресса.
  5. Заложил адаптацию для учеников разных языковых групп, поскольку родной язык ученика даёт ему какие-то навыки сразу, а какие-то делает очень сложными.
  6. Семь раз усложнил, а после существенно упростил систему.


В итоге каждый урок моя система скорит каждому ученику баллы опыта в разные ветки навыков.

Зачем это нужно


Бизнес-задача довольно простая: чем больше ученик у нас учится, тем больше он платит денег за это обучение. В общеобразовательном обучении английскому всё просто: есть программа на N лет учёбы, и ты не уйдёшь, пока не отучишься. В онлайне же крайне важна мотивация к обучению, потому что шансы отвалиться куда выше, чем в школе/институте. Решать задачу можно либо удлиняя обучение как таковое и растягивая получение знаний, либо же увеличивая количество достигаемых с помощью английского целей и закрываемых потребностей. Как это ни странно, но именно ускоренное получение знаний вызывает у ученика понимание ценности занятий, и он учится дольше.

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

Чтобы довести человека из точки А в точку Б, нужно знать, где он находится. Зная, где он находился вчера, а где сегодня, можно измерять прогресс. В общем, нам нужна была какая-то методика, которая с одной стороны позволила бы достаточно детализировано определять уровень человека, а с другой — аллоцировать этот уровень на путь к заданной цели. В нашем понимании она включала набор неких атомарных единиц, на которые можно было бы декомпозировать любую цель (мы в 2017 году слабо представляли каких), и систему их оценки, чтобы понимать, как каждое маленькое действие влияет на движение к цели. С подобной системой можно корректировать направление обучения и давать самое важное для понимания и закрепления материала, а главное — собирать программы, которые меняются в зависимости от каждого действия ученика. Да, в теории это делает хороший учитель и сам, но когда количество его учеников превышает критическую отметку, становится сложно всё удержать в голове, и четыре года спустя я могу точно сказать: моя модель очень помогает справляться с этой задачей лучше. Плюс, напомню, нам надо было контролировать качество обучения, и, если на уроке не было ожидаемого прогресса, — смотреть, всё ли в порядке с программой обучения и где основные затыки. Наша задача не менять учителя, наша задача — подсказать учителю, в чём может быть проблема ученика, расшифровать ему, почему ученик топчется на месте или регрессирует, дать наводку на более годный образовательный контент, о наличии которого преподаватель может вообще не знать.

Что мы имели на старте


Есть цели обычных людей, которые они формулируют вот примерно в таких терминах:

  • Уютно чувствовать себя в поездке.
  • Посмотреть сериал в оригинале с субтитрами.
  • Пройти собеседование.
  • Переезжаю на ПМЖ в Европу.


Декомпозировать такие цели на достаточно узкий набор can-do statements, прилагающийся к шкале CEFR (Common European Framework of Reference), той самой, привычной всем, где уровень владения языком измеряется от Beginner до Proficient, достаточно сложно. В этой шкале слишком мало дискретных шагов. Да и прогресс в языке нелинейный — нельзя сказать, что вы выучили английский наполовину. Нужен был другой уровень детализации навыков: от таких базовых, как «выучить, какие бывают буквы», до гораздо более сложных и составных вроде «умение извлекать из речи аргументы, ссылающиеся на самих себя».

С чего началось


Первое, что я сделал, — полез смотреть мировые практики по декомпозиции владения языком и нашёл замечательное исследование Pearson English. В нём ребята, проделав титаническую работу, собрали перечень языковых навыков, необходимых для жизни, и проранжировали их по сложности освоения. А заодно разработали более удобную и легко интерпретируемую шкалу GSE (Global Scale of English) с большей дискретностью, чем CEFR.

Всего получилось около 1600 отдельных навыков. Их абстрактные примеры для русского могли бы выглядеть примерно вот так:

  • Отличает, когда речь идёт о стоящем на столе предмете, а когда о лежащем.
  • Может выделить ключевую информацию из краткого комментария о спортивном матче.
  • Может выделить противоположные аргументы в художественном тексте.
  • Может написать письмо с акцентом на важном.
  • Может обозначать степени уверенности в точке зрения (вероятно, возможно, зуб даю и т.п.).


Чтобы комфортно чувствовать себя в загранпоездке, нужно освоить 250 из этих 1600. Серьёзно, английский язык очень простой, и 90–95% всех коммуникаций можно без труда вести за счёт словарного запаса и двух времён — Present и Past Simple. Будущее время можно уверенно делать из настоящего (Bill Gates starts his new job next week). При этом вы будете говорить технически грамотно, но бедно и неуклюже. В дороге это и не особо важно, главное, что вы сможете объясняться. А вот для ведения переговоров на высшем уровне, очевидно, не помешает английский этикет (связанный с речью), понимание довольно сложных юридических конструкций (связанных с легаси языка), расширенный словарный запас и много чего ещё. Ну вы поняли, для этого уже нужно освоить язык.

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

81ae8cmjafch7op9higmcxs87a0.png

Принцип работы модели


Следующее, о чём пришлось задуматься, как по имеющимся данным вычислить текущий уровень ученика. Как я писал выше, коммерческое образование сильно отличается от государственного. В школу ученик приходит в первом классе и уходит после 9-го или 11-го. У нас же минимальный пакет продаваемых уроков 4. А это значит, ученик потенциально может бросить учёбу спустя 4 урока. С нуля же до уровня Advanced проходят сотни уроков. Есть исследование, согласно которому для этого часто нужно больше 1000 часов. Мы были морально не готовы говорить ученику, рассчитывающему на что-то за полгода, про такой объём. Поэтому вопрос о демонстрации прогресса был достаточно острым… Даже в качалке на четвёртом занятии человек может начать жать от груди больше, чем на первом, а что с языком? За 4 занятия ученик выполняет 35 упражнений, если делает домашку, и 17–18, если нет. Полностью проверять владение 1600 навыками долго и дорого. На это никто не пойдёт. Даже самое простое тестирование, по качеству не уступающее ТOEFL или IELTS, занимает те же 4 часа. Нужна была облегчённая методика вычисления уровня по очень разреженным данным.

Перебирая имеющиеся навыки, я обнаружил, что некоторые из них связаны между собой на когнитивном уровне, например, умение извлекать основную мысль из структурированной речи и умение извлекать её из структурированного текста. Также некоторые навыки были связаны на контекстном уровне, например, умение запросить медицинские рекомендации у врача и умение понять выданные медицинские рекомендации. Ещё были чисто грамматические связи: умение задавать вопросы в настоящем времени и умение задавать их в прошедшем. Из этих навыков наши методисты выделили порядка 2000 подобных связей.

Некоторые навыки оказались связаны между собой по цепочке, например: «Может понять простую анкету о здоровье» <-> «Может самостоятельно заполнить простую анкету о состоянии здоровья» <-> «Может понять простые медицинские рекомендации» <-> «Может понять сложные медицинские рекомендации».

Оставалось посчитать с каким повышающим/понижающим коэффициентом предсказывать владение связанными навыками. Здесь помогла математическая оптимизация. На выходе получилась таблица, где для каждой пары связанных навыков X <-> X» я подсчитал коэффициенты А и В, по которым линейно предсказывалась оценка владения навыком:

  • Если ученик владеет навыком Х на У баллов, то навыком Х» он владеет на А*У баллов.
  • Если ученик владеет навыком Х» на У баллов, то навыком Х он владеет на В*У баллов.


p4m2gegywsexvka-roxb3gqrwra.png

После я взял и вручную разметил самый популярный у учеников курс — каждому упражнению присвоил метку навыка, который оно развивает. Так весной 2018 года родился первый прототип, считающий текущее состояние ученика в любой момент времени. Прототип для наглядности был выполнен в g-spreadsheet-таблице, и время его работы составляло почти 5 минут.

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

Тем не менее в августе 2019-го о моём проекте вспомнили, и дали ему зелёный свет… Получив временной ресурс (до этого я занимался проектом в свободное от других задач время), я довёл до ума прототип. С помощью Аirflow настроил сбор и предобработку данных, сам скрипт переписал на Рython, векторизировал вычисления и сократил время расчёта одного «слепка прогресса» с 5 минут до 0,75 секунды. Так я начал считать прогресс у первой 1000 студентов, пока что локально. Первое, что я выяснил, — полную несостоятельность методики расчёта уровня ученика на основе уже заполненной предсказаниями карты навыков. Об эволюции методики этого расчёта напишу как-нибудь отдельно, если будет интересно. Информации там хватит на целую статью. Пока в качестве затравки покажу несколько картинок.

ydzypuf4fuvcqebbb-qdtt37mtq.png
Одна из первых карт навыков, точнее, агрегат, показывающий владение ими у учеников

Реальное распределение оценок по навыкам стало огромной проблемой.
Если в тепличных условиях под бдительным методическим присмотром карта навыков имела одинаковый вид (падение оценок от простых к сложным), то в реальности, да ещё и с ограниченным набором данных, типовая картина выглядела так:

v3cwu23jggjmy8bqdarihqmn0v4.png
Типичный ученик уровня Elementary, учится на курсе General Pre-Intermediate

kcyxue_jgquax-svdrt3ic6msae.png
Ещё один ученик, тоже уровня Elementary, учится на курсе General Elementary

ceh3lly_esdzkkxgouz2espfdw8.png
Ученик уровня Pre-Intermediate, учится на курсе General Elementary

Попробуйте на глазок формализовать отличия

© Habrahabr.ru