Волейбол — командный вид спорта, в котором две команды из 6 игроков разделены сеткой. Каждая команда старается заработать очки, когда мяч приземляется на площадке команды-соперника. Игра имеет строгие правила. Мяча обычно касаются руками, но игроки могут отбивать мяч или толкать его (иметь короткий контакт) разными частями тела. Твір «Мій улюблений вид спорту» допоможе правильно структурувати свої ідеї і написати власний твір на цю доволі цікаву та легку тему. Мій улюблений вид спорту – волейбол. Він розвиває в мені багато якостей – точність, стриманість і врівноваженість. І головне, після кожної гри я відчуваю себе сильнішим. Адже спорт – це запорука здоров’я. Додаткови матеріал до теми “Мій улюблений вид спорту”: Слова на тему “Спорт”. Sport in our life (Спорт в нашому житті). Спорт цілий рік (Sports All Year Round). Навігація записів. Герундій проти Інфінітива (Частина 1). Англійська для журналістів. Твір на тему » My favourite kind of sport» (мій улюблений вид спорту),Твір на тему » My favourite kind of sport» (мій улюблений вид спорту) з перекладом. Я люблю спорт. Он играет большую роль в моей деятельности. Больше всего я люблю играть в баскетбол. Многие люди увлекаются спортом, потому что он делает нас здоровыми и помогает быть в хорошей форме. 3. During you play any sport game you are active and it helps you to burn many calories. Когда вы играете в любые спортивные игры, вы активны, и это помогает вам сжигать больше калорий. 4. In our country people are fond of skating and skiing, they also keen in athletics and football. Many people like to play volleyball, basketball and hockey. Представлена подборка сочинений о Спорте на английском языке с переводом на русский язык. Sport. Спорт. Всем известно, что спорт является важной частью здорового образа жизни. К счастью, в настоящее время есть много возможностей заниматься разными видами спорта. Во-первых, у нас всегда проходят уроки физкультуры в школе. Во-вторых, с самого раннего детства я посещаю боевые искусства, точнее уроки каратэ. Три примера сочинений о любимом виде спорта на английском языке с переводом. Различные увлечения есть у каждого человека, ведь именно такие занятия. Поэтому тема «Мой любимый вид спорта» на английском языке важна для людей любых возрастов и уровней знаний. Даже дети и новички должны уметь хоть парочку слов добавить к разговору о любимом виде спорта или физической активности. Итак, приступаем к занятию!
Три примера сочинений о любимом виде спорта. вам допоможе цей текст під час вивчення англійської мови. спортом потрібно займатися, так як кістки розминаються. на англійській ви будете говорити про різні види спорту, також англійська мова само-собою вам згодиться в багатьох моментах і також на уроках і в майбутньому. Інші методичні матеріали на урок Англійська мова скачати. Всі види спорту та ігор культивуються в нашій країні, а також в Англії, США та інших країнах світу. Теніс, хокей, волейбол та футбол стали дуже популярними в Росії. Футбол — мій улюблений вид спорту. Термін «футбол» по-різному розуміють у США та Великобританії. Для британського «футболу» — це те саме, що, як відомо, у нашій країні «футбол». Хобби и различные увлечения есть у каждого человека, ведь именно такие занятия позволяют приобщаться к тому, что нравится и реализовывать свои природные способности. Поэтому тема «Мой любимый вид спорта» на английском языке важна для людей любых возрастов и уровней знаний. Даже дети и новички должны уметь хоть парочку слов добавить к разговору о любимом виде спорта или физической активности. Поэтому сегодня мы разберем topic My Favourite Sport и научимся рассказывать о любимых спортивных событиях. Уверены, даже если ЗОЖ, физкультура и спорт по большей части проходят мимо вас, все равно за миро. Благодаря спорту я смогла вылечить сколиоз. Несмотря на то, что я занимаюсь танцами, моим любимым видом спорта является лыжный спорт. Мне нравятся все виды лыжного спорта, и я всегда смотрю лыжные соревнования, хотя сама я не очень хорошо катаюсь на лыжах. Most of all I like ski jumping, biathlon and downhill. Ski jumping is a type of skiing when a sportsman jumps from a special jumping ramp. Дорогой ученик! В этом материале подготовлен рассказ про любимый вид спорта. Под английским текстом есть перевод на русский язык. My favourite sport is football. Three years ago I started to go in for football in a sports club not far from my home. Since then football has been my favourite sport. Actually, football is very popular in many countries all over the world. Football is a team sport. The responsibility for victory or defeat lies with each member of the team. Football cultivates team spirit, unity and will to win. Last year we won the cup at the regional competitions. It is so wonderf. Футбол считается самым популярным видом спорта во всем мире. Начало футболу было положено примерно 2000 лет назад. Его происхождение прослеживается в Китае, хотя римляне, греки и некоторых районы Центральной Америки считают, что футбол возник в их странах. Многие обожают футбол, и я один из них. Я думаю, это самый энергичный вид спорта. Это самая популярная игра в мире в которую играют не менее чем в 200 странах мира. Футбол для меня самый лучший вид спорта. Я хочу стать профессиональным футболистом. Posted in Топики на английском языке. Написати твір про спорт англійською? Легко! Адже це один з найпоширеніших топіків після розповіді про собі або своєму робочому дні. Здоровий спосіб життя – тема важлива і актуальна у всі часи, і розповідь про нього в захоплюючій формі доведеться як не можна до речі. Отже, ви готові?
Спорт: розповідь, корисні думки і висловлювання Головне питання.
С самого утра помещение коворкинг-центра на станции метро «Арсенальная» пребывает в праздничном убранстве. Еще бы: именно здесь, в этом эпицентре диджитализации и мерчандайзинга, состоится трехчасовой пресс-марафон с участием любимого всеми президента Украины Владимира Зеленского. Тридцать тщательно отобранных вакцинированных и привитых представителей СМИ, каждый со специальным кюар-кодом, будут задавать верховному главнокомандующему вопросы, которые волнуют нацию.
Интерес к мероприятию сумасшедший. Люди с рассвета занимают очередь к «Ю-тюбу», чтобы не пропустить этот воистину исторический момент. Мало кто знает, но вот уже два с половиной года Зеленский вместе с любимым руководителем своего офиса ведут нашу страну к членству в НАТО и ЕС. И именно этому своего рода Рубикону и посвящена пресс-конференция в любимом месте отдыха киевлян – коворкинге. Сначала хотели провести прессуху в пиццерии «Автостанция», расположенной в живописном районе Киева – на Подоле. Но когда передовая группа Офиса президента приехала осмотреть место будущего триумфа Зеленского, так сказать, на месте, то все, с…ка, ахнули. Персонал непривитый, полочки в туалете залапаны и покрыты бурыми пятнами подозрительного цвета. Как, собственно говоря, и предметы сантехники. В пиццу кладут (ложат) всякую херню непонятного происхождения, нет резервного электрогенератора и аварийной линии электроснабжения. А это очень важно в нынешние непростые времена, поскольку в любой момент всем известный олигарх, финансирующий ныне пятую колонну Кремля, может вырубить свет.
Короче, Подоляку, который подобрал место для пресс-конференции в расчете получить скидку почетного гостя, вынесли выговор, и позиции Леща, претендующего на место главного информационного советника Зеленского, резко укрепились. Помещение коворкинг-центра как нельзя лучше приспособлено к проведению пресс-марафона. Там есть несколько резервных линий электроснабжения, которые идут прямо от метро, уютное подвальное помещение, турникет на входе, который можно централизованно заблокировать, туалеты с идеально ровными поверхностями для понимающих сотрудников офиса, рамки металлодетекторов и средства видеонаблюдения. От Офиса президента до коворкинга буквально доплюнуть можно. Это очень важно с точки зрения безопасности. Все мы понимаем, что время сейчас непростое, поэтому следует жестко предохраняться. Опять же пищу будут готовить специально обученные сотрудники Государственного управления делами под надзором крайне бдительных сотрудников спецслужб. В меню будут шашлыки, бургеры и различные легкие салатики.
Теперь о всемирном историческом значении мероприятия. Многие спрашивают: почему именно сейчас Зеленский решил пообщаться с хорошо отфильтрованной прессой? Что это, б…ть, за дата? Какой, на хер, коворкинг? Друзья, не следует горячиться. За последние несколько недель миллионы украинцев стали жертвами нарративов кремлевской пропаганды. Зеленский и Ермак стали мишенями для информационной атаки. Сначала «оффшорный» скандал, затем «вагнергейт», потом срач с ахметовскими телеканалами, подлый удар экс-спикера Разумкова по нерушимому «монобольшинству» партии «слуг» и нации. В результате рейтинг президента чуть-чуть спустился. Теперь во втором туре его может победить любой одушевленный либо неодушевленный предмет. Во всяком случае, именно так клевещет вражеская пропаганда.
Поэтому пришло время выйти к специально натренированным СМИ и честно, без всяких там экивоков ответить на все вопросы, написанные Лещем и розданные независимым журналистам. Тут, кстати, многие возмущаются: а почему меня не позвали, по каким критериям осуществлялся отбор СМИ, не является ли это нарушением принципов свободы слова? Ребята, в ж…пу эти принципы! Вы что, не понимаете, в какое предвоенное время мы все живем? Кольцо врагов все плотнее и плотнее сжимается вокруг границ. Правда, наш славный секретарь СНБО, ветеринар и просто любитель кальмаров Данилов утверждает, что не все так плохо и слухи о скором вторжении Кремля сильно преувеличены. Но все равно расслабляться не следует. Поэтому лично Ермак выбрал самых честных и неподкупных представителей СМИ. На мой взгляд, еще можно было бы пригласить Диану Витальевну Панченко. В последнее время она активно развивается в направлении, близком и понятном Офису президента: вечеринки, порноактеры, фитнесс. Есть много тем, которые могли бы найти живой отклик у Зеленского. Однако это, повторюсь, чисто мое субъективное мнение.
По мере поступления свежей информации и шашлыков из коворкинга мы будем обновлять материал. В качестве постоянного комментатора пригласили известного политтехнолога Каца, который любезно согласился пожрать за счет редакции.
Итак, подводим итоги «марафона». Политтехнолог Кац грустно сожрал круассан и еще до конца прессухи вынужден был признать: да, мы сегодня обо…лись. С болью в душе обязан согласиться с господином политологом: ни одна из планируемых целей этого мероприятия не была достигнута. О каком подъеме рейтинга вы говорите… Плюньте и забудьте.
Собственно говоря, то, ради чего затевался этот трехчасовой марафон, можно свести к двум основным месседжам. Оба они, как оказалось, были полностью провальными для Офиса президента. Как пишут в дебильных «Телеграм-каналах» Ермака, информационным «драйвером» стал Савик Шустер. По ходу, его специально пригласили для того, чтобы предъявить ультиматум Ринату Леонидовичу. Это и стало главной новостью «марафона». От волнения Зеленский даже перешел на русский язык. Оказывается, в распоряжении президента есть запись разговоров неких лиц. Одно из них представляет украинскую сторону, а второе – российскую. В ходе общения упоминается Ринат Ахметов, который, по словам анонимных собеседников, «готов участвовать в перезагрузке власти». Государственный переворот запланирован на 1 декабря. Возможно, на 2-е. Но не на третье число. Это точно. Вот, в сущности, и главная причина того, что Зеленский неожиданно провел «марафон». Первое число не за горами. Надо упредить. Участие в «государственном перевороте» – серьезное обвинение. Тут же президент заюлил, давая возможность Ахметову прийти в офис и честно покаяться в содеянном. Нехитрая такая двухходовка. Сначала угроза в госизмене на основании, мягко говоря, высосанных из пальца обвинений. Какие-то люди упомянули имя ах какого человека в контексте смены власти. Ну и что?
Однако пиарщики офиса почему-то считают, что это должно «отрезвить общественность». Даже не знаю, откуда берется такая уверенность. Наверное, из параллельной вселенной. Ультиматум получился каким-то детским. Да и потом Зеленский начал жаловаться на «информационную атаку» со стороны «ахметовских телеканалов». Ему так обидно было. А закрыть санкциями СНБО их пока нельзя. Не хватает силенок.
Вторая новость касается «вагнергейта». Тут мне даже жалко стало Зеленского. Из всех вариантов выхода из безвыходной ситуации он выбрал самый худший. Просто аплодирую стоя! Уникальное чутье на грабли. Знаете, кто провалил спецоперацию «Авеню», которая, в принципе, никого особо не чешет? Василий Бурба, глава Главного управления разведки на то время. Оказывается, Бурба – мерзавец редкой пробы, назначенный Петром Порошенко. Он сделал на своей даче ремонт на сумму 11 млн. Правда, не уточняется, в какой именно валюте. Торговал информацией. Работал на разведку РФ. Пытался всучить лично Зеленскому некую «универсальную формулу лекарства от ковида» и «доказательства искусственного происхождения вируса». Авантюрист и конченый негодяй. М-да… «Беллингкэт» и все наши английские «друзья» после такого откровения радостно потирают руки. Зеленский наиграл им настоящий «джокер». Теперь у них и у Петра Алексеевича прекрасные карты для продолжения «вагнергейта». Еще бы! На их глазах Зеленский делает из героя-«антивагнеровца» Бурбы агента Кремля. Но, как говорится, поздно, Маша, пить боржоми.
А чего стоит прекрасный срач Бутусова с президентом по поводу «вагнеровцев» и «агентов Кремля»! Я просто отхожу в сторону и любуюсь происходящим. Хуже придумать невозможно. Ответственно заявляю.
Общий вывод: Зеленского информационно опустили в ходе «марафона». Прессуха превратилась в какое-то истязание президента. Лучше бы он просто пошел в пиццерию покушать. И да: прическа Сони Кошкиной была самой лучшей на «марафоне». Такое сочетание массы и «огня» – это вообще за пределами разумного мироустройства.
Сообщения
Сообщения за Ноябрь, 2021
30.11.2021 Английский язык Тема: Teenage magazines. Журналы для подростков в Великобритании. стр. 41 1. слова п. 4 d стр. WL 6 выучить 2. стр. 41 упр. 2 письменно. 3. стр. 41 упр. 3 — текст прочитать, понять содержание, подготовить краткий пересказ
26.11.2021. Английский язык. 7 класс. Тема: Take action! Действуй! стр. 40 1. слова п. 4 а — выучить наизусть. 2. упр. 1 стр. 40 прочитать несколько раз вслух, перевести 3. стр. 40 упр. 5 — вам нужно найти местную газету («Сакмарские вести»), выбрать одну новость любую (новости о культуре, о спорте, о школе может быть, о людях) и на английском языке рассказать 4-5 предложений. Желательно и мне выбранную статью прислать, чтобы я проверила вашу работу.
25.11.2021. Английский язык. 7 класс. Тема: Did you hear about … ? Вы слышали о … ? стр. 38. Тема, о том, как вы, учащиеся, смотрите /слушаете новости. 1. слова п. 4 b — выучить наизусть. 2. стр. 38 упр. 1 — читаем заголовки и в задании выучить прилагательные. 3. стр. 39 упр. 5 задание а) — прaвило Past Simple / Past Continuous. Я вам объясняла, еще раз почитайте. Примеры 4 предложения прочитайте, переведите, обращая внимание на использование правила. 4. стр. 39 упр. 5 задание b) письменно. Присылайте на почту.
Английский язык 9 А — Б класс 12 .11.2021 Тема: Пусть звучит музыка. (повторение) 1. Повторить слова всего раздела. 2. Повторить правила: стр. 180 пункт 3 и стр. 181 — Passive
Английский язык 2 А класс 12.11.2021 Тема: Великобритания в фокусе. Ознакомление с садами Великобритании и России. 1. Стр. 38, 1 задание. Текст прочитайте и поймите содержание. Вот таким образом вам нужно в тетради по образцу нарисовать свою комнату или спальню и описать, что имеется у вас в вашей комнате и какого цвета. Записываете число: 12.11. My room.
Английский язык 5 А-Б классы 12.11.2021 Тема: Дом. (стр. 46-47) 1. Слова § 3а 2. Выполнить письменно упр. 8 стр. 47. Вам нужно составить рассказ о своем доме или квартире. (5-7 предложений) Записываете число : The 12th of November. Homework . Exercise 8 p . 47. Присылайте работы на почту до 16:00!
Английский язык 7 класс 12.11.2021 Тема: Дети во времена королевы Виктории. (стр. 33) 1. Повторить слова всех уроков. 2. Стр. 33 упр. 3. Текст прочитать несколько раз и понять содержание прочитанного. 3. Письменно ответить на вопросы упр. 5 стр. 33 Записываете число : The 12 th of November. Homework . Присылайте на почту до 16:00
Немецкий язык 8 класс 12.11.2021 Тема: Как дать отрицательный ответ? (стр. 31 упр. 3 чтение) 1. повторить алфавит и правописание, уметь прочитать схемы 2. стр. 32 упр. 5 -письменно 4. Записываем число: 12.11.2021 Письменно составьте предложения по данным схемам. Присылайте на почту до 16:00.
Английский язык 5 А-Б классы 11.11.2021 Тема: Проверочная работа. 1. Повторить слова и правила всего модуля 2. Выполнить письменно два задания. Записываете число : The 11th of November. 1) Choose the correct item . (Вам нужно выбрать один правильный ответ: 0 — а) 1. Brian is from ________________. He is American. a) the UK b) the USA c) Ireland 2. Where are you from? – I’m ___________. a) eleven b) from France c) New Zealand 3. ___________ hasn’t got gloves. a) Fred b) you с) I 4. What have you got in your school bag? — ____________________ . a) It’s a bicycle. b) Yes, I have. c) It’s my sister’s teddy bear 5. Put on your scarf and _______________. It’s cold today. a) a helmet
Английский язык 6 А-Б классы 11.11.2021 Тема: Как пройти … ?. (стр. 32) 1. Стр. 2 прочитать тексты вслух несколько раз, понять содержание. 2. Письменно выполняете упр. 4, вам нужно выбрать один из пунктов назначения и составить диалог по образцу. Записываете число : The 11th of November. Homework . Присылайте на почту до 16:00.
Английский язык 7 класс 11.11.2021 Тема: Разговор об увлечениях/ работе. (стр. 32) 1. Повторить слова всех уроков. 2. Стр. 32 упр. 3. Текст-диалог прочитать несколько раз и письменно заполнить пропуски, используя реплики из упр. 2 Записываете число : The 11 th of November. Homework . Присылайте на почту до 16:00.
Английский язык 8 класс 11.11.2021 Тема: Изобретения. Научные открытия. (стр. 42- 45) 1. Выучить слова модуля 3а- b 2. Опираясь на упр. 2-3 стр. 44 письменно выполняете упр. 8 стр. 45, составить рассказ как ваши родители зарабатывают на жизнь. Записываете число: The 11 th of November Homework Exercise 8 p . 45
Английский язык 2 А класс 10.11.2021 Тема: Закрепление языкового материала. 1. Повторите слова по теме: «Дом» стр. 26 упр. 1; стр. 30 упр. 1; стр. 34 упр. 1 2. Выполняем письменно задания: 1) Расшифруй слово и ответь на вопрос. Пишите только ответы. Прочти вопросы и ответы. Образец : What’s this? (plam) – It’s a lamp. (Читаем: Уотс зыс? – Итс э лэмп. Что это? – Это лампа.) 1. What’s this? (rete uoshe) – It’s a t___ h____ . 2. What’s this? (btlae) — It’s a t____ . 3. What’s this? (edb) — It’s a ___ . 4. What’s this? (haric) — It’s a c____ . 5. What’s this? (iraod) — It’s a r____ . 2) Вы не забыли местоимения: She — (ши – она); he – (хи – он) 1. Напищите соответствующее местоимение. Образец: grandma — she 1. brother — ___ 2. sister — ___ 3. grandpa — ___ 4. Larry — ___ 5. Lulu — ___
Английский язык 3 А-Б классы 10.11.2021 Тема: Теперь я знаю. (стр. 38) 1. Повторить слова всех уроков, повторить местоимения на стр. 28 2. Выполняем письменно упражнения на закрепление лексики и грамматики на стр. 38. Выполняем упражнения 2, 3, 6 3. Записываете число: 10.11. Homework . Присылайте на почту до 16:00.
Немецкий язык 9 А-Б классы 9.11.2021 Тема: Повторение пройденного материала. 1. Повторить слова всех уроков по теме: «Школа» 2. Повторить спряжение слабых и сильных глаголов. 3. Стр. 61 упр. 3 текст читаете несколько раз вслух, переводите. 4. Письменно выписать из текста 10 глаголов с переводом, поставив в начальной форме. Записываете число: Heute ist der neunte . November Hausarbeit Присылайте на почту до 16:00.
Upd. 04.12.2021 — Наш телеграм канал
Если вам нравится изучать языки (или вы их преподаете), то вы наверняка сталкивались с таким способом освоения языка как параллельное чтение. Он помогает погрузиться в контекст, увеличивает лексикон и позволяет получить удовольствие от обучения. Читать тексты в оригинале параллельно с русскоязычными, на мой взгляд, стоит, когда уже освоены азы грамматики и фонетики, так что учебники и преподавателей никто не отменял. Но когда дело все же доходит до чтения, то хочется подобрать что-то по своему вкусу, либо что-то уже знакомое или любимое, а это часто невозможно, потому что такого варианта параллельной книги никто не выпускал. А если вы учите не английский язык, а условный японский или венгерский, то трудно найти вообще хоть какой-то интересный материал с параллельным переводом.
Сегодня мы сделаем решительный шаг в сторону исправления этой ситуации.
Из чего делаем
На входе у нас будут два текстовых файла с оригинальным текстом и его переводом. Для примера возьмем книгу «Убить пересмешника» Харпер Ли на русском и английском языках.
Начало документов выглядит так (отрывки приведены в таком виде, в котором они были найдены в сети):
TO KILL A MOCKINGBIRD
by Harper Lee
DEDICATION
for Mr. Lee and Alice
in consideration of Love & Affection
Lawyers, I suppose, were children once.
Charles Lamb
PART ONE
1
When he was nearly thirteen, my brother Jem got his arm badly
broken at the elbow. When it healed, and Jem’s fears of never being
able to play football were assuaged, he was seldom self-conscious about
his injury. His left arm was somewhat shorter than his right; when he
stood or walked, the back of his hand was at right angles to his body,
his thumb parallel to his thigh. He couldn’t have cared less, so long as
he could pass and punt.
Харпер Ли
Убить пересмешника
Юристы, наверно, тоже когда-то были детьми.
Чарлз Лэм
ЧАСТЬ ПЕРВАЯ
1
Незадолго до того, как моему брату Джиму исполнилось тринадцать, у него была сломана рука. Когда рука зажила и Джим перестал бояться, что не сможет играть в футбол, он ее почти не стеснялся. Левая рука стала немного короче правой; когда Джим стоял или ходил, ладонь была повернута к боку ребром. Но ему это было все равно - лишь бы не мешало бегать и гонять мяч.
Как делаем
Задача объемная, поэтому разобьем ее на три части:
- Подготовка текстов
- Выравнивание двух текстов по предложениям
- Создание книги
Начнем с выравнивания двух текстов, так как эта часть является центральной и крайние пункты опираются на нее.
Получение параллельного корпуса
Строго говоря, нам нужно получить параллельный корпус из двух текстов. Задача не так проста как кажется по ряду причин:
- Переводчики часто переводят текст не как одно предложение к одному. Особенно ярко это заметно при переводе на иероглифические тексты (китайский, японский и т.д.), где сложные предложения как правило будут разбиты на несколько простых. В переводах на другие языки это также встречается довольно часто.
- Некоторые предложения или абзацы могут попросту отсутствовать, а иногда переводчик добавляет что-нибудь от себя.
- При очистке текстов от лишней информации, которая не участвует в выравнивании (автор, название, номера глав и подзаголовки), понадобится сохранить ее местоположение в тексте, чтобы конечная книга получилась полной и красивой.
Для выравнивания воспользуемся библиотекой lingtrain-aligner, над которой я работаю около года и которая родилась из кучи скриптов на python, часть из которых еще ждет своего часа. Проект открытый, буду рад вашим идеям и предложениям. Все ссылки вы найдете в конце статьи.
Под капотом библиотека использует модели машинного обучения, которые переводят предложения в векторное пространство. Это позволяет посчитать между векторами расстояние и проинтерпретировать его как близость предложений по смыслу. Эти модели многоязычные, одна из них поддерживает чуть более 50-ти языков, вторая — более ста. Причем сюда не входят родственные языки, для которых такой подход тоже будет иметь смысл за счет того, что они частично пересекаются по лексикону. Ссылки на статьи и списки языков, опять же, найдете ниже.
При подаче в программу текстов, произойдет следующее:
- Текст сливается в одну строку.
- Строка подчищается в зависимости от языка текста.
- Строка разбивается по предложениям при помощи библиотеки razdel или регулярок.
- Из каждой строки достается метаинформация, на основе специальных меток.
Метки нам понадобятся для того, чтобы при составлении книги из корпуса восстановить деление по частям и главам.
Давайте подготовим тексты для подачи в программу.
Подготовка текстов
Язык разметки
В качестве разметки был придуман простой язык, который совместим с последующим разбиением текста на предложения. Сейчас поддерживаются несколько типов меток, которые ставятся в конце строки. В конце каждой метки должна стоять точка.
Метки абзацев
Метки абзацев будут проставлены автоматически по следующему правилу: если строка кончается на символ [.,:,!?] и перенос строки, то считаем такую строку концом абзаца.
Правила подготовки текста
- Удалить заведомо лишние строки (информацию об издателе, посвящение, номера страниц, примечания).
- Проставить метки для автора и названия.
- Проставить метки для заголовков (H1 самый большой, H5 самый маленький). Если заголовки не нужны, то просто удалите их.
- Убедиться, что в тексте нет строк, которые кончаются точкой и при этом не являются концом абзаца (иначе целый абзац разобьется в этом месте на два).
Расставьте метки руками в соответствии с правилами, пустые строки в данном случае роли не играют. Должны получиться документы, похожие на такие:
TO KILL A MOCKINGBIRD%%%%%title.
by Harper Lee%%%%%author.
%%%%%divider.
PART ONE%%%%%h1.
1%%%%%h2.
When he was nearly thirteen, my brother Jem got his arm badly
broken at the elbow. When it healed, and Jem’s fears of never being
able to play football were assuaged, he was seldom self-conscious about
his injury. His left arm was somewhat shorter than his right; when he
stood or walked, the back of his hand was at right angles to his body,
his thumb parallel to his thigh. He couldn’t have cared less, so long as
he could pass and punt.
...
Харпер Ли%%%%%author.
Убить пересмешника%%%%%title.
%%%%%divider.
ЧАСТЬ ПЕРВАЯ%%%%%h1.
1%%%%%h2.
Незадолго до того, как моему брату Джиму исполнилось тринадцать,
у него была сломана рука. Когда рука зажила и Джим перестал бояться,
что не сможет играть в футбол, он ее почти не стеснялся. Левая рука стала
немного короче правой; когда Джим стоял или ходил, ладонь была повернута к
боку ребром. Но ему это было все равно - лишь бы не мешало бегать и
гонять мяч.
...
Здесь и дальше все «главные» заголовки («ЧАСТЬ ПЕРВАЯ», «ЧАСТЬ ВТОРАЯ» и т.д.) помечены меткой h1, номера глав помечены метками h2. Перед выравниваем все метки будут удалены из текста и будут использованы при создании книги.
Выравнивание
Colab блокнот
Чтобы выровнять свои тексты используйте вот этот Colab блокнот. Это интерактивный блокнот на питоне, в который вы можете вносить изменения и запускать в браузере. В нем есть инструкции и некоторые комментарии к процессу. В конце можно будет скачать получившуюся книгу как html страничку.
Скрипты
Здесь же давайте напишем небольшой скрипт, обсудим сложности и ограничения нашего подхода.
Установим библиотеку следующей командой:
pip install lingtrain-aligner
Импортируем необходимые компоненты:
from lingtrain_aligner import preprocessor, splitter, aligner, resolver, reader, vis_helper
Определим пути до входных файлов и прочитаем все строки в переменные:
text1_input = "harper_lee_ru.txt"
text2_input = "harper_lee_en.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()
Определим также путь до SQLite базы данных (это хранилище со всей необходимой для выравнивания информацией) и параметрами языка lang_from и lang_to. Эти параметры очень важны, так как они влияют на правила разбиения строк на предложения:
db_path = "db/book.db"
lang_from = "ru"
lang_to = "en"
models = ["sentence_transformer_multilingual", "sentence_transformer_multilingual_labse"]
model_name = models[0]
Получить список всех доступных языков можно следующей командой:
splitter.get_supported_languages()
Если нужного языка в списке пока нет, но он поддерживаются моделями, то используйте код xx, тогда к тексту будут применены стандартные правила фильтрации и разбиения на предложения. Модель sentence_transformer_multilingual работает быстрее и поддерживает 50+ языков, sentence_transformer_multilingual_labse поддерживает 100+ языков.
Добавим к текстам метки абзацев:
text1_prepared = preprocessor.mark_paragraphs(text1)
text2_prepared = preprocessor.mark_paragraphs(text2)
Разобьем документы на строки:
splitted_from = splitter.split_by_sentences_wrapper(text1_prepared , lang_from, leave_marks=True)
splitted_to = splitter.split_by_sentences_wrapper(text2_prepared , lang_to, leave_marks=True)
Создадим нашу базу данных и наполним ее данными, взятыми из нашей разметки. В базе хранятся строки с координатами абзацев и глав, метаданные, маппинг выровненных строк на их изначальный состав и местоположение. Такая структура позволяет писать для этого хранилища UI, в котором можно проводить различные манипуляции с корпусом. Это отдельный проект, о нем в следующий раз.
aligner.fill_db(db_path, splitted_from, splitted_to)
Теперь можно выровнять документы. Процесс выравнивания идет кусками с размером batch_size, вокруг каждого куска берется дополнительное количество строк размера window, чтобы гарантированно захватить необходимые строки. Модель берет заданное количество строк первого текста и подбирает в соответствующем фрагменте второго текста лучшие соответствия, используя векторные представления. На этом основывается первоначальное выравнивание. Для того, чтобы выровнять первые четыреста строк, выполним следующую команду.
batch_ids = [0,1,2,3]
aligner.align_db(db_path,
model_name,
batch_size=100,
window=30,
batch_ids=batch_ids,
save_pic=False,
embed_batch_size=50,
normalize_embeddings=True,
show_progress_bar=True
)
Результат выравнивания
Теперь можно посмотреть на результат первичного выравнивания! Это возможно благодаря тому, что в базе мы храним изначальные номера строк для выровненного корпуса. Воспользуемся модулем vis_helper. Так как строк у нас 400, то нарисуем все на одной картинке, задав параметр batch_size=400. Если указать, например, batch_size=50, то получим 4 картинки по-меньше.
vis_helper.visualize_alignment_by_db(db_path, output_path="alignment_vis.png",
lang_name_from=lang_from,
lang_name_to=lang_to,
batch_size=400,
size=(800,800),
plt_show=True)
Посмотрим на картинку. Выравнивание предсказуемо идет от начала к концу, но есть конфликты. Основных причин две:
- У модели было слишком много удачных вариантов.
- Так случается, если строка короткая. Например, в тексте идет диалог, фразы в нем односложные, используются одни и те же имена.
- У модели было слишком мало вариантов и правильного среди них нет.
- У текстов разные тенденции к разделению на предложения. Один постепенно «убегает из окна» и мы не ищем правильные варианты там, где надо. Окно можно увеличить, но не слишком сильно, потому что у модели становится больше вариантов для ошибок. Нужен компромисс.
Хорошим решением мне видится регрессия на координаты строк при выравнивании батча и сдвиг окна на конец потока при выравнивании следующего. Минусом тут будет потеря возможности распараллеливания обсчета батчей, так как они станут зависимы друг от друга.
Сейчас окно сдвигается на основе отношения длин текстов. Батчи не зависимы, но есть другая проблема, — если один из текстов это только часть книги, а второй текст полный, то окно быстро убежит от правильного потока выравнивания.
Меня зовут Уинстон Вульф. Я решаю проблемы.
Давайте теперь разбираться с шероховатостями. Глядя на картинку, мы видим, что есть непрерывные цепочки, есть разрывы и есть выбросы. Например, для предложений 10,11,12 модель подобрала предложения 15,16,17 из второго текста. Эта цепочка хорошая. Все, что находится между цепочками назовем конфликтом. При таком определении конфликта можно измерить его размер и подобрать стратегию разрешения. Логика по решению проблем находится в модуле resolver.
Для начала давайте посмотрим на все найденные конфликты:
conflicts_to_solve, rest = resolver.get_all_conflicts(db_path, min_chain_length=2, max_conflicts_len=6)
conflicts to solve: 46
total conflicts: 47
При этом в переменную conflicts_to_solve попадут конфликты, которые соответствуют заданным параметрам поиска, а в переменную rest остальные.
Выведем на экран статистику:
resolver.get_statistics(conflicts_to_solve)
resolver.get_statistics(rest)
('2:3', 11)
('3:2', 10)
('3:3', 8)
('2:1', 5)
('4:3', 3)
('3:5', 2)
('6:4', 2)
('5:4', 1)
('5:3', 1)
('2:4', 1)
('5:6', 1)
('4:5', 1)
('8:7', 1)
Видим, что чаще всего попадаются конфликты размера 2:3 и 3:2, это означает, что одно из предложений было переведено как два, либо два предложения были слиты в одно.
Посмотреть на конфликт можно следующей командой:
resolver.show_conflict(db_path, conflicts_to_solve[10])
124 Дом Рэдли стоял в том месте, где улица к югу от нас описывает крутую дугу.
125 Если идти в ту сторону, кажется, вот—вот упрешься в их крыльцо.
126 Но тут тротуар поворачивает и огибает их участок.
122 The Radley Place jutted into a sharp curve beyond our house.
123 Walking south, one faced its porch; the sidewalk turned and ran beside the lot.
Видим, что строки 125 и 126 нужно бы сложить в одну, тогда правильное сопоставление выглядело бы как [124]-[122] и [125,126]-[123]. Как же научить этому программу? Так как она уже умеет выбирать лучший из предоставленных вариантов, то давайте ей их и предоставим. Конфликты у нас не очень большие, поэтому мы будем брать все возможные варианты разрешения конфликта, считать для них коэффициент похожести, суммировать и брать лучший. В данном случае это будет два варианта:
- [124,125]-[122] // [126]-[123]
- [124]-[122] // [125,126]-[123]
Что до стратегии выравнивания, то на данный момент лучше всего себя проявила такая, — сначала ищем конфликты при минимальной длине хорошей цепочки 2 (при таком параметре конфликтов найдется больше всего) и максимальной длиной конфликта не больше 6. Разрешаем все найденные конфликты, при этом большие конфликты становятся меньше так мы их частично разрешили. Затем увеличиваем оба параметра, ищем и снова разрешаем, добивая остатки.
Выглядит это так:
steps = 3
batch_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.resolve_all_conflicts(db_path, conflicts, model_name, show_logs=False)
vis_helper.visualize_alignment_by_db(db_path, output_path="img_test1.png", batch_size=400, size=(800,800), plt_show=True)
if len(rest) == 0:
break
Результат после первого шага:
И после второго:
На выходе мы имеем файл book.db. Теперь мы можем перейти к созданию книги.
Конфликты на концах интервала
Отметим, что алгоритм находит конфликты только между цепочками, поэтому разрывы могут остаться на концах интервала. Для разрешения таких конфликтов есть методы:
resolver.fix_start(db_path, model_name, max_conflicts_len=20)
и
resolver.fix_end(db_path, model_name, max_conflicts_len=20)
Книги и стили
За создание книжки отвечает модуль reader.
from lingtrain_aligner import reader
Сначала прочитаем из базы тексты, разбитые по абзацам, и данные о главах:
paragraphs_from, paragraphs_to, meta = reader.get_paragraphs(db_path, direction="from")
Параметр direction [«from», «to»] показывает на основе какого текста делить выравнивание на абзацы. Это дает нам возможность лучше подредактировать только один текст (например, русский) и на его основе сформировать книгу.
Теперь передадим данные в метод create_book():
reader.create_book(paragraphs_from, paragraphs_to, meta, output_path = f"lingtrain.html")
Получим вот такую книгу:
Это обыкновенная html страничка со встроенными стилями. В стили я добавил модификаторы, поэтому ее можно распечатать или сохранить как pdf, при этом шрифт с полями станут меньше.
Стилизация
У нас в загашнике осталась информация о соответствии пар предложений. Давайте ее задействуем, дополнительная подсветка поможет при подготовке материалов для обучения. Чтобы это сделать зададим параметр template.
reader.create_book(paragraphs_from, paragraphs_to, meta, output_path = f"lingtrain.html", template="pastel_fill")
reader.create_book(paragraphs_from, paragraphs_to, meta, output_path = f"lingtrain.html", template="pastel_start")
Шаблонов стилей пока немного, предлагайте свои кастомные стили, добавим их в библиотеку.
Кастомные стили
Зададим параметр template=»custom» и передадим объект styles. Этот объект представляет из себя массив CSS стилей, которые будут применены к предложениям каждого абзаца циклически.
Например, подсветим каждое втрое предложение в абзаце желтым цветом начиная со второго:
my_style = [
'{}',
'{"background": "#fafad2"}',
]
reader.create_book(paragraphs_from, paragraphs_to, meta, output_path = f"lingtrain.html", template="custom", styles=my_style)
Задавать можно любые применимые к 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)
Заключение
В голове есть еще много идей по доработкам и дополнительным фишкам. Например, можно сделать мультиязычные книги, можно доставать из текста ключевые предложения и искать по ним картинки (или генерировать нейросетями), можно делать пословное выравнивание и много чего еще. Пока же хочется поделиться промежуточным результатом с сообществом и выслушать ваше мнение.
Ссылки
[1] Код lingtrain-aligner на github.
[2] Выровнять тексты в Google Colab.
[3] Sentence Transformers модели.
[4] Making Monolingual Sentence Embeddings Multilingual using Knowledge Distillation
[5] Language Agnostic BERT Sentence Encoder.