DOU Проектор: Author’s vocabulary — вивчення іноземних мов у контексті програмування

Від редакції:
В рубриці DOU Проектор всі бажаючі можуть презентувати свій продукт (як стартап, так і ламповий pet-проект). Якщо вам є про що розповісти — запрошуємо прийняти участь. Якщо ні — можливо, серія надихне на створення власного made in Ukraine продукту. Питання і заявки на участь надсилайте на editors@dou.ua.

Початок

Вітаю всіх! Мене звати Олександр Матвієнко. Вищу освіту я отримав за напрямом «Менеджмент організацій», але 7 років працював на посаді асистента. А в свої 30 років вирішив стати програмістом. Хоча багато хто каже, що вже пізно, але поживемо — побачимо.

Звісно ж, в процесі навчання виникла необхідність читати, і бажано англійською. Англійську мову я «вчив» і в школі, і в університеті, і самоосвітою займався. Але цього було мало, дуже мало. Базові знання граматики в мене є, а от словниковий запас — не дуже. Я почав займатися з програмами Lingvo Tutor, Shooting Gallery (Bridge to English), також пробував користуватися онлайн-ресурсами busuu, lingualeo. Кожен продукт по-своєму класний, але, на мій погляд, вони мають деякі недоліки, коли мова йде про вивчення іноземних мов у певному контексті (наприклад, програмування).

Я не філолог, але хочу викласти вам свій власний погляд на проблему поповнення словникового запасу іноземними словами. Як звичайний користувач, я бачу наступні проблеми:
— Існуючі програмні комплекси пропонують вам вчити ті слова, які вони вважають потрібними;
— Як альтернативу вам пропонують створювати власні словники.

Розглянемо кожну проблему детальніше.

1. Вчити те, що пропонують.

Це найбільш швидкий і зручний спосіб. Але, як програмісту-початківцю, мені хотілося б спочатку вивчити ті слова, які мені потрібні, щоб читати технічну літературу і переглядати відео в оригіналі. Тому не бачу сенсу витрачати свій час на те, щоб вчити такі слова як «риболовецький гачок», «єпископ», «рефрен», «сажотрус», «штемпелювати» і т.п. Так, теоретично всі слова потрібні, але я хотів би вивчити спочатку ті, слова, які мені потрібні в даний момент.

До того ж тут виникає ще одна проблема. Значення англійських слів інколи сильно відрізняються в залежності від того, де вони вживаються. Наприклад, ось як перекладає Lingvo слова на російську мову:

ТерминПеревод (общий словарь)Перевод ( компьютерный словарь)
logбревно; колода; чурбан;
заготавливать (вырубать) лес;
пилить лес на стройматериалы
запись в журнале регистрации событий;
журнал регистрации [событий];
регистрировать
hackрубить, разрубать, прорубать;
кромсать; разбивать на куски;
незаконно получать доступ
нудная работа, тяжёлая работа
заниматься тяжёлой работой
заниматься хакерством
pipe(курительная) трубка;
свирель, дудка, свисток, волынка;
труба, трубопровод
программный канал;
конвейер [команд]

А який переклад нам пропонують вчити більшість готових рішень? Звісно, загальний. Тому, навіть після вивчення таких значеннь слів, читання книжок по програмуванню англійською мовою перетворюється в дуже цікаву пригоду.

2. Самостійно створювати словники.

Для експерименту візьмемо програму Lingvo Tutor і зробимо прості розрахунки. Припустимо, щоб створити одну словарну статтю методом «копі-паст», вам знадобиться 30 секунд, а ви бажаєте створити словничок на 5000 слів. Отже:
30 секунд * 5000 слів =150 000 секунд = 42 години

Тобто на створення словничка на 5000 слів вам потрібно безперервно протягом 42 годин клацати мишкою! Але це ще не все. Які ж слова вчити в першу чергу, а які можна залишити «на потім»?

Ну, і перед тим, як ми перейдемо до вирішення проблеми, розглянемо ще одну пораду з вивчення іноземних мов: слухати пісні, дивитися фільми і читати книжки в оригіналі. Я не стану заперечувати дієвість цього методу, але в мене є великі сумніви щодо його ефективності. Чи багато користі ви отримаєте від перегляду фільму, якщо ваш словниковий запас дуже слабкий? А чи отримаєте ви якесь задоволення? А хтось намагався читати книги по програмуванню із словником? Доки знайдеш потрібний переклад слова, забуваєш, про що йде мова.

Реалізація

Пропоную перевернути все догори ногами. Спочатку вчимо слова і лише після цього приступаємо до перегляду фільмів і читання книжок. Тоді ви дійсно отримуєте задоволення від процесу навчання і вчите саме те, що вам потрібно. Але ж як це зробити враховуючи, що на створення словника на 5000 слів (товстенька книга по програмуванню) потрібно 42 години, а на 1000 слів (середній фільм) — приблизно 8 годин. І знову ж: які слова вчити?

Я спробував реалізувати цю ідею, створивши програму Author’s vocabulary. Процес відбуваєтьсчя наступним чином:

1. Спочатку створюємо базу із словників. В залежності від потреби, можна використати, наприклад, загальний словник, щоб вчити загальновживані значення слів, комп’ютерний словник, щоб вчити англійську в контексті програмування тощо. Крім того, можна самому обирати мову перекладів, що дозволило мені встановити англо-український словник, чого я не міг зробити в жодному згаданому раніше рішенні.

2. Шукаємо текст книги або субтитри до фільму, слова із яких бажаємо вчити. В якості джерела навчання можна брати будь-який текст. До того ж тут з’являється цікава можливість: бажаєте вчити англійську в контексті програмування — берете книгу по програмуванню, медицину — по медицині, тільки починаєте вчити англійську — беріть буквар :). В будь-якому випадку, це дозволяє вам гнучко підбирати тематику і складність навчання. І вчити тільки ті слова, які вам потрібні.

3. Парсимо підготовлений текст. Програма автоматично до кожного слова приєднує із вказаного словника переклад і контекст уживання слова із запропонованого вами тексту.

4. Ну і вчимо. Тут поки що все просто: спочатку ознайомлюємося із значеннями слів, а потім вводимо відповіді з клавіатури або голосовим вводом (з англійською все ок, але Microsoft не всі мови підтримує). Заради забави також реалізував голосове управління у вікні вивчення (поки тільки en-US, en-GB).

5. Вся статистика прикріплюється до словників. Тому ви вільно можете вчити одні і ті ж слова, використовуючи різні джерела. Після того, як ви вивчили конкретне слово, воно відразу позначається як вивчене у всіх пов’язаних вокабуляріях (списках слів, які вам треба вчити). Тому, якщо ви вивчите 3000 слів із однієї книги, при вивченні слів з наступної книги вам треба буде довчити тільки нові слова, що з кожним разом буде займати все менше часу.

Написав я програму на C#+ XAML. База даних: SqlLocalDB 2012.

Це перша програма, яку я вирішив викласти в відкритий доступ. Раніше дистрибуцією програм не займався. Нашвидку створив інсталятор за допомогою ClickOnce, але, як з’ясувалося пізніше, фільтр SmartScreen блокує програму (я так розумію, що це через те, що в мене немає сертифіката видавця). Щоб запустити програму, потрібно знайти маленьке посилання «Додаткова інформація» і там дозволити запуск. Але більшість користувачів відразу лякаються і запитують мене про віруси і шпіонів.

Для тих, хто мені не довіряє, я вирішив викласти код у відкритий доступ.

Ще хочу зауважити щодо словників. В Інтернеті продається все — музика, фільми, книжки, а от більшість добротних словників — шифруються. І це створює певні труднощі для звичайних користувачів, які звикли все отримувати із коробочки: потрібно знайти словник, імпортувати його. Але тим, кому треба, думаю знайдуть потрібні словники, адже вони існують :).

Подальші плани

Звичайно, хотілося би залучити до проекту гарного дизайнера, толкового перекладача, програмістів, купити ліцензію на використання словників Lingvo і інтегрувати їх в програму, портувати програму на мобільні платформи, налагодити синхронізацію між пристроями.

В дійсності навряд чи буду робити із цієї ідеї цукерочку, адже, на жаль, я не маю ні знань, ні досвіду, ні фінансових можливостей для цього. Тому і вирішив поділитися ідеєю зі спільнотою DOU. Як на мене, це класна ідея, і вона має жити.

LinkedIn

25 комментариев

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

Посмотрите на LWT — Learn With Texts.

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

Те слова которые пользователю известны в переводе не нуждаются.

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

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

PS вроде как Olly Richards из iwillteachyoulanguage делал обзор платной веб тулзы наподобие LWT, почитайте, прикиньте насколько это коммерчески выгодно :)

Спасибо за ссылку. Посмотрел. Хотя создать свою рабочую базу за 20 мин у меня так и не получилось, но подход отличается от AV.

В AV тоже можно учить фразы: правда только устойчивые словосочетания и при условии, что вы найдете хороший словарь.

Иероглифы и письмо справа на лево для меня параллельная реальность, поэтому что будет с AV в данной ситуации даже не предполагаю:)

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

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

Большинство отзывов, которые я получил от друзей и знакомых: AV — «сложная и непонятная» программа. Но после знакомства с LWT я понял, что не все так плохо:)

Мысли об извлечении выгоды из своих трудов конечно же и меня посещали, но хорошенько поразмыслив, «жабу» решил задушить:)

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

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

2. Заучивание не знакомых слов перед чтением статьи/книги логичный подход, но слова выбранные из текста должны быть «нормализованы», т.е. глаголы переведены в инфинитивы, существительные во множественном лице к единственному лицу, и тд. Для этого можно использовать программы под общим названнием stemming

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

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

5. Трекинг прогресса обучения. Просто наличие статистики о количестве заученных слов еще ни о чем не говорит, мало знать перевод слова в отрыве от контекста. Хороший трекинг прогресса позволил бы определить, перед тем как приступить к изучению произвольного текста, насколько юзер к нему готов, если кол-во незнакомых слов превышает 20%-30%, то программа могла бы посоветовать взять текст попроще, тем самым позволив избежать потерь времени и усилий.

Пока все)

Спасибо за конструктивную критику, хотя, после того что я услышал от друзей, это еще цветочки:)
Вообще-то, ожидал более жестких замечаний, но сообщество dou оказалось очень снисходительным (наверное из-за того, что я студент:)
1. Изначально, я почти не упоминал о приложении, но редактор DOU «заставила» меня переделать статью в подобном виде, потому что рубрика «DOU-Проектор» предназначена именно для презентации проектов. Возможно, я слишком много внимания уделил проблеме и плохо презентовал приложения — прошу прощения, я не писатель. Да, приложение не затрагивает все области обучения, но воспроизведение слов и распознавание речи в приложении присутствует.
2.Спорить не буду. Но есть другая проблема: если пользователь выучит слово «tell», а в тексте ему встретится «told»? А большинство хороших словарей в переводе указывают, что told — «прош.вр., прич. прош. вр. от tell».
3. Это факт, но я полагаю лучше такое решение, чем ничего. Хотя у пользователя есть возможность скрыть контекст, если уж совсем плохо дело. В целом, все же для работы с приложением нужен определенный уровень знаний (определение части речи, времени) чтобы определить соответствие перевода и контекста, особенно если работать со сложными текстами.
4. А все же стоило бы сначала запустить приложение, если решили покритиковать:). На этапе оценки у пользователя есть возможность или же ввести с клавиатуры изучаемое слово или произнести его — лучших способов автоматизированной оценки знаний я не знаю.
5. Контекст употребления есть. Приложение всего-навсего инструмент, а как им пользоваться это уже зависит от пользователя: если он не зная алфавита сразу попытается заучить слова из книги Б.Страуструпа — на программном уровне здесь не поможешь:)

1. Вообще-то я о том, если описывается программа для заучивания слов, а не обучение «взагали», то о ней и нужно писать в названии
2. Если говорить о глаголах, то они даже в школьном курсе заучиваются в Infinitive, Past and Participle II, конечно если за 30 лет ничего не поменялось))
3. Очевидно мы говорим о разных контекстах, я о том который в target text.
4. Способов много, навскидку — выбрать мышкой из предложенного набора. С произнесением слова не все так однозначно, одно дело слово хеппи, другое ancillary или не дай бог externalization :) есть большие сомнения что MS или гуглток или сири вас поймут.
5. Тут мы опять про разные контексты.

Если вы под «контекстом» имеете в виду значение слова в конкретном случае, то здесь без хорошего преподавателя не обойтись, эта проблема мне не по силам:)
4. Да, вы правы: распознавание речи (MS) работает довольно «сыро», временами даже непредсказуемо:), так что ответ здесь будет таков же, как и выше. Хотя, несмотря на сырость, очень интересная функция. А относительно тестов: из собственного опыта могу сказать, что это здорово поднимает самооценку пользователя, но никак не уровень знаний:). Если же вы напрягли мозг и вспомнили написание или произношение слова, то с большей вероятностью можно сказать что вы знаете слово. Хотя, новое поколение уже разбаловано тестами и, если все же не заброшу работу над приложением, придется удовлетворить этот спрос

А в каком виде должен быть словарь, что бы его импортировать?

Если я вас правильно понял, внутри словаря должно быть что-то вроде:

<k>home</k>
<tr>həum</tr>
<blockquote><dtrn>дом, жилище</dtrn></blockquote>
<blockquote> <dtrn>домашний</dtrn></blockquote>
<blockquote><blockquote><ex>country home — дом в деревне, загородный дом</ex></blockquote></blockquote>
<k>life</k>
<blockquote><dtrn>жизнь; существование</dtrn></blockquote>

*<tr></tr> (транскрипция) и <ex></ex> (пример) — не обязательно
** также могут быть и другие теги, но они игнорируются

А слова берутся вот прямо как есть, я так понимаю, и в таком же виде ищутся в словаре? То есть нет откидывания специфических окончаний/взятия инфинитива и т.п.?

Именно так. За создание какого-то сложного алгоритма определения и обработки словоформ я даже не пытался браться. Вначале была реализация грубого перебора по окончаниям слов типа «-ed», «-ing», «-es», «-s»... Но этот метод давал небольшой процент брака: например из «does» делал «do» и «doe», к тому же возникли сложности в согласовании словоформ с контекстом. Из-за этого решил отказаться от использования этого метода, чтобы не сбивать с толку пользователя, хотя даже несмотря на грубость он давал неплохие результаты.

Я просто сейчас на этапе зародыша с подобным проектом, только меня интересует изучение слов для человека со словарным запасом 5-8 тысяч и выше (для себя), чтобы автоматически отсеять часто используемые слова по открытым таблицам частоты использования слов из инета.
Если взять переводы с multitran парсингом выдачи по HTTP, можно генерировать деки для Anki, учить, потом пытаться смотреть серию/фильм вообще без субтитров, чтобы развивать именно восприятие на слух.
Проблема в том, что слова в этих таблицах частоты использования почти всегда в инфинитиве, и в словаре их лучше всего искать в таком виде. Также проблема в том, что в английском нереально много словосочетаний простых слов с совершенно неожиданным значением. Сейчас изучаю стэнфордский тулкит stanfordnlp.github.io/CoreNLP , там явно есть много готового для решения этих проблем, уже удалось воспользоваться Named Entity Recognition для отсеивания собственных имён. Только я джавой пользуюсь, и тулкит этот на джаве.

В плане «отсева слов»: а не лучше ли вам сделать опцию «Отметить слово как выученное». Хотя я отрицательно отзывался об этой опции, но в вашем случае это будет более простой и надежный вариант (предотвратит попадание незнакомых слов в список выученных).
За ссылку спасибо, интересная тема.

В моём случае, когда в серии порядка 1000 слов, а из них не больше десятка незнакомых, быстрее будет их вручную выбрать и вбить в анки. Но я не люблю что-либо делать вручную, особенно после многих лет работы в промавтоматизации, и мне интересна тема NLP и прочего машин лёрнинга, решил совместить приятное с полезным.

А якщо взяти книгу англійською та російською та читати одночасно, все-таки радять слова вчити в контексті. Тобто по методу Іллі Франка www.franklang.ru, з програмування. веб-дизайну на файлообмінниках можна знайти такі книжки, перших 10-20 сторінок піде тяжко і довго, а далі веселіше... як на мене

Я ні в якому разі не заперечую попередні надбання у цій сфері. А свій погляд висловив тільки як один із варіантів. Якщо вас влаштовує інший спосіб, чому б і не вчити. В принципі, при наявності сильного бажання і наполегливій праці, впевнений, що можна зазубрить навіть старенький друкований словничок і без комп’ютера

В цілому цікава ідея. Але, якщо я правильно зрозумів, треба займатися тільки по текстам, підготовленими спеціалістами, бо кожне речення треба правильно(!) розбити на частини

могу подогнать тестеров, чтоб потестить апликуху

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

Wordsfromtext — практически то же в вебе с полезным плагином для чтения английских текстов в браузере, ведением списка выученных слов, экспортом в memrise и anki.

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

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

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

Хотя идеи одинаковые, но реализация существенно отличается. Есть, конечно, много интересных фич, особенно классно то что все это работает в вебе. Может, я не разобрался, но опять же остаются открытыми вопросы:
— другие направления перевода?
— тематические словари?

К тому же пользователь очень хитрый «зверь»: если ему дать возможность самому выбирать какие слова он уже знает, много слов окажутся в списке выученных не заслуженно:). Я придерживаюсь мнения: если хорошо знаешь слово — на ответ много времени не уйдет, если плохо — повторение не повредит, если считаешь слово не нужным — удали его из списка. Хотя, конечно, есть большой минус в этом подходе для тех, кто уже имеет неплохие знания.

Экспорт тоже очень интересная штука. Изначально я приложения как раз разрабатывал только с целью создавать словари для Lingvo Tutor. Но когда понял, что я теряю контроль над статистикой обучения и получаю кучу мелких неприятностей с отображением переводов, решил написать хоть и простой, но свой собственный модуль тестирования. Без бобров и львов, но я считаю, если я смогу правильно произнести или напечатать слово — этого достаточно.

Там всё жутко заспециализировано на англо-русском переводе.
Другие словари = долгое и муторное лицензирование, пока этим не занимались, насколько я понимаю. Дать пользователю загружать словари значит нарваться на иски про авторские права.
А для заучивания лучше всё-таки специализированные инструменты.

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

Подписаться на комментарии