Игра: Загрузка иностранного языка в мозг

в 22:04, , рубрики: anki, gtd, open source, Алгоритмы, английский язык, изучение иностранных языков, Песочница, метки: , , , , ,

Бывает ли у вас такие ситуации, когда слово, идиома или грамматическая конструкция иностранного языка никак не могут удержаться в голове, несмотря на то, что вы встречали её уже много раз и даже специально учили? А сколько процентов иностранных слов вы помните спустя месяц после их изучения? А спустя полгода? Сложно ли вам мотивировать себя на занятия иностранным языком?

Игра: Загрузка иностранного языка в мозг

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

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

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

Изучение языка при помощи карточек

Использование карточек (flashcards) для изучения языка — интуитивно понятный метод, суть которого крайне проста: Берётся небольшой листок бумаги, на одной стороне которого пишется текст на иностранном языке, а на другой стороне на родном. Такие листки собираются в колоды, родным языком вверх, тасуются и вытягиваются по одной. Задача человека восстановить текст на иностранном языке, видя только перевод на родной язык. Что может быть проще? Но и тут скрываются подводные камни:

Стоит ли учить отдельные слова?

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

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

Во-первых, языки разделяют оттенки смысла по-разному. Например, зная то, что на английский язык глагол «решать» переводится, как «to decide» можно перевести словосочетание «решать проблему» как «to decide a problem», но это будет ошибкой, а правильный вариант: «to solve a problem».

Во-вторых, одни и те же слова могут означать совершенно разные понятия, которые определяются исключительно контекстом, в котором они используются. Например, фразовый глагол «to put on» может иметь более десятка значений при переводе на русский язык и предложение «It was Angela who put William on to Steven» можно переводить разными забавными способами: «Анжела положила Вильяма на Стивена» или «Анжела надела Вильяма на Стивена» и так далее, но правильный вариант «Вильяма со Стивеном свела именно Анжела» (если точнее, то здесь используется фразовый глагол «to put on to»).

В-третьих, в каждом языке есть свои, уникальные идиомы, появление которых обусловлено уникальным стечением исторических и культурных событий. В идиомах целая фраза приобретает новый, часто многогранный смысл. Например, можно догадаться, что «More haste, less speed» более или менее соответствует «Тише едешь – дальше будешь», но как на счёт «Don’t give yourself airs», «You look like red herrings», «Still waters do run deep» или «We don’t mean to talk shop». Уже не всё не так очевидно, не правда ли?

Перевод

«Не зазнавайся», «Вы выглядите как белая ворона» (а у них красные селедки), «В тихом омуте черти водятся», «Мы не собираемся говорить о делах»

В-четвертых, грамматика. Слова нельзя комбинировать произвольным образом, и для естественного языка нет возможности использовать компилятор, который может всё проверить и найти синтаксические ошибки. Грамматика – важнейшая тема для изучения языка и я, ни в коем случае, не хочу игнорировать изучение грамматических правил. Но давайте вспомним то, что после каждого грамматического правила всегда идут примеры и, порой, мы не можем сформулировать само правило, но в голове возникают примеры и мы, по аналогии, говорим правильно, но при этом, даже сами не знаем почему. Пойдём еще дальше и вспомним тот факт, что любой ребенок, очень неплохо говорит на родном языке, даже не зная такого слова, как «грамматика». Дети, за несколько лет погружения в языковую среду, накапливают достаточное количество базовых элементов, и могут их комбинировать произвольным образом или выводить по аналогии.

В-пятых, связанный текст запоминается лучше. Тут действительно просто: слово, выдранное из контекста – чаще всего, просто слово, а полная фраза даёт образ, ощущения, эмоции и вызывает у нас разноплановые ассоциации. Но про эмоциональный окрас мы будем говорить дальше, а сейчас подведём итог:

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

Так что же тогда учить?

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

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

Эмоциональная окраска

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

Если вы берёте фразу из книги, и в ней участвуют имена персонажей, то фраза запомнится лучше, если вы знаете сюжет этой книги, историю этих персонажей, точный эпизод, в котором была сказана фраза и так далее. А будет ещё лучше, если книга вам действительно понравилась или, значения не имеет, действительно не понравилась. Любимые песни, фильмы, ТВ-программы, ролики на Youtube или аудиокниги — тоже прекрасные кандидаты и даже лучшие чем книги, так как позволяют развивать способность понимания на слух устной речи.

Проговаривание ответа вслух

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

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

Во-вторых, проговаривание вслух – это хорошая тренировка устной речи: произношения, интонации и скорости.

Не забывайте: серебряной пули не существует

К сожалению, у каждого метода есть недостатки. Самый главный из них, который я ощутил на себе – это произношение. Если вы неправильно произносите то или иное слово, то данный метод лишь заставит ваше произношение закрепиться. Поэтому важно очень внимательно следить за точностью произношения и исправлять его как можно раньше.

Есть полезное упражнение на произношение: можно выбрать несколько аудиозаписей фраз на иностранном языке и вслушаться внимательно в каждую фразу, а затем попытаться как можно точнее скопировать её, записывая себя на диктофон. Нужно сравнить две записи, найти отличия в произношении и повторять всё снова и снова, улучшая свою речь.

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

iFlashcard

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

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

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

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

В-третьих, некоторые программы диктуют расписание обучения таким образом, что карточкам приходится уделять строго определенное время и при том регулярно. Но, чаще всего, выкроить точное время бывает затруднительно и мне нужна возможность потратить с пользой, как пять минут, так и три часа тогда, когда мне удобно. Я прекрасно понимаю, что эффективность методов основанных на чётком расписании научно доказана, но что толку, если не получается им следовать?

Давайте взглянем на скриншоты. Вот так выглядит основное окно программы:

Игра: Загрузка иностранного языка в мозг

Всё предельно просто:

  1. Нажимаем на кнопку Next card и программа выбирает для нас случайным образом карточку, учитывая уровень наших знаний для каждой карточки
  2. Видим фразу на родном языке (или иностранном, если поменять направление в настройках)
  3. Вспоминаем её перевод и, важно, проговариваем его вслух
  4. Снова нажимаем Next card и видим ответ
  5. Сравниваем свой ответ с эталоном и, в зависимости от результата, нажимаем либо Success либо Failure
  6. Программа корректирует уровень наших знаний данной карточки и затем выбирает для нас новую карточку и всё повторяется снова

Ничего хитрого. На скриншоте видно параметр Score. Он увеличивается при добавлении новых слов и получении правильных ответов и уменьшается от обратных действий. Цель игры: набрать 100000 очков, тогда программа покажет мультик, в точности так, как в игре «Ну погоди!».

А так выглядит редактор карточек:
Игра: Загрузка иностранного языка в мозг

Алгоритмы

Пора открыть капот и посмотреть на то, как всё это работает. Уровень знания каждой карточки выражается в весовом коэффициенте (число с плавающей запятой), на основе которого, псевдослучайным образом выбирается карточка для показа пользователю. То есть, основу алгоритма составляет выбор случайных взвешенных элементов из множества. Каждый ответ пользователя Success или Failure изменяет вес карточки, соответственно, в меньшую или большую сторону.

Вес карточки после ответа меняет следующий код:

double CalcNewFactor( double oldFactor, Answer::T answer )
{
  return answer == Answer::Correct?
    oldFactor - CorrectAnswerFactor * ( oldFactor - 1 ):
    oldFactor + ( MaxWeight - oldFactor ) * IncorrectAnswerFactor;
}

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

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

Параметры IncorrectAnswerFactor и CorrectAnswerFactor по умолчанию равны 0.5 и могут быть изменены в файле настроек.

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

Для решения этой проблемы нам помогут два параметра: Максимальный MaxWeight и начальный InitialWeight вес карточки. Сделаем максимальный вес карточки равным количеству карточек, умноженного на некоторый коэффициент MaxWeightFactor, а начальный вес карточки будет равен половине максимального веса. Тогда, при условии того что, что все карточки выучены (т.е. их вес примерно равен 1) их количество равно N и MaxWeightFactor = 1 (значение по умолчанию), новая карточка будет иметь начальный вес (N + 1) / 2 и вероятность её выбора следующей карточкой будет примерно равна 1 / 3. То есть, вероятность выбора новой карточки не зависит от количества карточек, а это именно то, что позволяет хранить все карточки в одной большой колоде.

Заключение

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

И, наконец, ссылки:
Прямая ссылка на скачивание (Windows, portable): smart-flashcards.googlecode.com/files/iFlashcard-1.2.2.zip
Страница проекта: smart-flashcards.googlecode.com
Пример набора карточек: smart-flashcards.googlecode.com/files/settings.xml
Исходный код на GitHub (C++, Qt, Boost): github.com/RedaZamZam/iFlashcards

В данной статье, я хотел описать сложности, которые у меня возникли при изучении иностранного языка и то, как попытка их решения привела меня к запуску нового open source проекта. Хотел поделиться своими результатами с сообществом, получить конструктивную критику метода и алгоритмов, а также выразить надежду на то, что мои наработки окажутся полезными для кого-то еще. И, конечно, я всех приглашаю принять участие в проекте: делиться идеями, заводить таски/баги и присылать pull request’ы.

П.С. Мне не хватило кармы для публикации статьи в хабах «GTD» и «Учебный процесс в IT». Было бы очень хорошо, если бы модераторы перенесли статью в них.

Автор: NightWind

Источник

Поделиться

* - обязательные к заполнению поля