Введение
Какую бы мы ни использовали методику изучения иностранного языка, рано или поздно, вопрос упирается в расширение своего словарного запас.
Самый примитивный метод для достижения данного результата – это, просто тупо, учить иностранно-русский словарь. При этом, речь не идет об изучении языка путем запоминания только его слов и их переводов. Здесь присутствует именно желание увеличить свой словарный запас, что совершенно не отменяет грамматику, а, всего лишь, способствует ей.
Многие из нас пробовали этот метод и, весьма вероятно, отказывались от него, как не оптимального.
Если задаться вопросом, в чем именно этот метод неэффективен, то, скорее всего, ответ будет заключаться в бессмысленной перегрузке своего мозга. Он ведь у нас не «железный» и ему подобные «пытки» явно не нравятся.
Хорошо, а если читать слова и переводы, но не стараться запоминать их – это улучшит процесс их усвоения или нет? Большинство, наверняка, ответят – нет.
Однако, не все так очевидно. Эксперименты показывают, что если создать озвученный, желательно «живым» голосом, видео-словарь, упорядоченный по грамматическим категориям иностранных слов и по их русским переводам, а, затем, просто внимательно его смотреть и слушать (буквально, «с открытым ртом»!), без желания что-либо специально запоминать, то тогда, слова усваиваются как бы, сами собой, без явных усилий (рис. 1). Что, конечно, удивляет!

в: https://my.mail.ru/mail/emmerald/video/_myvideo/25.html
или https://dzen.ru/video/watch/69d7e409f2aed02c93b87ff5 .
Конечно, смотреть видео придется не один раз. Но, это будет именно просмотр по желанию, в любое удобное для нас время, безотносительно к другим методам освоения иностранного языка, например, изучения грамматики.
Да, некоторая усталость у мозга, при этом, появляется. Но, ничего страшного! Подустали? – Закончили просмотр, пошли заниматься чем-то более интересным. Отдохнули? – Прекрасно! Продолжили глядеть свой любимый «видосик», с точки останова (у видеопроигрывателя «PotPlayer», есть соответствующие опции в настройках). И так смотрим, до «посинения», то бишь, пока не будем удовлетворены полученным результатом.
Соответственно, вы можете создавать собственные варианты своих видео-словарей и учиться по ним. Ниже будут изложены необходимые сведения для этого.
Источники данных
Отдельно встает вопрос, где брать источник данных? Лучше всего, для этих целей подходят онлайн-словари, желательно, с «живой» озвучкой. Хотя и искусственные голоса, получаемые с помощью TTS, ныне, уже вполне приличные.
Для примера, возьмем французско-русский словарь https://dict.com/французско-русскии/ и попросим перевести слово: «aller». Для него имеются целых две страницы (показаны параллельно на рис. 2-5).




Как видим, данных в этих страницах довольно много и структура их достаточно сложная. Поэтому, безотносительно того, нужны нам все данные или только часть их, достаточно интересным становится вопрос, а как именно эти данные нужно извлечь, чтобы использовать их, с учетом их структуры? Здесь важны не цвет шрифта и его размер, а именно грамматическое структурирование, когда, скажем, вспомогательные слова не смешиваются с основным текстом.
Понятно, что проще всего выделить часть текста в html-странице и скопировать его в буфер обмена. В простых случаях это решает нашу задачу, но в более общем, уже нет (в силу потери значимой структуры).
Чем еще интересен данный словарь, так это наличием «живой» озвучки, причем, звуковые mp3-файлы также можно загрузить, как и текстовые веб-данные.
Исследование структуры html-страниц
Если мы посмотрим «внутренности» выбранной страницы, то увидим две, интересующие нас, таблицы (рис. 6 и 7).


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

Здесь, число 1515 является номером mp3-файла, который можно скачать по ссылке: https://dict.com/audio/fr/1515 . В результате мы получим файл аудио-данных: «fr-001514.mp3» (с номером на единицу меньше)
Теоретически, мы можем скачать звуковые файлы в пределах от «fr-000001.mp3».до «fr-054943.mp3», которые интересны тем, как уже говорилось, что представляют собой живую озвучку. Это хорошо видно по тому, что, примерно, к концу каждой тысячи слов, носительница языка уже начинает «хрипеть». Просто, физически ощущается её «эксплуатация». Похоже, что она вынуждена, за какие-то лишние десяток евро, подвергаться «самоистязанию». Ну, нельзя же так «насиловать» носительниц! Хотя бы ей что-то выпить, лишний раз дали, что ли! Тем не менее, в целом, её работа воспринимается хорошо!
Что касается ссылок на сами страницы, то, как видно из рис. 2-5, в конце URL должно быть указано искомое слово (допустимо добавление номера страницы, если их несколько для одного значения, например: https://dict.com/французско-русскии/aller1 и https://dict.com/французско-русскии/aller2 ).
Формально, можно начать просматривать страницы с произвольного слова, а в его окрестности мы увидим ближайшие, слева и справа, слова для заданного значения. По ним, можно формировать дальнейшие ссылки в выбранном направлении.
Естественно, что если вы будете загружать html-страницы с помощью скриптов, то сайт вас, наверняка, заблокирует, при слишком частых запросах. Можно попробовать выставить паузу, секунд 15, между ними, тогда появится шанс что-то автоматизировать. Хотя, в последнее время, даже простая загрузка страницы в браузере может длиться достаточно долго.
Неочевидный выход может быть в использовании «номерных» ссылок, типа, для данного случая: https://dict.com/ftx?n=389&h=0&set=_frru , где число 389 – это шестнадцатеричное значение для десятичного числа 905. А само это число мы можем видеть в теге «H», на рис. 8. Следующая цифра «5», там означает номер для грамматической формы глагола, что нам не нужно, поскольку, грамматическая форма у нас указана явно (на «листе» «f»).
Однако, само шестнадцатеричное значение можно получить из загруженного html-файла, непосредственно из тега:
<input id="IdxAct" type="hidden" value="0x389"/>
и уже по нему сформировать «номерную» ссылку, указанную выше.
Что удивительно, но html-страниц на этом сайте меньше количества доступных mp3-файлов. Первых только 29866 (если не считать дубликаты страниц, которых несколько десятков – на сайте указывают значение 29.900), а вторых, как было указано выше – 54943. При этом, не все страницы озвучены, только, 18622 из них.
Заметим, что хотя «номерные» страницы загружаются быстрее и легче (наверное, этой «фичей» мало кто пользуется), там отсутствует вторая таблица данных. Если вас это устраивает, то можно экспериментировать с ними. По крайней мере, при создании нашего видео-словаря мы ее не тспольз0овали.
Предварительная обработка данных
Для дальнейшего анализа данных нам надо представить их в более удобоваримом виде, чем на рис. 6-7. Обычно, для подобных целей используют функцию BeautifulSoup.prettify() из пакета Питона bs4, для «красивого» представления html-дерева. Однако эта функция делает отступы только в один пробел и не удаляет лидирующие пробелы в конечных (текстовых) значениях, что приводит к искажению формата данных при их дальнейшем анализе. Проще всего, очевидно, решить эту проблему с помощью следующего алгоритма:
1. Вставить переводы строк, до и после угловых скобок.
2. Удалить лишние строки и крайние разделители в них.
3. Подсчитываем левые угловые скобки со знаком плюс и правые со знаком минус.
4. Вставляем, в соответствии с подсчитанным параметром, в качестве отступов для вложенных уровней дерева, – табуляторы и убираем лидирующие пробелы в тексте (рис. 9).

Здесь, опять же, можно применять, для дальнейшего анализа, функции из пакета bs4 либо аналогичных. Но мы, воодушевленные успехом создания аналога функции prettify(), пойдем по пути использования собственных алгоритмов.
Выбор структуры данных для конечных результатов
Рассматривая структуру дерева на рис. 9, мы видим, что наименования тегов там чересчур длинные. Поэтому, мы ничего не потеряем, если сократим их до минимально коротких аббревиатур и, заодно, вставим необходимые смысловые разделители (рис. 10).

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

В принципе, хотя переводов у слова может быть много, но смысловых групп, обычно, меньше. Их вполне можно понять, прочитав весь «пакет» альтернативных значений.
Можно пойти еще дальше и убрать лишние теги. Смело, удаляем избыточную, для текущей задачи, информацию (в т.ч., устраняя дублирующие слова), например, как показано на рис. 12.

Вот, это уже больше похоже на желаемый результат!
Выгрузка данных в «Эксел»
Текстовый результат – это хорошо, но, как бы, мало. Если более внимательно посмотреть на структуру данных, на рис.10, то можно выделить в словарной статье, как минимум четыре группы:
a) Ключевое слов вместе с простыми словами – переводами.
b) Короткие фразеологизмы (показаны после разделительных точек)
c) Более длинные фразы (показаны после разделительных дефисов)
d) Примеры использования (показаны после разделительных знаков равенства).
Наверное, имеется смысл обрабатывать эти данные раздельно. Если, рассмотреть часть a) словарных статей, из исследуемого онлайн-словаря, то можно выделить 29285 записей (некоторые слова оказалось без переводов, поскольку, они являются частью стандартных фраз, вроде abord : «(tout) d'abord – прежде всего»).
Конечно, это очень много для непосредственного освоения. Поэтому, ограничимся, например, глаголами и, заодно, упорядочим их, в «Экселе», по алфавиту, но не по ключевым словам, а по переводам (рис. 13). Такой формат, теоретически, можно использовать как прототип «Эксел-книги».

Здесь, мы делаем для себя еще одно маленькое открытие. Оказывается, восприятие французских слов, таким образом, немного упрощается. Ибо русские лова мы знаем, и они служат хорошей точкой опоры для запоминания их французских эквивалентов. Хотя, при желании, можно использовать другие критерии отбора и сортировки данных.
Второй неожиданный момент, это способность «Эксел» быть «динамической книгой» для наших данных. В прошлой статье ( https://habr.com/ru/articles/982660/ ), мы использовали «html-книги», но, там данные, по факту статические, Встроенный, в «TotalCommander», которым мы пользуемся, html-просмотрщик не позволяет ни увеличивать масштаб, ни менять формат данных, ни сортировать их, ни запоминать текущее состояние. Все это, конечно, можно делать «снаружи», однако, «Эксел» позволяет это делать «изнутри». Ну, а сами данные для «Эксел-книг» мы можем выбирать произвольно.
Для частей b) – d) словарных частей, мы имеем следующие представления (рис. 14-16).



Как видим, у них похожая структура, поэтому эти данные можно объединить. На сайте указано, что подобных фраз порядка ста тысяч, но, на самом деле, их в несколько раз меньше. Просто, одна и та же фраза может приводиться, в качестве примера, для разных ключевых слов. Кроме того, переводы хотя и могут отличаться, но, чисто формально, но быть эквивалентными, по сути. Что может потребовать ручной правки данных.
Короткие аббревиатуры тегов, показанные на рис. 10, хотя и делают структуру данных более обозримой, однако, при конечной очистке данных, нюансы все равно будут. Это и наличие артефактов или «мусорных» данных и «плавающая», да и просто её избыточная сложность. Например, мы сократили до минимума порядка 40 тегов, а фактически использовали из них, в своей очистке, только несколько.
Поэтому, для качественного извлечения данных можно пойти либо по пути глубокого вникания в их структуру либо, руководствуясь больше интуицией, чем логикой, делая простое удаление заданных подстрок и замену одних значений на другие.
Мы выбрали более простой вариант, хотя и менее надежный. Тем не менее, для первой части словарных статей, он оказался вполне удовлетворительным. Что касается обработки остальных частей словарных статей, то мы занимались ими индивидуально. Определенный результат получен, хотя и требует некоторой ручной доводки до «товарного» вида. Однако, «шлифовку» фраз можно оставить на потом и пока заняться озвученной первой частью. Таковых в нашем словаре – более 18 тысяч. На первое время – вполне хватит!
Таким образом, мы ограничимся, в данном случае, озвученными данными из первой части словарных статей, для создания соответствующего видео-словаря.
Создание видео-словаря для озвученных французских глаголов
В нашем случае, мы имеем около 3000 озвученных глаголов и порядка полутора тысяч – не озвученных. Поскольку, нам понравилась идея сортировать словарные статьи по их переводам, то можно разделить эти озвученные глаголы на пакеты, скажем, по 500 слов и создавать для них отдельные видео (первое показано на рис. 1).
Заметим, что количество переводов у глаголов, может быть разным. Например, глаголы «descendre» и «étouffer» имеют по 18 значений перевода, а глагол «battre» – 17. Однако смысловых групп, как уже упоминалось, там явно меньше (рис. 17, сравните, с рис. 13).

Для создания видео-словаря, мы можем использовать следующий алгоритм действий:
1. Готовим таблицу озвученных глаголов (в формате «Эксел»), упорядоченных по грамматической категории и русским переводам (рис. 13).
2. Выбираем оттуда, например, пятьсот записей.
3. Готовим объединенный mp3-файл, для используемых там французских слов, так, чтобы между словами была пауза, допустим, три секунды, что вполне достаточно для первого знакомства со словарной статьей.
4. В звуковом редакторе, типа, «Audacity», делаем автоматическую разметку звуковых интервалов.
5. Эту разметку и выбранные словарные статьи используем для создания ssa-файла субтитров, для видеопроигрывателей, типа, «PotPlayer». Сами исходные данные собираем тоже в формате «Эксел» (рис. 18). Из этого файла копируем, через буфер обмена, данные (первые 500 записей) в соответствующий текстовый файл, без первой колонки (не забываем, что реальный номер звукового файла – меньше на единицу, чем указанный в html-странице).
6. Для создания, собственно, видео, выбираем подходящую картинку и объединяем ее с объединенным mp3-файлом. Для этих целей, хорошо подходит утилита «FFMpeg».
7. Размещаем рядом созданные mp4- и ssa-файлы, с одинаковыми именами, например: «FrRuVerbs01.mp4» и «FrRuVerbs01.ssa». Запускаем видео, смотрим и слушаем его внимательно («с открытым ртом») и так, до «посинения», пока вы будете видеть в этом смысл.
8. При желании, внешние субтитры можно сделать внутренними, путем «прожига» ssa-файла в mp4-файле (с помощью утилиты «FFMpeg»).
Заметим, что в первой строке, на рис. 18 мы указали данные для титульного кадра нашего видео (рис. 1).. Про работу, в звуковом редакторе «Audacity», мы, в какой-то мере, уже говорили в прошлых статьях, но, можно поискать информацию по получению звуковых интервалов (у нас это переменные T1 и T2) в Интернете.

Исходные демо-данные и рабочие скрипты
Поскольку полный набор html- и mp3-файлов из исследуемого онлайн-словаря слишком велик, то для демонстрации работы скриптов, мы ограничились всего лишь несколькими веб-файлами, расположенных в двухуровневом каталоге Html, в архиве программы FrRuVideo.zip : https://disk.yandex.ru/d/1RLdSX-UvQKb-A .
Для обработки имеющихся html-файлов, достаточно запустить командный скрипт: FrRuDict.cmd. В нем имеется краткое описание используемых файлов.
Для создания (тестового) видео (рис. 19) используется готовый файл FrWords_44100_stereo.mp3 из субкаталога архива. Чтобы создать его самому нужно загрузить соответствующие mp3-файлы из онлайн-словаря (обратим внимание, что они в формате «mono», с частотой 22050).

Формально, для создания видео, нужно запустить командный файл Video.cmd (в нем приведены некоторые подробности). Для этого дан прототип используемого файла «Эксел» (FrRuDictCom.xls) и полученные из него данные для формирования субтитров в файле SsaData.txt.
Объяснить все нюансы довольно трудно, просто, поэкспериментируйте с архивом, возможно, что-то получится, по крайней мере, на тестовых данных.
SSA-формат субтитров довольно продвинутый, с его помощью можно решать многие свои задачи. Но, подробности, как всегда в подобных случаях, нужно искать в документации.
Выводы
Идея использования видео для создания обучающих данных, довольно эффективная. Естественно, при собственной реализации, у вас могут возникнуть другие идеи, например, применить искусственную озвучку для «немого» (в используемом словаре) текста или, там, отбирать данные по другим критериям. Здесь мы ограничены только имеющейся фантазией.
Кроме, условно говоря, озвученных «видео-книг» можно использовать «Эксел-книги», как ранее мы пытались применять, для целей самообучения, «html-книги» с различным, двуязычным текстом. С учетом возможностей описанных технологий, мы можем получать новые знания так, как нам нравится.
Более того, этот формат работы позволяет готовить данные для обучающей программы «L'école» (описанной, в моих предыдущих статьях), например, для режима «Экзамен», чтобы проверить свой уровень владения запомненными словами.
