Идея
Я смотрю большое количество фильмов.После того как уровень английского стал достаточным, чтобы смотреть их с субтитрами на языке оригинала (в 99% случаев это английские), я начал постоянно сталкиваться с проблемой что одно-два слова всплывет которые я не знаю, приходилось лезть в словарь либо переключаться на русские субтитры, что омрачало просмотр. Сначала я подумал что было бы не плохо заранее узнать какие неизвестные мне слова попадутся и заучить их, но впоследствии выяснилось что таких слов для каждого фильма набиралось около 200, что существенно усложняло процесс заучивания. Так я пришел к идее подставления переведенного слова непосредственно во время просмотра фильма. Вышло как-то так:
Я просто брал по 2-3 слова из перевода для каждой части речи, что было совсем плохо для омонимов.Позже мне пришла ну совсем очевидная мысль-определять часть речи по предложению и подставлять нужный перевод. Так я познакомился с nltk и пришёл к чему-то такому:
Что намного увеличило читабильность. Такой текст действительно можно легко словить глазами без необходимости останавливать просмотр.
Реализация
Составление индивидуального словаря
Идею я взял отсюда. Для начала давайте посмотрим, что из себя представляет список слов английского языка, упорядоченных по тому, как часто они встречаются в книгах – вот он.
Составление словаря основывается на предположении что если вы знаете, скажем, слово value, которое находится на 800 в этом списке, то с великой вероятностью вы также знаете слово battle, которое находится уже на 715 месте.
Давайте составим ещё один список, на этот раз состоящий из уникальных слов из одной из прочитанных вами книг, в моем случае «Его прощальный поклон» Конан Дойля, и пересечём его с первым списком.
Если мы попробуем визуализировать это пересечение, то получим вот такую картину:
Как видите, чтобы прочесть эту книгу без необходимости заглядывать в словарь, ваш словарный запас должен состоять из 34 тысячи слов. Если верить этой статье, то даже если вы 68-летний старик из Хэмпшира – вам это сделать не удастся.
В конечном итоге ваш словарный запас будет составлен из такого количества слов из первого списка, которых было бы для покрытия 70% слов из второго списка. Конечно же процент можно увеличить, но, как показала практика в моём случае, то, что я знаю 4% из этой книги, которые попадают в промежуток между 7 и 8 тысячей, совсем не означает, что мне известна вся тысяча. После 70% слишком большой разброс.
Только представьте, сколько нужно книг перечитать чтобы сходу понять о чём идет речь в этом монологе:
Слово кимвал находится на 22015 месте.
Определение части речи по контексту
Тут всё легко, ведь за нас всё делает nltk. Проверяем, знаем ли мы это слово, устанавливаем, какой частью речи оно является в данном контексте, переводим. Главное – не забыть привести существительные к единственному числу, а глаголы к инфинитиву. Конечно, точность определения не такая высокая, ведь это устная речь, да и субтитры часто бывают низкого качества, но процент всё равно довольно высок. На самом деле я использую две библиотеки, но вторая приносит пользу только тогда, когда имеет расхождение с первой. В этом примере nltk посчитала, что в этом контексте guys подразумевается как глагол, тут-то нас и спасла библиотека pattern:
Здесь они разошлись дважды:
Хотел бы сразу сказать что учить таким образом язык не получится, только фильм испортите. Но опять же, цель этой программы в том, чтобы только подсказать вам слово, не более. Если у вас недостаточно большой словарный запас, выглядеть это всё будет как-то так:
Ничего полезного, одни страдания.
Github – внутри описание запуска и установки.
Автор: interstate