Как стать автором
Обновить

Комментарии 72

идея хорошая — Но…
Во первых это все для гиков — питон, ручное редактирование словаря и т.д. — а значит вряд ли будет активно развиваться сообществом.
Я бы вообще не хотела редактировать словари — а скачивать их уже готовые — ЭИнтузиастов полно
Ну собственно поэтому я разместил это именно на Хабре. Тут полно людей, которым всегда хочется чуть больше возможностей чем остальному интернет сообществу.
А словарь — я буду постепенно расширять, там сейчас уже более 200 слов, надеюсь догнать до 1-2 тыс. наиболее распространенных думаю этого будет вполне достаточно.
Было бы здорово, чтобы ваш скрипт моно было натравить на какую-нибудь статью, чтобы меня выспросили все возможные слова из нее и занесли все что я не знаю. Чтобы узнать что я не знаю, скрипт может залезть в лингво.онлайн сервис
Да этого придется привести все слова к некой нормальной форме — единственному числу, настоящему времени и т.п., исключить предлоги, имена, жаргонизмы и др. незначащие слова, распознать опечатки в словах, исключить дубликаты и только потом прогонять вас по оставшимся словам.
Тут понадобится помощь профессиональных лингвистов и наверное годы работы, а не маленький скрипт на python.
Согласен, именно поэтому и написал «Было бы», а не «добавьте плиз» )
Все не так плохо, вы не первый кому нужен подобный функционал. Есть готовые библиотеки для нормализации слов, например, JWNL.
Жаль только, что на java
Ключевое слово « Lemmatisation», может найдете для питона.
А это уже реализовано в более продуманной форме в lingualeo — там даже не статью, а интересные видео на вас натравливают =).
Смотреть видео это все-таки требует траты достаточно значительного количества времени, а как выразился автор статьи его не всегда много и приводит к «забиванию». Куда проще столкнулся со статьей к примеру из библиотеки python, boost или еще чего-нить и прям перед чтением чтобы тебя проверили на знание слов ;)
А на Ваш взгляд это продуктивно?
Насчет работы, например, ходят слухи, что стоит полноценно ей заниматься часов так 4-6 в день; дальше — лишь просиживание штанов, если, конечно, не пришло вдохновение. По 5 минут каждые 30 минут в день — это мне бы лично дало лишь постоянное переключение внимания от основной задачи на какие-то всплывающие окна, а если всплывающие окна еще и не знают о моем уровне владения языком, а лишь подсовывают наугад слова из словаря, как капчу индусам, то пользы никакой, а рассеивание внимания такое, что лучше и не придумать. Может для кого-то такой прием работает, не буду спорить, но мне казалось, что когнитивный процесс штука более тонкая чем просто «подсунул окно — жмакнул — пошел дальше», а данный велосипед сделан лишь от лени собраться и уделить время той вещи, которая автору (по его словам) нужна.
>>А на Ваш взгляд это продуктивно?
У нас с Вами всегда есть цель! У кого-то это научиться говорить, у кого-то грамотно читать, у кого-то и то и другое. Однако у нас с Вами также есть временные рамки.
Общаться на англ. языке конечно здорово, прикольно, круто! По-слушать на родном языке самого Страуструпа и понимать. Однако все же главной целью для себя считаю: легкое чтение технической литературы и именно поэтому стараюсь читать как можно больше.

Да и если честно, раз уж заговорили про «отвлекание», то очень много ученых сходятся во мнение что работа мозга «в режиме прерываний» для него обычное дело. Разве Вы не замечали, что рядом то пройдет кто-то, то муха пролетит, то ложка у соседа упадет, то жена что-то скажет, то машина на улице бибикнет, то еще что-то. Просто если человек работает, то ему ни одно окно не помешает, а если не хочет работать, то сколько не концентрируйся в будет бес толку!
Ну во первых 5 минут это слишком для ввода нескольких правильных ответов, да и 30 минут настраиваются.
Во вторых лично я использую ее так: если она всплыла и я ничем не занят — я отвечаю, в противном случае сворачиваю и скрипт меня больше не тревожит до окончания задачи, а как закончу — прохожу упражнение.

А насчет уровня владения — то все слова, которые вы хорошо знаете довольно быстро помечаются изученными, остаются только те, с которыми вы плохо знакомы. В крайнем случае можно почистить словарь. Я в статье как раз и пытался донести, что формирование словаря — это не автоматический процесс и если стоит задача выучить какой-то специфический набор — то стоит сформировать словарь из этого набора, полностью под себя.
Ну, если уж на то пошло, то в lingгaleo есть и такие вот «карточные» режимы, причем, насколько помню, с вариациями:
— показывают слово на инглише, и дают варианты перевода
— показывают слово на инглише, и не дают варианты — вводишь перевод сам.
— предыдущие два варианта, но наоборот — показывают слова на русском, и нужно английский перевод вписать.

Ну, и вообще, конечно, это просто способ пополнить словарный запас. Для полноценного изучения языка все-таки лучше работать с текстами, аудио, видео…
>>Ну, если уж на то пошло, то в lingгaleo есть
0) Вы допустили оЧеПятку
1) Сколько стоит вменяемый сервис узнавали? У меня в данный момент даже 500 рублей «на вес золота»!!! Пишу не потому что жмот, а потому что «дыр» в моем домашнем хозяйстве стоко, что платить еще куда-то просто «чтобы знать язык лучше» не представляется возможным!

>>Для полноценного изучения языка
Про мою цель главную цель при изучении языка уже писал в комментарии выше.
0) да, допустил

1) у lingualeo базовые аккаунты — бесплатные. Мне лично хватает бесплатного функционала.

В целом — дело-то ваше. Я не читал всю ветку комментов — зацепился именно за обсуждение лингвалео, поскольку этот сервис мне знаком.
Можно попробовать это wordsfromtext.ru/about/
В лингво залезать не умеет, но слова из текста выдаёт.
Количество слов, на мой взгляд, не ключевой момент. Можно знать 1000 слов вроде cat, dog, house, но не представлять как их связать. Что Вы планируете использовать чтобы ранжировать уже имеющиеся и вновь поступающие от энтузиастов слова по степени углубленности обучения?
Пока особо над ранжированием не задумывался, делал-то для себя изначально, подразумевая, что сам себе смогу подобрать нужные словари. Но если такая проблема встанет, можно распарсить какой-нибудь сайт где слова уже разбиты по тематике/сложности/общеупотребительности и сделать автоматически из общего словарю кучу мелких с такой же иерархией. А потом дать возможность из программы импортировать (ну или просто копировать) нужные словари в общий по мере надобности.
Я когда учил английский, просто выучил все слова отсюда www.wordfrequency.info/free.asp?s=y
Но без контекста плохо, это да.
да нет — просто если бы это было просто и соответсвенно популярно — то энтузиасты все бы сделали сами… Да и возможно развитие продукта шло бы быстрее. Штука то нужная
Считаю, что я вообще не должен вводить перевод — программа должна знать его сама. Еще было бы удобно добавлять слова прямо из файла субтитров или книги.
По описанию что-то интересное, спасибо, посмотрю.
А разве в Anki есть такой же функционал со всплывающими окнами?
Нет, не умеет
Успешно пользуюсь больше года. Все в нем хорошо кроме интерфейса: много мусора, частые действия находятся иногда в далеко не очевидных местах. Но, после некоторого времени использования привыкаешь.
Отдельные слова вырванные из контекста учить вредно, потому что у каждого слова миллион значений, и для разных контекстов применяются разные слова(которые на русский переводятся впринципе одинаково)
Ну с каких-то значений надо же начинать, не думаю что вся система обучения иностранным языкам в той же школе в корне неверна, а там именно заучивали переводы вырванных из контекста слов. У слова обычно 1-2 основных значения, остальные в принципе — просто синонимы.
Да и в итоге по окончании школы, никто и пары слов на английском связать не может.
Нет, я считаю это путь в никуда.
Не буду сейчас приводить все доводы, найди в поиске книжку
«Замяткин ВАС НЕВОЗМОЖНО НАУЧИТЬ ИНОСТРАННОМУ ЯЗЫКУ»
почитай, там довольно убедительно рассказываются почему так.
Спасибо, почитаю.
Возможно это изменит мой подход к изучению языка.
Замяткин идейно вправил мозг, а вообще есть программа (мультиплатформенная) Anki — очень удобная, со словарями, частотным анализом, комьюнити и т.д. и т.п. Бесплатная.
Спс, надо будет глянуть.
Anki похоже реализует модель классических карточек, не позволяя ввести ответ, что для меня очень важно, т.к. хочется параллельно попрактиковаться в написании слов, ну и запоминается по-моему лучше.
Действительно мощная программа судя по обзору.
Кстати, как раз Замяткин и говорит, что сначала нужно выучить некий минимум слов и фраз, список которых приводится в конце книги. Минидикт называется, вроде.
Для первых нескольких сотен слов подойдет. Цель — как можно быстрее начать читать и слушать тексты, в которых есть контекст. И, да, в бОльшей части школ иностранному языку учат очень плохо.

>> У слова обычно 1-2 основных значения

Ну, вот упомянутый grip www.classes.ru/dictionary-english-russian-polytechnicalenru-term-72207.htm — 12 значений ручка/парашют/рабочий сцены. must — плесень/сусло/обязанность и т.д.
Безусловно там есть куча многозначных слов, но для изучения всего многообразия нужна какая-то база, хотя бы в тысячу слов. А потом уже стоит переходить на чтение английской литературы, фильмы с субтитрами, прослушивание аудиокниг и т.п…
Спасибо. Интересные карточки. Сам буквально час назад думал об этом.
В качестве фичереквестов оставлю вот эту ссылку:
www.supermemo.com/english/contents.htm,
пожелание блокировать клавиатуру для остальных приложений на время решения задания
и возможность разнообразить количество языков.
Репозитарий клонировал полюбопытствую.
Спасибо за ссылку.
Использовать скрипт для изучения того-же немецкого в принципе не составит труда — просто подкладываем другой словарик и если смущает правим лок. ресурсы, они вынесены в отдельный файл
Блокировать клавиатуру — имелось ввиду запрет работы в других приложениях до окончания задания? Если так то это немного некорректно на мой взгляд, зачастую я нахожусь что называется в «потоке» и менять конекст на английский до завершения текущей работы — не хотелось бы.
Хотел бы программу, которая бы просто печатала двусторонние карточки. Причем странскрипцию и перевод заполняла бы сама.

Вводить текст перевода, словаря при обучении — ИМХО узкое звено, плюс это лимитирует использование «только рядом с компьютером». Карточки же можно изучать в дороге, да где угодно.

Еще идея — можно сделать для мобильного телефона, при этом слово не вводить (там это реально не удобно), просто показывать через какое-то время (3-5 секунд) правильный ответ, человек пускай отвечает — знал он или нет. Да, можно читерить, но для чего? Цель-то изучить язык, а не набить статистику в софтине, а подходить и печатать порой неудобно.
Я пользуюсь для заучивания слов через карточки бесплатной программкой BX Language acquisition

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

Из описания:

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


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

image
Очень похоже на древний EZ Memo, который в свое время помог в подготовке к ТOEFL.
Да тоже пользовался EZ Memo.
Она даже умела определять активность мыши и клавиатуры и всплывала,
только когда нужно.
небольшой bug report:
Ubuntu 11.04
Python 2.7.1

При запуске из директории где лежат все файлы проекта, падает со стектрейсом:
~/downloads/ReanGD-LearningEnglish-978c09b$ python main.py
Traceback (most recent call last):
File «main.py», line 57, in run()
File «main.py», line 53, in run
os.chdir(os.path.dirname(__file__))
OSError: [Errno 2] No such file or directory: ''

думаю в строке 53 main.py нужно путь сделать абсолютный.
Если запускать из директории на уровень выше, то все ок.
Успехов.
Да действительно запускать в Ubuntu нужно либо «python ./main.py», либо указывать полный путь к файлу.
Мой рецепт — делаю эксель-файл с тремя колонками:

[слово по-русски] [слово по-английски] [колонка для ввода варианта ответа] [ =(B1=C1) ]

Вторую колонку делаю белым шрифтом.
Главное достоинство такой реализации — в нее не зашита никакая жесткая логика, по какому сценарию я учу слова зависит лишь от моего настроения.
А есть что-то похожее для Mac OS?
На описанную в посте программу? Она судя по отзывам вполне работает под Maс OS, правда не без некоторых проблем судя по всему, но я собираюсь на неделе доработать скрипт. Так что пробуйте и в случае проблем напишите мне, было бы замечательно, если напишите в issues на github.
os.path.basename в main.py почему-то возвращает пустую строку, но если закомментировать — все работает. Только буквы маленькие.
image
Проблема с этой строчкой похоже исчезает если указать полный путь к main.py. Со шрифтами судя по скриншоту — беда, похоже придется делать отдельные конфигурационные файлы со специфическими настройками под каждую ось. Сейчас под рукой нет OS X, как только найду, постараюсь все поправить.
Вот так заработало.
os.chdir(os.path.dirname(os.path.abspath(__file__)))
Спасибо.
У меня есть еще несколько замечаний, но я постараюсь прислать их в виде пулл-реквестов.
Я не помню точно, но, кажется, это Спольски писал, что посторонний вопрос, заданный программисту, сказывается на его работе в течении 15-ти минут. Мой опыт это подтверждает. Как результат, Ваша программа, запускаясь каждые 30 минут, будет 15 минут уводить из продуктивного времени, то есть за 8-ми часовой рабочий день потеря 4 часа. Многовато.

PS
russian.joelonsoftware.com/Articles/TheJoelTest.html
>Факты свидетельствуют, что если мы отвлекаем программиста даже на 1 минуту, мы отнимаем у него 15 минут продуктивной работы.
Ваши выкладки удивительным образом коррелируются с расхожим мнением, что программист реально работает всего 4 часа в день. Наверное из-за этой программы )
Если серьезно, то у вас действительно на работе такая тишина и уединение, что нажатие Alt+Tab от силы раз в 30 минут — это именно то, что выбьет вас из колеи на последующие 15 минут? Я вам завидую, у меня в отделе 10 человек и абсолютной тишины и неподвижности нет никогда, плюс еще кто-то в джабер напишет, уведомление о новом письме всплывет, программка обновится захочет, смс придет и т.д. и т.п… Если на каждое подобное событие будет выбивать меня из контекста, то я вообще работать не смогу.
Вы очень невнимательны ;) — про тишину и уединение ни я, ни Спольски не писали. Вопрос в концентрации на проблеме, Спольски более подробно об этом написал — рекомендую прочитать по ссылке, там не очень длинный текст.
Ммнение о том, что отвлечение программиста от работы крайне не желательно, довольно известное и популярное, во всяком случае те программисты, которых я спрашивал, его подтверждают, как подтверждает и мой опыт. В частности, отключение чатов на время работы над программой здорово повышает производительность. Конечно, это может зависеть от индивидуальных особенностей человека, и Вам повезло, а может быть просто не замечали пользы от отсутствия отвлекающих факторов. Недаром ночная работа часто бывает такой плодотворной.
Вы уверены, что это я невнимателен? )
>>В специальной литературе уже давно описано увеличение производительности работников умственного труда при предоставлении им рабочего пространства, тишины и уединённости.
это в 8 пункте.

По моему Спольски говорит о немного другом. Я согласен, с тем, что если задать вопрос программисту, то это повлечет к смене контекста, потому что там приходиться думать, но нажатие Alt+Tab не требует какого-то существенного умственного напряжения. Я не призываю выполнять задания точно каждые 30 минут, я это делаю — после стендапа, после обеда, после того как схожу налью чай, после того, как закрою очередной таск — в те моменты, когда все равно контекст выгружается из памяти. Таких моментов не так уж и мало.
Здорово сделано! :) У меня похожая программка, но для мобильных устройств (написана на Qt, работает на Maemo и Android).

Правда, она все-таки требует хотя бы минуты 4 на упражнение (там не просто вписать слово, а 4 разных типа заданий), иначе уж совсем неэффективно. И при этом не показывает напоминия, т.к., как показала практика, кто хочет учить — будет сам тянуться к ней в транспорте, очереди, просто в свободную минутку. А у кого времени нет, тот будет только злиться на назойливые напоминания.

За простой формат словарей люто плюсовал бы, если б была карма :) Собственно, это и для меня тоже было одной из причин по созданию своего велосипеда.
Это прекрасно, именно то, что мне сейчас нужно. Я знаю грамматику на достаточном для общения уровне, но у меня чудовищно маленький словарный запас.
НЛО прилетело и опубликовало эту надпись здесь
Спасибо.
Автор не студент, автор работает, просто иногда все еще хочется чем-то поделиться с людьми бесплатно )
В догонку к предыдущим комментаторам, плюсую Anki — помимо всей прочей фичастости, одним из самых главных достоинств ее является использование эмпирически выведенного алгоритма (основанного на алгоритме SuperMemo2), который как раз и решает на основе ответов когда в следующий раз показывать ту или иную карточку. Нет никаких оснований не доверять этому алгоритму, и думаю, он будет гораздо эффективнее, чем «повторения каждые полчаса по 5 минут». К тому же Anki на питоне, и более чем кросс-платформенная.
Странно, что к ней еще не слелали, как я понимаю, плагина с фоновым режимом и периодически всплывающими окошками.
Я пользовался программой Learn Words. Посмотрите, она очень крутая, и как раз времени не много отнимает. Мне помогла. В ней очень много вещей, которые хотелось бы улучшить, но это не Open Source. К несчастью. Если будет время, добавьте пару фишек из нее. Будет очень круто!
Вываливается trace
% python2.6 ./main.py
Traceback (most recent call last):
File "./main.py", line 57, in <module>
run()
File "./main.py", line 54, in run
App()
File "./main.py", line 14, in __init__
self.new_lesson()
File "./main.py", line 19, in new_lesson
self.lesson = lesson.Lesson(cfg_dict)
File "/home/alukardd/LearningEnglish/lesson.py", line 45, in __init__
self.dict.reload_dict(cfg[«path_to_dict»])
File "/home/alukardd/LearningEnglish/dictionary.py", line 28, in reload_dict
self.reload_dict_s(open(path).read())
File "/home/alukardd/LearningEnglish/dictionary.py", line 21, in reload_dict_s
for it in json.loads(text):
File "/usr/lib/python2.6/json/__init__.py", line 307, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.6/json/decoder.py", line 319, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python2.6/json/decoder.py", line 336, in raw_decode
obj, end = self._scanner.iterscan(s, **kw).next()
File "/usr/lib/python2.6/json/scanner.py", line 55, in iterscan
rval, next_pos = action(m, context)
File "/usr/lib/python2.6/json/decoder.py", line 219, in JSONArray
raise ValueError(errmsg(«Expecting object», s, end))
ValueError: Expecting object: line 124 column 1 (char 8068)
, собственно похоже на то, что у меня просто нету пакет с json для python, но какой именно поставить?
ССЗБ… Правил словарь оставил запятую после последней записи.
Прелестно. Просто прелестно. Буквально на днях писал такой же скрипт для Mac OS X. Ваш конечно проработанее. Буду его использовать.
Таки да — велосипед.
Пользуюсь Lingvo Tutor. Меня устраивает.
Знакомые делают подобную штуку, называется Tutorle. Но там скорее как комбинацию онлайн-сервиса и мобильных/десктопных приложений. Сейчас есть веб-интерфейс, и WinPhone приложение. На подходе вроде Android, iOS и Windows 8.
Можно заводить сколько угодно словарей и добавлять свои слова. Есть возможность проиграть произношение слов. Несколько видов тестов. Одна из фишек — все созданные словари и статистику обучения можно сбрасывать в облако и потом синхронизировать на любом другом устройстве.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации