Русский
Русский
English
Статистика
Реклама

Иностранные языки

Из песочницы Дедуктивный метод в преподавательской и аналитической работе

15.08.2020 00:07:43 | Автор: admin

Что такое дедукция?


Дедукция это логически правильный вывод из уже имеющегося знания или из уже имеющихся мыслей. Выводы, построенные с помощью дедукции, изучает наука логика. Натуральная дедукция в логике использует правила, которые близки тому, как рассуждает человек, поэтому она так и называется ''натуральная дедукция. Дедукция применяется в повседневной жизни, а также в преподавательской и аналитической работе.

image

Пример дедуктивного рассуждения в логике


Дедукция известна со времен Аристотеля. Именно Аристотель рассматривал умозаключения с посылками и выводом.

Пример дедуктивного умозаключения:

Все люди смертны.
Сократ человек.
Следовательно, Сократ смертен.

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

Применение дедуктивных рассуждений в повседневной жизни


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

image

Представим, как бы рассуждал сыщик. Допустим мы находимся вне города и видим человека, который несёт рыбу.

Исходное знание человек несет рыбу. Далее наше рассуждение выглядит так. Мы можем предположить, что, первое, человек купил эту рыбу в магазине. Но магазина рядом нет, так что скорее всего он взял рыбу у кого-то или поймал ее сам. Если человек поймал рыбу сам, то тогда у него должно быть удочки с собой. Но удочки у него нет. Тогда, возможно, удочка осталась на берегу или у него вовсе не было удочки. Если у этого человека нет удочки вовсе, то он взял рыбу у кого-то. Сыщику достаточно будет посмотреть, нет ли на берегу удочки. Если она есть то этот человек сам выловил рыбу. Если ее нет, то человек взял у кого-то эту рыбу.
Это пример дедуктивного рассуждения: есть исходное общее знание, и далее мы рассматриваем частности и детали.

Пример дедуктивного рассуждения при принятии решения


image

У Андрея сейчас уровень английского языка чуть ниже среднего. Он хочет достичь среднего уровня английского языка (B1) через 3 месяца. Рассмотрим рассуждения Андрея.
Если я буду заниматься самостоятельно, то мне нужно будет самому искать учебные материалы, упражнения и выполнять задания без проверки преподавателя. Тогда я должен буду запланировать 3 часа в день на занятия английским, чтобы через 3 месяца достичь уровня B1.

Если я буду заниматься с преподавателем 2 раза в неделю, то тогда мне не нужно искать учебные материалы, упражнения, и преподаватель будет проверять мои задания. В этом случая я должен запланировать 2 часа в день на занятия английским языком, чтобы через 3 месяца достичь уровня B1.

Заниматься самостоятельно или заниматься с преподавателем


Заниматься самостоятельно

Запланировать 3 часа на занятия английским языком в день.
Я достигну уровня B1 через 3 месяца.

Заниматься с преподавателем

Запланировать 2 часа в день на занятия английским языком.
Я достигну уровня B1 через 3 месяца.

Я достигну уровня B1 через 3 месяца.

Как дедуктивный метод помогает в жизни?

  1. Цель определяется заранее.
  2. Рассматриваем варианты того, как вы ее можете достигнуть.
  3. На принятие решения не оказывают влияние эмоции.
  4. На принятие решения не оказывают влияния советы третьих лиц.
  5. Вы сами выбираете направление, которое вам позволит прийти к цели.
  6. Вы можете выбрать наиболее экономичное (в денежном или время затратном плане) решение.

image

Применение дедуктивного метода в преподавании и аналитической работе


Дедуктивный метод в преподавании основывается на объяснении с помощью правил. Вначале идет презентация правил, а потом следуют примеры употребления этих правил и упражнения на их отработку.

image

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

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

Когда начинается занятие по грамматике, после некоторого вступления, приветствия, преподаватель сначала объясняет правило использования той или иной грамматической конструкции, потом приводит примеры использования, и дает студентам упражнения на применение этого правила.

Применение дедуктивного метода в когнитивно-поведенческой психологии


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

image

Когда клиент приходит на первую сессию к психотерапевту, то ему не известны суть и особенности проведения консультаций у психотерапевта, работающего в этом направлении. Психотерапевт сначала объясняет специфику когнитивно-поведенческой терапии, рассказывает, как убеждения влияют на эмоции, а потом уже терапевт задает задание на применение и отработку определенных правил выявления когнитивных искажений.

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

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

Недостатки дедуктивного подхода


Рассмотрим на примере использования этого метода в преподавании иностранного языка.

  1. Начинать урок с презентации грамматики может быть трудоемким и сложным для некоторых студентов, особенно начального уровня. Они могут не знать специфической терминологии для объяснения грамматики. Кроме того, они могут не понимать некоторые более простые грамматические конструкции.
  2. Объяснение грамматики переводит центр внимания на преподавателя, тем самым уменьшая количество времени, которое можно использовать на взаимодействие студентов друг с другом. Тем самым, не уделяется основное время урока на отработку навыков общения и использование языка в речи.
  3. Объяснение не так хорошо воспринимается, как другие формы презентации материала, как например наглядная демонстрация.
  4. Такой подход может внушить студенту мысль, что знание языка это просто знание некоторого набора правил.

Дедуктивный метод имеет множество преимуществ, рассмотрим некоторые из них.

Преимущества дедуктивного метода


  1. Он сразу достигает поставленной цели, и поэтому может быть экономным в плане финансовых затрат. Многие правила, в особенности правила грамматической формы, может быть просто и быстро объяснено, затем выявляться из примеров. Это дает больше времени на практику и применение правил.
  2. Дедуктивный метод признает знания и зрелость студентов, а также роль когнитивных процессов в освоении языка.
  3. Он оправдывает ожидания многих студентов от процесса обучения, в особенности тех студентов, у которых аналитический стиль изучения нового материала.
  4. Он позволяет преподавателям иметь дело с различными особенностями языка в процессе урока вместо того, чтобы предполагать заранее те вопросы, которые могут возникнуть и готовиться к ним до урока.

Литература:

Thornbury S. How to Teach Grammar. Pearson Education Limited, 1999
Johan van Benthem, Hans van Ditmarsch, Jan van Eijck, Jan Jaspars. Logic in Action, 2016
Фотографии взяты из открытого источника www.pexels.com
Подробнее..

Мои статьи в видеоформате

04.03.2021 22:20:04 | Автор: admin

Дошли наконец-то руки, записал для тех, кому так удобнее:https://www.youtube.com/channel/UCL1YPFdAqbyR2N-LeYIbW1A/videosВ ближайшие дни появятся ещё видео. Под последними отличная новость для москвичей.

Статьи эти плод 8 лет теоретической и практической преподавательской работы. Взвешивал каждое слово, чтобы через минимум текста передать то, что НЕОБХОДИМО знать каждому, кто изучает иностранные языки. Одно из самых важных про развитие навыка говорения.

Подробнее..

A lie can travel halfway around the world while the truth is putting on its shoes

24.03.2021 22:11:36 | Автор: admin

Самые бредовые, несовместимые с реальностью представления об изучении иностранных языков у людей, хорошо ими владеющих. У переводчиков, например. Парадокс, да? Нет.

Почти везде языки дают очень плохо, и реально выучивают их только люди с хорошими способностями. Для обучения таких людей не требуется никакого преподавательского мастерства или специальных приёмов. Они воспримут любой способ преподавания. Что-то сами додумают. Но таких максимум 5-10%. Остальные, включая толковых людей с хорошим образованием, становятся жертвами мифов, распространяемых маркетологами языковых школ.

Всю свою преподавательскую карьеру я боролся с этими мифами с помощью статей. Тратил сотни человекочасов, пытаясь сформулировать МАКСИМАЛЬНО коротко. Убивал по полдня (!), придумывая, как сократить абзац хотя бы на одну строчку без потери смысла. Радовался, когда удавалось удалить даже одно лишнее слово. Фильм (сборник лекций) результат этой многолетней работы.

Подробнее..

Чудеса имён матерей, или Почему в русском так странно склоняются некоторые существительные

07.06.2021 20:11:26 | Автор: admin

Есть небольшой список странных русских слов, у которых форма именительного падежа единственного числа сильно отличается от форм других падежей. Сразу возникают вопросы: Где унификация? Почему так неудобно? Откуда это вообще взялось?

Если посмотреть на некоторые существительные, которые есть в современном русском, то заметна тенденция: (1) мать матери, дочь дочери; (2) тело телеса, небо небеса, чудо чудеса, имя имена, время времена, племя племена, семя семена.

Для того, чтобы проследить возникновение этих форм, необходимо окунуться в историю русского языка примерно на уровень старославянского, древнейшие памятники которого датируются X-XI веками, и заметить связь славянских языков с латынью и древнегреческим.

(1) Существительные женского рода с основой на *-r. Мать и дочь прямые потомки древнегреческих существительных и , которые очевидно заканчивались на -r. Мы можем встретить то же слово мать и в других индоевропейских языках, ср. литовское mte, латышское mate, латинское mter, ирландское mthir, древне-исландское mer.

Как из *матер- получилась мать? Здесь, так же как и в других примерах, работает так называемый Закон Открытого Слога (ЗОС).

Закон Открытого Слога постулирует, что для древнейшего периода существования старославянского языка (и других славянских языков) была характерна такая структура слова, при которой все слоги были открытыми, т.е. заканчивались на гласные звуки. И в силу этого закона те слоги, которые первоначально в праславянском языке были закрытыми, подвергались изменениям, которые и приводили к появлению открытых слогов.

Таким образом, конечное -р в словах *матерь и *дочерь отпало, что привело сначала к формам мати и дъшти, а потом и к привычным мать и дочь.

(2) Существительные среднего рода с основой на *-s и *-n тоже претерпели изменения, вызванные Законом Открытого Слога.

Возьмём для примера существительные слово и имя.

Слово словесе, им имене. Так выглядели формы именительного и родительного падежей единственного числа в старославянском языке. Исторические основы здесь оканчивались на согласный, однако именительный падеж представлял собой чистую основу, без окончаний, что приводило в действие ЗОС, под влиянием которого конечный согласный либо просто отпадал (слово), либо превращал предшествующий гласный в носовой (им /имен/). А дальше носовые гласные были утрачены (которые, кстати, сохранились в современном польском), и звук, изображавшийся буквой юс малый , стал неотличим от /а/ после мягкого согласного.

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

Подробнее..

Просто возьми интеграл

17.06.2021 18:06:38 | Автор: admin

Как учить английские слова: неочевидное о вероятном

На вопрос Как учить слова? мы чаще всего получаем в ответ указание, где их взять, эти слова, и какие именно слова надо учить. Например, из сериалов и клише разговорной речи. На вопрос Как? еще отвечают: повторяй вслух за героями сериала, делай карточки в квизлете, лепи стикеры со словами на стену, приделывай суффикс - tion, придумывай ассоциации к английским словам. Наконец, самый любимый ответ препода - просто возьми и выучи.

Просто возьми интеграл! Просто возьми интеграл, просто почини мой компьютер, просто построй дом, запусти ракету на земную орбиту... Вот тебе список и перевод, учи.

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

Лайфхаков полно, и многие из них, в принципе, рабочие. Вопрос в том, что понимается под учить слова.

Возьмём за основу утверждение: рассказать о 100 фразах не равно научить 100 фразам. Равно как и прочитать 100 слов не равно выучить 100 слов. Вот так просто, да. Не равно, не равно, не равно - даже если очень хочется.

Для того, чтобы понимать, как что-то делается, надо определить границы этого самого что-то. Предлагаем небольшой тест, который поможет в этом нелегком деле. Что значит выучить слово? Варианты ответа:

а) знать, что слово значит

б) знать, как слово употреблять

в) узнавать слово в речи/на письме

г) активно слово употреблять

д) всё из вышеперечисленного

Не важно, что думают преподы (как правило под выучить всё же подразумевается вариант д), важно, что очень часто заинтересованным в расширении своего словарного запаса людям предлагают только а. Реже говорят о б или в, практически никогда о ги тем более - д.

Есть ли смысл в том, чтобы знать только перевод некой языковой единицы и больше ничего? Смысл есть, но он очень небольшой, - знать перевод не значит уметь употреблять слово.

Если согласиться с тем, что выучить познакомиться, то дышать становится легче. Следующий логичный вопрос: а как учить-то? Отложите копировальные машинки, лайфхаки будут позже и совсем немного, потому как мы считаем, что карточки, приложения и иные хитрые способы мало что значат без осмысленного подхода. Мы пойдём другим путём.

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

Из этого тезиса следуют два важных момента:

  1. 100 слов за месяц и всё такое прочее - не работает

  2. выучить один раз и запомнить навсегда - не получится

Наша мысль такая: когда мы учим слова, мы работаем НЕ на результат. Если мы выучим 10 слов и больше никогда к ним не вернемся, то мы их забудем. Если мы вернемся к забытым словам, напереворачиваем с ними карточек, а потом опять забросим - мы мало что удержим в памяти. Для нашего мозга - забытые слова всё равно что абырвалг, он их не воспринимает как смыслы. Абырвалг, мутабор, consciousness - мозгу всё едино. Поэтому отбросим всякую надежду на результат. А что же останется? Процесс.

Вот именно это и есть изучение слов - это фон, долгоиграющий проект, одним словом - процесс, притом процесс нелинейный. Вы регулярно погружаетесь в некое облако слов, которое - внимание! - создаёте себе сами. Тут найдут себе применение всевозможные приложения и платформы с карточками и упражнениями, типа Quizlet, Anki, Brainscape -их много. Важно: создание облака - дело рук изучающего. Ничего, что делается бесплатно и/или кем-то другим, вам не пригодится и пользы не принесёт. Сами, всё сами.

А как же система? А её нет. У облака нет границ, структуры и определённости. Напоминаем: у вас нет цели, нет результата, которого надо достичь, есть только процесс и регулярное повторение практически одного и того же. Вы учите те слова, которые вам необходимы, нравятся, важны - нужное подчеркнуть, причём учите каждый день. Ну ладно, можно через день.

Понятно, что при таком подходе ни о каких 100 словах за месяц не может быть и речи. Но зато не нужно заучивать наизусть! Писать диктанты, пытаться запомнить всё до последней буковки - это тоже разрешите себе не делать. Позвольте себе забывать слова, догадываться об их значениях без точного перевода и расширять таким образом пассивный словарный запас. Вы, кстати, знали, что активный словарь - это только 10% от всей массы слов в нашем запасе?

Такой подход ещё и обеспечит гибкость в выборе техник. Читать любимую литературу и выделять интересные слова? Да, заверните два. Запоминать слова тематически, ассоциативно, при помощи стикеров на предметах обихода? Легко. Создавать языковые сценарии взаимодействия с миром и населяющими его индивидами? Без проблем. Попробуйте все известные вам техники, выкиньте на помойку те, что вам не подходят, и учите так, как удобно вам.

А по сколько слов в месяц - 10, 16, 20, 36, 38, 40 или 158 - это абсолютно не важно.

Одно из чисел в предыдущем предложении - это количество грамматических времён по версии Майкла Халлидея, "Introduction to Functional Grammar".

Подробнее..

Сам себе Гутенберг. Часть 2. Делаем многоязычные параллельные книги

02.06.2021 20:09:34 | Автор: admin

Lingtrain parallel books article cover


В прошлый раз мы с вами научились делать параллельные книги и сделали русско-английский вариант отрывка романа Харпер Ли "Убить пересмешника". Сегодня мы сделаем следующий шаг и создадим полноценную многоязычную книгу на восьми языках.


Напомню, что целью этого проекта является создание инструмента, который поможет людям, изучающим и преподающим иностранные языки, создавать учебные материалы и параллельные книги для улучшения навыков чтения. Глобальная проблема состоит в том, что трудно найти интересный для изучения материал с параллельным переводом, тогда как найти книгу в оригинале и ее русскую редакцию по отдельности гораздо проще.


Сначала сделаем семь книг


Проделаем все на примере романа Булгакова "Мастер и Маргарита", потому что он очень популярен в мире и был переведен на множество языков. Я нашел его версии на английском и немецком (германские языки); белорусском, чешском и украинском (славянские языки); а также на венгерском и китайском языках. Все семь текстов мы выровняем с русским оригиналом, получим семь книг. Затем выровняем их между собой и получим возможность выбирать любые комбинации языков для своей книги в любом порядке. Полные версии книг можно будет скачать в формате pdf в конце статьи.


Начнем с пары венгерский-русский.


hungarian


Шаг 1. Подготовка текстов


Кратко напомню основные правила подготовки текстов (подробнее смотрите в первой статье, ссылку найдете ниже).


Правила


  1. Удалить заведомо лишние строки (информацию об издателе, посвящение, номера страниц, примечания).
  2. Проставить метки для автора и названия.
  3. Проставить метки для заголовков (H1 самый большой, H5 самый маленький), количество заголовков в текстах должно быть одинаковым.
  4. Убедиться, что в тексте нет строк, которые кончаются точкой и при этом не являются концом абзаца (иначе целый абзац разобьется в этом месте на два).

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


Метки


Язык разметки представляет из себя набор меток, которые ставятся в конце предложения:


Метка Значение Установка
%%%%%title. Название произведения Вручную
%%%%%author. Автор Вручную
%%%%%h1. %%%%%h2. %%%%%h3. %%%%%h4. %%%%%h5. Заголовки Вручную
%%%%%divider. Разделитель Вручную
%%%%%. Новый абзац Автоматически

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


Текст


В результате должны получиться тексты, похожие на следующие:


Мастер и Маргарита%%%%%title.М.А. Булгаков%%%%%author.ЧАСТЬ ПЕРВАЯ%%%%%h1.Глава 1%%%%%h2.Никогда не разговаривайте с неизвестными%%%%%h2.Однажды весною, в час небывало жаркого заката, в Москве, на Патриарших прудах, появились два гражданина. Первый из них, одетый в летнюю серенькую пару, был маленького роста, упитан, лыс, свою приличную шляпу пирожком нес в руке, а на хорошо выбритом лице его помещались сверхъестественных размеров очки в черной роговой оправе. Второй  плечистый, рыжеватый, вихрастый молодой человек в заломленной на затылок клетчатой кепке  был в ковбойке, жеваных белых брюках и в черных тапочках.   ...



MIHAIL BULGAKOV%%%%%author.A MESTER S MARGARITA%%%%%title.ELS KNYV%%%%%h1.ELS FEJEZET%%%%%h2.Ne lljunk szba ismeretlenekkel%%%%%h2.Egy meleg tavaszi estn, az alkonyat rjban, a Patriarsije Prudin kt frfijelent meg. Az egyik negyvenves forma, kvrks, alacsony, kopasz feketeemberke, szrke nyri ltnyt viselt, elegns kalapjt kezben tartotta, gondosanborotvlt arct istentelen nagy mret, fekete csontkeretes ppaszem kestette.Trsa jval fiatalabb s vllasabb volt nla, borzas hajn tarkjig htratolt kockssapka; ltzke kocks sportingbl, gyrtt fehr nadrgbl, fekete szandlblllt....

Количество меток одного типа должно быть одинаковым среди всех текстов. Иначе где-то будет номер и название главы, а где-то нет. После того как мы приготовили тексты, переходим к выравниванию.


Шаг 2. Выравнивание


Как и в прошлый раз, выравнивать будем библиотекой lingtrain-aligner. Код открыт, так что приглашаю в репозиторий.


Попробовать в Colab


Чтобы попробовать выровнять свои тексты без написания кода используйте вот этот Colab блокнот, который мы использовали в прошлый раз. В нем есть инструкции и некоторые комментарии к процессу. В конце можно будет скачать получившуюся двуязычную параллельную книгу как html страничку.


Попробовать локально


pip install lingtrain-aligner

Сначала немного служебного кода:


# Импортируем необходимые модулиfrom lingtrain_aligner import preprocessor, splitter, aligner, resolver, reader, vis_helper# Подготовленные тексты для выравниванияtext1_input = "master_hu.txt"text2_input = "master_ru.txt"with open(text1_input, "r", encoding="utf8") as input1:text1 = input1.readlines()with open(text2_input, "r", encoding="utf8") as input2:text2 = input2.readlines()# Путь до самого главного файла, в котором будет содержаться вся информация о выравниванииdb_path = "master_hu.db"# Определим языки (важно для разбиения на предложения)lang_from = "hu"lang_to = "ru"# Выберем модельmodels = ["sentence_transformer_multilingual", "sentence_transformer_multilingual_labse"]model_name = models[0]# Добавим метки абзацевtext1_prepared = preprocessor.mark_paragraphs(lines1_prepared)text2_prepared = preprocessor.mark_paragraphs(lines2_prepared)# Разобьем тексты на строкиsplitted_from = splitter.split_by_sentences_wrapper(lines1_prepared, lang_from, leave_marks=True)splitted_to = splitter.split_by_sentences_wrapper(lines2_prepared, lang_to, leave_marks=True)

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


Создадим файл для выравнивания. Это SQLite база данных, которую мы заполним входными данными, для дальнейшей обработки.


aligner.fill_db(db_path, lang_from, lang_to, splitted_from, splitted_to)

Чтобы выровнять первую тысячу строк, выполним следующую команду:


batch_ids = range(10)aligner.align_db(db_path,                 model_name,                 batch_size=100,                 window=60,                 batch_ids=batch_ids,                 save_pic=False,                embed_batch_size=25,                 normalize_embeddings=True,                 show_progress_bar=True                )

Произойдет следующее мы запустим процесс выравнивания (детали смотрите в предыдущей статье), для 10 отрезков (batch_ids их номера) по 100 предложений (параметр batch_size). Параметр window задает "перехлест" между этими кусками, чтобы наверняка захватить целевые предложения. В данном случае этот параметр довольно большой, потому что на протяжении всей книги наша "ось выравнивания" может довольно значительно отклоняться.


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


Визуализация


Теперь у нас есть возможность посмотреть на результат первичного выравнивания при помощи модуля vis_helper:


vis_helper.visualize_alignment_by_db(db_path,            output_path="alignment_vis.png",            batch_size=100,            size=(800,800),            lang_name_from=lang_from,            lang_name_to=lang_to,            batch_ids=batch_ids,            plt_show=True)

Lingtrain parallel books


В параметр batch_ids мы передали те же номера батчей, что и при выравнивании. Если не передавать ничего, то получим картинки для всех данных.


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


Теперь необходимо поставить на место выбросы.


Разрешение конфликтов


Механим разрешения конфликтов заключен в модуле resolver. Подробнее о нем, опять же, смотрите в предыдущей статье. Скажу лишь, что он находит промежутки между удачными отрезками выравнивания, и пытается подобрать для этих промежутков подходящий вариант разрешения. Соответственно, параметрами мы можем задавать минимальную длину хорошей цепочки и максимальную длину для конфликта. На практике, хорошо работает такой подход трижды проходим по всему выравниванию с постепенным увеличением максимальной длины конфликта:


steps = 3batch_id = -1 #пройти по всем батчамfor i in range(steps):    # Найти конфликты    conflicts, rest = resolver.get_all_conflicts(db_path, min_chain_length=2+i, max_conflicts_len=6*(i+1), batch_id=batch_id)    # Показать какие конфликты найдены    resolver.get_statistics(conflicts)    resolver.get_statistics(rest)    # Разрешить конфликты    resolver.resolve_all_conflicts(db_path, conflicts, model_name, show_logs=False)    if len(rest) == 0:        break

В конце могут остаться единичные конфликты. Если такие есть, то добиваем их:


# Найти конфликтыconflicts, rest = resolver.get_all_conflicts(db_path, min_chain_length=2, max_conflicts_len=20, batch_id=-1)# Показать какие конфликты найденыresolver.get_statistics(conflicts)resolver.get_statistics(rest)# Разрешить конфликтыresolver.resolve_all_conflicts(db_path, conflicts, model_name, show_logs=False)# Визуализировать выравниваниеvis_helper.visualize_alignment_by_db(db_path,            output_path="alignment_vis.png",            batch_size=100,            size=(800,800),            lang_name_from=lang_from,            lang_name_to=lang_to,            batch_ids=batch_ids,            plt_show=False)

Lingtrain parallel books


Цикл


Мы выровняли часть книги. Для продолжения выполним те же дейсвтия, но с другими батчами. Возьмем следующие 4000 строк. Мы выравнивали 10 кусков по 100 предложений, поэтому выполним следующую команду:


batch_ids = range(10, 50)aligner.align_db(db_path, \                model_name, \                batch_size=100, \                window=60, \                batch_ids=batch_ids, \                save_pic=False,                embed_batch_size=25, \                normalize_embeddings=True, \                show_progress_bar=True                )

После выравнивания этого куска (это займет чуть больше времени, на моем компьютере это около пяти минут) переходим к разрешению конфликтов, как было описано выше. Затем дальше, задавая новый диапазон строк. Так как предложений на венгерском у нас 9460, а разбитие идет по первому из заданных текстов, то батчей по 100 предложений у нас будет 95 штук.


Если задать диапазон


batch_ids = range(50, 100)

то мы выровняем остаток (вторую половину) книги. После разрешения всех конфликтов у нас останется файл master_hu, содержащий в себе венгерско-русскую версию "Мастера и Маргариты".


Шаг 3. Создание двуязычной книги


Теперь, если мы воспользуемся модулем reader, то сможем сгенерировать русско-венгерскую редакцию книги:


from lingtrain_aligner import reader# Читаем из абзацы и метаданныеparagraphs_from, paragraphs_to, meta = reader.get_paragraphs(db_path, direction="from")# Создаем html с нашей книгойreader.create_book(paragraphs_from, paragraphs_to, meta, output_path = "lingtrain.html")

Параллельная книга на венгерском


Это обыкновенная html страничка со встроенными стилями. Для визуализации связей между предложениями можно задавать стили. Например, такой:


reader.create_book(paragraphs_from, paragraphs_to, meta, output_path = f"lingtrain.html", template="pastel_fill")

Параллельная книга на венгерском


Можно задавать свои стили, они будут применены к предложениям каждого абзаца циклически:


# Любые применимые к span'ам стилиmy_style = [    '{"background": "linear-gradient(90deg, #FDEB71 0px, #fff 150px)", "border-radius": "15px"}',    '{"background": "linear-gradient(90deg, #ABDCFF 0px, #fff 150px)", "border-radius": "15px"}',    '{"background": "linear-gradient(90deg, #FEB692 0px, #fff 150px)", "border-radius": "15px"}',    '{"background": "linear-gradient(90deg, #CE9FFC 0px, #fff 150px)", "border-radius": "15px"}',    '{"background": "linear-gradient(90deg, #81FBB8 0px, #fff 150px)", "border-radius": "15px"}'    ]reader.create_book(paragraphs_from, paragraphs_to, meta, output_path = f"lingtrain.html", template="custom", styles=my_style)

Параллельная книга на венгерском


Выравниваем остальные книги


Таким образом, повторяя третий шаг для остальных текстов, мы получим помимо файла master_hu.db остальные шесть. Отмечу некоторые трудности, с которыми я столкнулся (и, вероятно, столкнетесь вы, когда будете выравнивать свою книгу).


Большая разница в количестве предложений


В английской редакции большое количество предложений в диалогах было переведено как отдельные части, тогда как в оригинале это была прямая речь.


1.  Фу ты черт!  воскликнул редактор,  ты знаешь, Иван, у меня сейчас едва удар от жары не сделался!2. - Даже что-то вроде галлюцинации было,  он попытался усмехнуться, но в глазах его еще прыгала тревога, и руки дрожали.



1. 'Pah, the devil!' exclaimed the editor.2. 'You know, Ivan, I nearly had heat stroke just now!3. There was even something like a hallucination...'4. He attempted to smile, but alarm still jumped in his eyes and his hands trembled.

В итоге имеем 9707 предложений на английском против 8996 на русском. Это довольно большое различие, поэтому после первичного выравнивания с параметром window=100 получаем более 1000 конфликтов.


english1

К счастью, после разрешения конфликтов эти кусочки все равно склеятся обратно.


english2

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


Выход за пределы окна


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


batch_ids = range(10,12)aligner.align_db(db_path, \                model_name, \                batch_size=200, \                window=100, \                batch_ids=batch_ids, \                save_pic=False,                embed_batch_size=25, \                normalize_embeddings=True, \                show_progress_bar=True                )

english1

english1

Дальнейшее расширение окна увеличит процент ошибок, поэтому мы перейдем в ручной режим и задействуем параметр shift. Этот параметр позволяет сдвигать поток второго текста при расчете батча:


batch_ids = range(10,12)aligner.align_db(db_path, \                model_name, \                batch_size=200, \                window=100, \                batch_ids=batch_ids, \                save_pic=False,                embed_batch_size=25, \                normalize_embeddings=True, \                show_progress_bar=True,                shift=-100 #сдвигаем русский текст                )

polish

polish

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


После разрешения конфликтов эти же куски выглядят так:


polish

polish

Отсутствие частей текста


Ручной режим не поможет нам восстановить разрывы, если в каком-то тексте нет соответствующего куска:


polish

polish

Разрешение таких конфликтов приведет к тому, что какому-то предложению станет соответствовать большой отрывок текста на другом языке. Если таких ситуаций одна-две на весь текст (так было с английским и белорусским текстами), то, в принципе, ничего страшного. В случае польского же отсутствовало более 20 отрывков, поэтому я решил его не добавлять.


Второй уровень выравнивания


К этому моменту мы получили семь файлов с выравниваниями master_*.
Их особенностью является то, что все они выровнены относительно одного языка (русского). Казалось бы, давайте просто возьмем абзацы и сходу получим необходимые локализации.


Делаем так и спустя несколько страниц получаем вот это:


second level

Дело в том, что в некоторых текстах (на рисунке это немецкий) одно предложение могло соответствовать двум русским. Если при этом русские предложения считались разными абзацами, то эти абзацы будут слиты в один. Поэтому в обычной двуязычной книжке все будет хорошо, но относительно друг друга структура абзацев у выравниваний будет отличаться. На помощь приходят метаданные, которые хранятся в базе (наши *.db файлы).


Метаданные


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


par_struct_1 = [2, 5, 6, 8, 10, 12, ...]par_struct_2 = [2, 6, 8, 10, 11, 12, ...]res = [2, 6, 8, 10, 12, ...]

Сгенерируем книгу на основе новой разбивки, получим следующий результат:


second level

Стало выглядеть лучше, теперь абзацы формируются относительно русского языка на единой основе.


Индекс


Абзацы починили, но обратим внимание на подсветку предложений и увидим, что во многих местах она разъехалась:


index

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


На архитектурном этапе я придумал хранить структуру выравнивания как индекс. После выравнивания он выглядит он так:


[    --первый батч    [        --первая пара предложений корпуса        [1, "[1,2]", 1, "[1]"],        --вторая и т.д.        [2, "[3]", 2, "[2]"],        [3, "[4,5]", 3, "[3]"],        [4, "[6]", 4, "[4,5,6]"],        ...    ],    --второй батч    [        [1, "[100]", 1, "[105]"],        ...    ],    ...]

В этом примере в первом элементе мы склеили два оригинальных предложения "левого" текста и сопоставили ему первое предложение "правого". Числа в кавычках ссылки на оригинальные предложения, вне кавычек ссылки на фактические данные, которые можно редактировать.


Такая структура дает много возможностей:


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

Главное для нас здесь то, что из индекса мы можем вытащить структуру элемента корпуса относительно русского языка. Сопоставляя абзацы друг другу, мы опять будем сливать по минимальному принципу. В результате получим разбивку такого типа:


[[1], [2], [3]] -> [[1, 2, 3], [4], [5]] -> [[1], [2], [3]][[4]] -> [[6]] -> [[4]][[5]] -> [[7]] -> [[5, 6]]...

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


После исправлений


Посмотрим, как станет выглядеть подсветка теперь:


book

Так как мы объединяем структуру по минимальному принципу (в данном примере в китайском было меньше всего предложений на абзац), то подсветка стала ровнее, но беднее. Если убрать китайский, то она станет выглядеть так:


book

Шаг 4. Создание многоязычной книги


В большинстве случаев будет достаточно создания двуязычной параллельной книги и методов get_paragraphs() и create_book(). Но если вы дочитали до этого момента, то самое время попробовать сделать многоязычную книгу.


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


from lingtrain_aligner import resolverconflicts_to_solve, rest = resolver.get_all_conflicts(db_path, min_chain_length=2, max_conflicts_len=20, batch_id=-1)#перед генерацией не должно остаться никаких конфликтовresolver.get_statistics(conflicts_to_solve)resolver.get_statistics(rest)

Далее получим набор подготовленных текстов на всех нужных языках:


from lingtrain_aligner import readerdb_path1 = "db/master_de.db"db_path2 = "db/master_uk.db"db_path3 = "db/master_be.db"db_path4 = "db/master_zh.db"db_path5 = "db/master_cz.db"db_path6 = "db/master_en.db"db_path7 = "db/master_hu.db"paragraphs, metas = reader.get_paragraphs_polybook(                        db_paths=[db_path1, db_path2, db_path3, db_path4, db_path5, db_path6, db_path7])

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


reader.create_polybook(                lang_ordered=["en", "de", "ru"],                paragraphs = paragraphs,                delimeters = delimeters,                metas = metas,                output_path = "lingtrain_master.tml",                template="none")

book

Параметр lang_ordered задает набор и порядок языков.

Можно сделать белорусско-китайскую версию:


reader.create_polybook(                lang_ordered=["be", "zh"],                paragraphs = paragraphs,                delimeters = delimeters,                metas = metas,                output_path = "lingtrain_master.html",                template="none")

book

Можно, конечно, и всё взять:


reader.create_polybook(                lang_ordered = ["ru", "en", "de", "be", "uk", "cz", "hu", "zh"],                paragraphs = paragraphs,                delimeters = delimeters,                metas = metas,                output_path = "lingtrain_master_total.html",                template="none")

book

Лучше оставлять те выравнивания (*.db файлы), языки которых, вам нужны. Это позволит сохранить как можно больше информации об абзацах. Со стилями все как раньше, можете задавать template (сейчас есть "pastel_fill", "pastel_start"), можете придумывать свои, примеры есть выше и в блокноте на Colab. Если задать template="none", получится чистая книга.

Планы и поддержка


  • Дальше планируется поддержать fb2 формат для читалок и добавить подстрочный перевод. Также хочу расширить возможности разметки, добавить вставку картинок. Затем оформить это в виде веб-приложения, чтобы люди могли создавать книги без написания кода.


  • Скидывать тексты для тестирования и выравнивания, делиться предложениями и багами можно в канале http://t.me/lingtrain_books.


  • Подержать проект финансово можно переводом. Деньги пойдут на хостинг веб-приложения и ускорят его разработку.



Ссылки


Все упомянутые в статье ссылки:


[1] Первая часть статьи


[2] Код lingtrain-aligner на github


[3] Google Colab блокнот с выравниванием


[4] Кот Бегемот с обложки был найден здесь


[5] PDF. Семь параллельных книг "Мастер и Маргарита"


[6] Телеграм-группа


[7] Сбор средств на проект

Подробнее..

Популярная лингвистика. Часть 1. Маме пиджин, детям креол

01.12.2020 22:06:36 | Автор: admin

Brilliant Mironov


Если вам интересно, что такое пиджин и чем он отличается от креола, на каком языке общаются пришельцы и откуда есть пошёл дотракийский язык, то этот небольшой цикл статей для вас.


Введение


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


Пиджины


Представьте, что вам повезло и вы родились лет 200-300 назад вблизи границы с другим государством. Вы постоянно контактируете с представителями другого народа, который говорит на своем непонятном вам языке. Чем дольше вы с ними общаетесь и чем сильнее в этом необходимость, тем чаще вы начинаете понимать их слова, а они ваши. Вы отбрасываете и упрощаете грамматику их языка, они вашу. Спустя некоторое время появляется то, что называется контактным языком пиджином. Пиджин ни для кого не родной, словарь его ограничен, его основная цель понять и быть понятым "по-простому". Давайте посмотрим на русские пиджины, существовавшие в 17-20 веках.


Русский + норвежский = руссенорск


Руссенорск был распространен в начале 18-го века на северном побережье Норвегии. Появился, как средство общения между русскими купцами, норвежскими моряками и рыбаками. Всего зафиксировано около 400 слов руссенорска. Язык интересен тем, что из русского и норвежского взято примерно по половине слов этого пиджина.


 Эй, рюсьман, купом сейка, треска, тиска и балдуска.(Эй, русский, давай покупай сайду, треску, пикшу и палтус.) Да, да, моя купом альтсамма. Давай по шип ком.(Да, я куплю все. Заходи на судно.) Басиба! Как твоя мукка? Как твоя группа?(Спасибо! А у тебя есть мука? У тебя есть крупа?) Да, да, моя харь этта. Давай по шип ком, брат, твоя и моя по цай дрикки.(Да, это у меня есть. Заходи на судно, будем чай пить.)

Подный диалог смотри здесь.


Русский + китайский = кяхтинский


Начало 19-го начало 20-го веков в Приамурье, Забайкалье и Маньчжурии. Впервые описан в 1831-м в "Московском телеграфе", как язык для изучения которого у китайских купцов есть "особые словари с русским переводом, написанным китайскими буквами".


Во ке и памагай = Я могу помочьВоды ниды пилюли давай = я дам тебе лекарствоГуляй-гуляй = гулять, развлекаться ()Ерлан = доза спиртного, 100 грамм (от )Куня = девушка

Еще примеры и подробное описание тут


Говорка таймырский пиджин


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


Ну, ну. Завтра встали. Это, конечно, батрак ушёл туда, это купец место.(На следующее утро встали. Батрак, конечно, ушел к купцу.)Купец сидит контора место.(Купец сидит в конторе.)Как тебя голова-место попал?(Как тебе в голову пришло?)

Замечательные примеры взяты отсюда.


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


Креолизируй это


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


У креольских языков также зафиксированы общие черты, например порядок слов SVO ("я программирую на плюсах"), мало гласных (как правило, не больше пяти), гораздо больший чем у пиджинов словарь.


Несмотря на то, что креольские языки не являются очень старыми (300-400 лет), они не являются взаимопонятными со своим языком-лексификатором (чаще всего это английский и французский). Например, вот перевод фразы "The dog of the man who lives in that house is named King" ("Собаку человека, который живет в этом доме, зовут Кинг") на несколько англо-креольских языков Атлантики.


язык перевод
Сарамаккан di dagu fu di womi dati di libi n a wosu de a king
Гайянский a man wa liv a da hous dag neem king
Ямайский di maan wa lib iina da hous daag nyem king
Барбадосский di dog da bilong tu di man da liv in da hous, i neem king
Крио di man we tap na da os dog nem king

Пример взят отсюда.


После получения колонией независимости, государственным языком вполне может стать креольский. Так случилось с Гаити, куда в 18-м веке свезли столько невольников, что их стало в 10 раз больше чем свободных людей. Сейчас на гаитянском креоле говорят около десяти миллионов человек. На нем есть литература и он уже не раз за свою недолгую историю подвергался облагораживанию и стандартизации.


Книга на выходные


Chel


Дмитрий Казаков, "Человек языкатый". Книга вышла в этом году и очень меня впечатлила. Состоит она из рассказов про искуственные языки это и артланги (клингонский, на'ви, дотракийский), и мистические языки (Lingua Ignota, енохианский, белейбелен), и языки с мировыми амбициями (эсперанто, волапюк, логлан), и многие другие. Ещё отмечу, что автор очень удачно сгруппировал языки и пишет без излишнего академизма.


На этом все, в следующий раз пройдемся по языкам, сделанным на заказ, но с любовью.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru