2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Изучение слов как игра
Сообщение10.06.2015, 22:54 
Заслуженный участник


26/05/14
981
Я хочу написать программу которая помогает заучивать слова иностранного языка. Программа показывает пользователю слово, он вводит его перевод. Программа проверяет перевод на совпадение с эталонным, результат виден пользователю немедленно. Слова берутся случайно из небольшого словаря - несколько десятков слов. Число попыток фиксированно. Когда попытки кончились, мы можем оценить успешность обучения по правильным и ошибочным ответам.
Весь процесс можно описать как игру человека против машины. Задача игрока набрать больше правильных ответов. Задача машины помешать этому.

Я хочу чтобы программа самостоятельно искала максимально неудобный порядок слов исходя из ответов человека в этой и предыдущих играх.

Вопрос: Как это сделать? Какие есть подходы? Что читать по теме автоматического обучения?

 Профиль  
                  
 
 Re: Изучение слов как игра
Сообщение10.06.2015, 23:11 


11/12/14
893
Для начала сделайте чтобы у каждого слова был "ранг неудобности", за правильный ответ ранг понижается, за неправильный - ранг повышается. Шанс выпасть слову пропорционален рангу (но встретившись слово не выпадает несколько шагов).
Наибольшую трудность составляет как выбрать слово случайным образом, но сообразно рангу.
Можно например подсчитать сумму рангов слов в текущей выборке "к выдаче" (т.е. в ней не содержаться недавно выпавшие слова), кинуть случайное число от 1 до этого значения и потом найти на какое слово оно выпало просто пройдясь по списку уменьшая счётчик на ранг текущего слова - то слово где он исчерпался и есть выпавшее слово.

 Профиль  
                  
 
 Re: Изучение слов как игра
Сообщение10.06.2015, 23:17 
Заслуженный участник


27/04/09
28128
slavav в сообщении #1025841 писал(а):
Программа проверяет перевод на совпадение с эталонным
Узкое место. Лучше пользователь бы сам проверял, угадал перевод или нет (например, показывать его (рядом со словом, а не вместо) по нажатию кнопочки или таймеру). Хотя если переводы каким-то образом (но будет ли это хорошо для знания языка?) втиснуты в одно-три слова, можно и попытаться, а грамматические ошибки и опечатки пусть будут на совести пользователя (дальше можно будет сравнивать на похожесть расстоянием Левенштейна etc.).

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

Впрочем, читаю дальше и понимаю, что цели несколько иные:
slavav в сообщении #1025841 писал(а):
Я хочу чтобы программа самостоятельно искала максимально неудобный порядок слов исходя из ответов человека в этой и предыдущих играх.
Кажется, никак. Неисповедимы пути ассоциаций человеческих, и (гипотеза), для каждого порядка найдётся человек, успешно использовавший его для вспоминания временно забытого. При реальном же знании слов (т. е. их можно быстро понять, услышав, и сказать при желании их сказать, не болтаясь по ассоциациям с остальными словами) вообще никакое перемешивание фруктов с мебелью и терминами теории категорий не должно помешать. Короче говоря, используйте случайную перестановку. Случайную перестановку списка лучше получить алгоритмом Фишера—Йейтса (или как там их по-русски).

aa_dav в сообщении #1025850 писал(а):
Наибольшую трудность составляет как выбрать слово случайным образом, но сообразно рангу.
Можно например подсчитать сумму рангов слов в текущей выборке "к выдаче" (т.е. в ней не содержаться недавно выпавшие слова), кинуть случайное число от 1 до этого значения и потом найти на какое слово оно выпало просто пройдясь по списку уменьшая счётчик на ранг текущего слова - то слово где он исчерпался и есть выпавшее слово.
Да ладно, по-моему, автоматическое составление рангов труднее, а дальше вы описали фольклор. :-) Если ранги некоторое время не будут меняться, можно, кстати, сразу составить частичные суммы (и или хранить полную сумму, или поделить их на неё), чтобы можно было использовать бинарный поиск. Хотя для данного применения, если только работой не занят сервер под тыщу клиентов, можно, наверно, и не оптимизировать.

 Профиль  
                  
 
 Re: Изучение слов как игра
Сообщение10.06.2015, 23:36 


24/05/09

2054
Слов много, почему бы сначала просто не выбирать в случайном порядке? И помечать выбранные слова, чтобы спустя какое-то время выдавать их повторно. То есть сперва чел будет правильно отвечать только на те слова, для которых знает перевод, а затем будет вспоминать, что что-то похожее уже было, может и правильный перевод вспомнит. Можно (например) процентов 80 новых слов задавать, а 20 повторно.

А если на какое-то слово несколько правильных ответов, его помечать как уже выученное, и в общий список его из повторного.

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

 Профиль  
                  
 
 Re: Изучение слов как игра
Сообщение11.06.2015, 00:04 
Заслуженный участник


26/05/14
981
arseniiv в сообщении #1025853 писал(а):
slavav в сообщении #1025841 писал(а):
Программа проверяет перевод на совпадение с эталонным
Узкое место. Лучше пользователь бы сам проверял, угадал перевод или нет (например, показывать его (рядом со словом, а не вместо) по нажатию кнопочки или таймеру).


Процедура проверки меня не очень интересует. Можно оставить проверку пользователю.

-- 11.06.2015, 00:14 --

Alexu007 в сообщении #1025863 писал(а):
Слов много, почему бы сначала просто не выбирать в случайном порядке? И помечать выбранные слова, чтобы спустя какое-то время выдавать их повторно. ...


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

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

 Профиль  
                  
 
 Re: Изучение слов как игра
Сообщение11.06.2015, 06:36 


11/12/14
893
slavav в сообщении #1025877 писал(а):
Цель - получить максимально быстрое обучение


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

 Профиль  
                  
 
 Re: Изучение слов как игра
Сообщение11.06.2015, 08:13 


24/05/09

2054
Наиболее эффективно - как у Суворова в Аквариуме. Держишь палец на кнопке (можно даже мыши) и при неправильном ответе на уже задававшееся раньше слово несильный, но неприятный удар током.

 Профиль  
                  
 
 Re: Изучение слов как игра
Сообщение11.06.2015, 09:34 
Заслуженный участник


27/04/09
28128
Так только мотивации можно лишить, на мой взгляд: если человек сам себя мотивирует, удары током ему не нужны (а вот чашечка чая, может, будет полезна), а если нет, то долго они не пропомогают.

-- Чт июн 11, 2015 11:39:35 --

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

 Профиль  
                  
 
 Re: Изучение слов как игра
Сообщение11.06.2015, 10:50 
Заслуженный участник
Аватара пользователя


09/09/14
6328
slavav
Что собираетесь делать со словами, у которых много разных переводов? Будет ли программа проверять на соответствие одному из них?
slavav в сообщении #1025877 писал(а):
Процедура проверки меня не очень интересует. Можно оставить проверку пользователю.

Тогда уж оставьте пользователю возможность добавить правильный вариант перевода. Очень доставали в детстве такие игры, в которых нужно было вызубрить, что в данной игре слово "set" нужно переводить как "зубило", например, и никак иначе.

 Профиль  
                  
 
 Re: Изучение слов как игра
Сообщение11.06.2015, 12:30 
Заслуженный участник


26/05/14
981
grizzly в сообщении #1026005 писал(а):
slavav
Что собираетесь делать со словами, у которых много разных переводов? Будет ли программа проверять на соответствие одному из них?
slavav в сообщении #1025877 писал(а):
Процедура проверки меня не очень интересует. Можно оставить проверку пользователю.

Тогда уж оставьте пользователю возможность добавить правильный вариант перевода. Очень доставали в детстве такие игры, в которых нужно было вызубрить, что в данной игре слово "set" нужно переводить как "зубило", например, и никак иначе.


Я обязательно так и сделаю. Подразумевалось, что пользователь читает главу из книги, а затем учит слова. То есть, переводы привязаны к контексту. Можно предоставить пользователю самому собирать слова в списки и подбирать переводы. Или разрешить несколько переводов. Или добавить возможность самому ввести перевод. Это технические вопросы.

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

 Профиль  
                  
 
 Re: Изучение слов как игра
Сообщение11.06.2015, 13:34 
Аватара пользователя


31/10/08
1244
slavav
slavav в сообщении #1026030 писал(а):
Я хочу чтобы машина "думала", реагировала на действия пользователя, подстраивалась под него. Можно ли автоматизировать выбор наиболее "неудобного" для пользователя порядка слов? Насколько осмысленна такая постановка задачи? Если осмысленна, то какие есть подходы для поиска или уточнения стратегий?

У вас тут смежные области.
1) Обучение человека и психология.
2) Обучение машины.

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

Можете поискать в английском языке "teaching by machine" в поисковик вводить вместе с кавычками.

 Профиль  
                  
 
 Re: Изучение слов как игра
Сообщение11.06.2015, 18:45 


11/06/15
1
slavav в сообщении #1025841 писал(а):
Я хочу написать программу которая помогает заучивать слова иностранного языка. Программа показывает пользователю слово, он вводит его перевод.

Рассмотрел бы еще облегченный вариант при котором пользователю показываются 3-4 варианта перевода, вместо ввода текста, не все пользователи владеют слепым методом набора текста + если с трудом помнишь значение слова, то как оно переводиться тем более.

 Профиль  
                  
 
 Re: Изучение слов как игра
Сообщение11.06.2015, 19:08 
Заслуженный участник


26/05/14
981
Спасибо, Pavia. Посмотрю.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group