Lyrics

♪♪ You can do anything you set your mind to, man ♪♪ #sanderlei

Lyrics
Wednesday Dance
Lady Gaga — Bloody Mary | TikTok

LETRA
Wandinha Dance
Tradução em Português

Lyrics
Avatar: The Way of Water
The Weeknd — Nothing Is Lost (You Give Me Strength)

Lyrics
BTS V — It’s Beginning To Look A Lot Like Christmas

Lyrics
Mockingbird — Eminem

Lyrics
Calm Down — Rema

Текст
Calm Down — Rema — Русский перевод

LETRA
Gato de Noche — Bad Bunny & Ñengo Flow

Lyrics
Gato de Noche — English Translation — Bad Bunny & Ñengo Flow

Lyrics
Escapism — RAYE

Şarkı Sözleri
Escapism — RAYE — Türkçe Çeviri

Songtext
Escapism — RAYE — Deutsche Übersetzung

Testo
Escapism — RAYE — Traduzione Italiana

Lyrics
LET GO — Central Cee

Lyrics
​golden hour — JVKE

Lyrics
BLUE: SSD — DAGames

Lyrics
Rush — Ayra Starr

Lyrics
(歌詞) — Joji

Songtexte
(歌詞) — Joji

Lyrics
(歌词) — Joji

Lyrics
(歌詞) — Joji

Lyrics
(歌詞) — Joji

Lyrics
SPIT IN MY FACE! — ThxSoMch

Lyrics
not a home — Pardyalone

เนื้อเพลง
not a home — Pardyalone — แปลภาษาไทย

Lyrics
i’m yours — Isabel LaRosa

ترانه
i’m yours — Isabel LaRosa — ترجمه و متن ترانه

Текст песни
THE STORY OF ALISHER — Oxxxymiron

Lyrics
THE STORY OF ALISHER — Oxxxymiron — English Translation

Lyrics
(LYRIC) — Joji

歌詞
Shinunoga E-Wa — Fujii Kaze

Lyrics
Shinunoga E-Wa — Fujii Kaze — English Translation

Lyrics
Shinunoga E-Wa — Fujii Kaze — Romanized

Текст
Shinunoga E-Wa — Fujii Kaze — Русский перевод

Lời bài hát
See Tình — Hoàng Thuỳ Linh

Lyrics
See Tình — Hoàng Thuỳ Linh — English Translation

LETRA
ARRANCARMELO — WOS

Lyrics
ARRANCARMELO — WOS — English Translation

Testo
ARRANCARMELO — WOS — Traduzione Italiana

LETRA
QUEVEDO — BZRP Music Sessions 52

Lyrics
QUEVEDO — BZRP Music Sessions 52 — English Translation

Testo
QUEVEDO — BZRP Music Sessions 52 — Traduzione Italiana

LETRA
SIGUE — BENY JR

Lyrics
SIGUE — BENY JR — English Translation

Paroles
SIGUE — BENY JR — Traduction Française

Lyrics
My Type — Saweetie

เนื้อเพลง
My Type — Saweetie — แปลภาษาไทย

Songtext
Weihnachtsmann & Co. KG (Intro Song) — SuperRTL

Lyrics
Weihnachtsmann & Co. KG (Intro Song) — SuperRTL — English Translation

歌詞
すずめの戸締まり — すずめ

Lyrics
すずめの戸締まり — すずめ — English Translation

LETRA
Aura — Cuco

Lyrics
Aura — Cuco — English Translation

Låttexter
Aura — Cuco — Svensk översättning

LETRA
Gatita — Bellakath

Lyrics
Gatita — Bellakath — English Translation

가사
Ditto — NewJeans (뉴진스)

Lyrics
Ditto — English Translation — NewJeans (뉴진스)

Lyrics
Ditto — Romanized — NewJeans (뉴진스)

Lyrics
O Holy Night — Christmas Songs

Lyrics
Jingle Bells — Christmas Songs

Lyrics
The Twelve Days of Christmas

가사
Ditto — NewJeans

Lyrics
Ditto — NewJeans — English Translation

Lyrics
Ditto — NewJeans — Romanized

Tekst
Loš Sam Ti Ja — Džordži

Lyrics
Loš Sam Ti Ja — Džordži — English Translation

Lyrics
(歌詞) — Joji

LETRA
NINGUÉM ME ENSINOU — Lagum

LETRA
Pepas — Farruko

LETRA
iPhone 14 Pro Max #sanderlei

Sanderlei Silveira
Morro de São Paulo — BA #sanderlei

Sanderlei Silveira
Morro de São Paulo — BA #sanderlei

LETRA
Brisa — IZA

Sanderlei Silveira
São João — Festa Junina — Salvador BA #sanderlei

LETRA
ANAVITÓRIA — O Tempo É Agora

Sanderlei Silveira
São João — Festa Junina — Salvador BA

Sanderlei Silveira
Sanderlei Silveira — Capoeira

Sanderlei Silveira
Salvador BA #sanderlei

Sanderlei Silveira
Salvador BA

Sanderlei Silveira
Mont Blanc — France #sanderlei

Sanderlei Silveira
Costão do Santinho #sanderlei

Sanderlei Silveira
Costão do Santinho — Senhor Do Tempo — Charlie Brown Jr.

Sanderlei Silveira
Costão do Santinho — Lutar Pelo Que É Meu — Charlie Brown Jr.

#sanderlei

Sanderlei Silveira
Quem é Sanderlei Silveira?

Lyrics
My Type — Saweetie

Lyrics
Weihnachtsmann & Co. KG (Intro Song) — SuperRTL

Lyrics
すずめの戸締まり — すずめ

Lyrics
(歌詞) — Joji

Lyrics
Aura — Cuco

Lyrics
Gatita — Bellakath

Lyrics
(歌詞) — Joji

Lyrics
Mad Max — Lil Durk & Future

Lyrics
(歌词) — Joji

Lyrics
Ditto — NewJeans (뉴진스)

Lyrics
(歌詞) — Joji

Lyrics
O Holy Night — Christmas Songs

Lyrics
(歌詞) — Joji

Lyrics
(歌詞) — Joji

Lyrics
Jingle Bells — Christmas Songs

Lyrics
(歌詞) — Joji

Lyrics
The Twelve Days of Christmas

Lyrics
Gato de Noche — Bad Bunny & Ñengo Flow

Lyrics
(歌詞) — Joji

Lyrics
(LYRIC) — Joji

Lyrics
Loš Sam Ti Ja — Džordži

Lyrics
Wednesday Dance

LETRA
Wandinha Dance

Lyrics
Avatar: The Way of Water

Lyrics
BTS V — It’s Beginning To Look A Lot Like Christmas

Lyrics
Mockingbird — Eminem

Lyrics
Escapism — RAYE

Lyrics
Mad Max — Lil Durk

Lyrics
BLUE: SSD — DAGames

Lyrics
(歌詞) — Joji

Lyrics
Rush — Ayra Starr

Lyrics
SPIT IN MY FACE! — ThxSoMch

Lyrics
(LYRIC) — Joji

Lyrics
not a home — Pardyalone

Lyrics
i’m yours — Isabel LaRosa

Lyrics
Shinunoga E-Wa — Fujii Kaze

Lyrics
See Tình — Hoàng Thuỳ Linh

Lyrics
ARRANCARMELO — WOS

Lyrics
QUEVEDO — BZRP Music Sessions 52

Lyrics
SIGUE — BENY JR

Lingtrain.

Приложение для создания мультиязычных книг и параллельных корпусов / Хабр

Хочу показать, как создать мультиязычный параллельный корпус и книги при помощи пет-проекта, которым я занимаюсь несколько лет.

Для примера возьмем 10 редакций «Мастера и Маргариты» Михаила Булгакова (ru, uk, by, en, fr, it, es, de, hu, zh). Сначала выровняем девять переводов с оригиналом, а затем выровняем все вместе. Получим параллельный корпус на 10 языках и много красивых книг.

Приложение

Lingtrain Alignment Studio — это веб-приложение, основная логика которого выполняется при помощи библиотеки lingtrain-aligner. Выравнивать можно прямиком из кода на python (пример будет ниже), либо через приложение. В приложении будет удобней разрешать конфликты и там есть редактор, позволяющий корректировать получающийся корпус плюс дополнительные опции по верстке. Код у проекта открытый, можно посмотреть как все работает внутри.

Механизм выравнивания происходит при помощи эмбеддингов мультиязычных языковых моделей и логики по их сравнению. Это тема для отдельного разговора, я лишь напомню, что эмбеддингами в машинном обучении называют сжатые векторные представления данных, несущие в себе информацию об этих данных. В нашем случае это тексты, а информация, сохраняемая в эмбеддингах, несет в себе смысл этих текстов. Можно математически измерять близость текстов по смыслу просто меряя расстояние между соответствующими векторами. В библиотеке поддерживаются модели LaBSE (100+ языков) и sentence-transformers (50+ языков).

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

Тексты

Сначала наши тексты необходимо подготовить. Я буду показывать на примере «Мастера», вы можете взять свои тексты. Главное, чтобы в них содержалась одна и та же информация, например, оригинал художественного произведения и его перевод. Сохраним тексты в отдельные txt файлы и назовем их master_ru.txt, master_en.txt, master_de.txt и так далее.

В сырых текстах может содержаться лишняя для нас информация — номера страниц, сноски и примечания, содержание, что-нибудь про конкретное издание в начале или конце текста. Это удаляем.

Имеем следующие тексты:

Мастер и Маргарита
М. А. Булгаков.

ЧАСТЬ ПЕРВАЯ

Глава 1

Никогда не разговаривайте с неизвестными

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

The Master and Margarita
Mikhail Bulgakov

BOOK ONE

CHAPTER 1

Never Talk with Strangers

At the hour of the hot spring sunset two citizens appeared at the Patriarch’s Ponds.

One of them, approximately forty years old, dressed in a grey summer suit, was short, dark-haired, plump, bald, and carried his respectable fedora hat in his hand. His neatly shaven face was adorned with black horn-rimmed glasses of a supernatural size.

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

Для этого пометим ее специальной разметкой.

Метка

Значение

Пример

%%%%%author.

Автор

Лю Ци Синь%%%%%author.

%%%%%title.

Название

Задача трёх тел%%%%%title.

%%%%%qtext.

Цитата

Тот, кто спасает одну жизнь, спасает весь мир.%%%%%qtext.

%%%%%qname.

Подпись под цитатой

Народная мудрость%%%%%qname.

%%%%%h2. %%%%%h3. %%%%%h4. %%%%%h5. %%%%%h5.

Заголовоки различного размера

Глава 1%%%%%h3.

Теги надо проставить в конце строк. Теперь наши тексты выглядят так:

Мастер и Маргарита%%%%%title.
М. А. Булгаков%%%%%author.

ЧАСТЬ ПЕРВАЯ%%%%%h2.

Глава 1%%%%%h3.

Никогда не разговаривайте с неизвестными%%%%%h3.

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

The Master and Margarita%%%%%title.
Mikhail Bulgakov%%%%%author.

BOOK ONE%%%%%h2.

CHAPTER 1%%%%%h3.

Never Talk with Strangers%%%%%h3.

At the hour of the hot spring sunset two citizens appeared at the Patriarch’s Ponds.

One of them, approximately forty years old, dressed in a grey summer suit, was short, dark-haired, plump, bald, and carried his respectable fedora hat in his hand. His neatly shaven face was adorned with black horn-rimmed glasses of a supernatural size.

Полные версии всех размеченных текстов можно найти здесь.

Выравнивание

Скрипты на питоне

Сначала покажу вам как можно выровнять тексты на python. Плюс такого подхода в том, что это можно делать в Colab’е (интерактивная среда от Google, дающая бесплатный доступ к видеокартам) с использованием GPU, это ускоряет процесс первичного выравнивания в разы, если у вас нет видеокарты на локальном компьютере. Однако для длинных текстов может понадобиться контролировать процесс выравнивания и менять параметры по ходу, а это удобней делать через веб-интерфейс. Подходы можно совместить, так как в приложении теперь поддерживается загрузка выравнивания (хранение реализовано в виде sqlite базы данных).

Вот рабочий Colab-блокнот, его можно менять, вставлять свои тексты и экспортировать результат в разные форматы.

Давайте разберем как это работает. Сначала устанавливаем библиотеку:

 pip install lingtrain-aligner==0.8.7

Импортируем компоненты:

from lingtrain_aligner import (
    preprocessor,
    splitter,
    aligner,
    resolver,
    reader,
    helper,
    vis_helper,
    metrics,
)

Далее прочитаем наши текстовые файлы:

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]

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

Сохраним структуру абзацев и разобъем на строки:

text1_prepared = preprocessor.mark_paragraphs(text1)
text2_prepared = preprocessor.mark_paragraphs(text2)
splitted_from = splitter.split_by_sentences_wrapper(text1_prepared , lang_from)
splitted_to = splitter.split_by_sentences_wrapper(text2_prepared , lang_to)

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

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=200, \
                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: 42
total conflicts: 45

При этом в переменную conflicts_to_solve попадут конфликты, которые соответствуют заданным параметрам поиска, а в переменную rest остальные.

Выведем на экран статистику:

resolver.get_statistics(conflicts_to_solve)
resolver.get_statistics(rest)
('2:3', 25)
('3:3', 5)
('3:6', 2)
('3:5', 2)
('2:4', 2)
('3:4', 2)
('2:1', 1)
('3:2', 1)
('5:5', 1)
('4:5', 1)
('5:8', 1)
('5:9', 1)

Видим, что чаще всего попадаются конфликты размера 2:3, это означает, что переводчик на английский часто разбивал одно предложение на два.

Посмотреть на конфликт можно следующей командой:

resolver.show_conflict(db_path, conflicts_to_solve[10])
105 – Браво! – вскричал иностранец, – браво!
106 Вы полностью повторили мысль беспокойного старика Иммануила по этому поводу.
122 'Bravo!' cried the foreigner.
123 'Bravo!
124 You have perfectly repeated restless old Immanuel's thought in this regard.

Видим, что строки 122 и 123 нужно бы сложить в одну, тогда правильное сопоставление выглядело бы как [105]-[122,123] и [106]-[124]. Как же научить этому программу? Так как она уже умеет выбирать лучший из предоставленных вариантов, то давайте ей их и предоставим. Конфликты у нас не очень большие, поэтому мы будем брать все возможные варианты разрешения конфликта, считать для них коэффициент похожести, суммировать и брать лучший. В данном случае это будет два варианта:

[105]-[122] // [106]-[123,124]
[105]-[122,123] // [106]-[124]

Что до стратегии выравнивания, то на данный момент лучше всего себя проявила такая, — сначала ищем конфликты при минимальной длине хорошей цепочки 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

Результат после первого шага:

После второго:

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

На этом этапе вы уже можете сверстать книгу с подсветкой соответствующих предложений.

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

Давайте посмотрим, как можно сделать то же самое при помощи веб приложения.

Веб-приложение

Для запуска приложения я оформил несколько версий Docker образов. Текущая версия 8.4. Самый большой вариант работает на модели LaBSE от Google (поддерживает более 100 языков с хорошим качеством), средняя — на модели от sentence-transformers (50 языков, такое же хорошее качество), маленькая — на модели rubert-tiny-v2 от Давида Дале (поддерживает только русский и английский языки, зато быстро работает на CPU без всяких видеокарт, если делаете русско-английскую книжку или корпус, то выбирайте ее).

Бета-версия

На этой же модели я запустил бета-версию приложения по адресу beta.lingtra.in. Сервер там не очень мощный, но можно выравнивать русско-английские тексты и экспортировать их разные форматы (html, tmx, lt (формат lingtrain) и т. д.).

Docker

Вот список образов:

  • lingtrain/studio:v8.4

  • lingtrain/studio:v8.4-labse

  • lingtrain/studio:v8.4-tiny

Необходимо, чтобы в вашей системе был установлен Docker. Затем нужно скачать образ командой:

docker pull lingtain/studio:v8.4

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

Затем запустить приложение. В данном случаем используем папки E:\data и E:\img, пример для Windows. В Linux все запускается аналогично.

docker run -v E:\data:/app/data -v E:\img:/app/static/img -p 80:80 lingtrain/studio:v8.4

Приложение запустится на 80-м порту и его можно будет открыть в браузере по адресу localhost.

Более подробно про интерфейс приложения я писал в этой статье и записывал видео с примером его использования.

Новый функционал

В последней версии (8.4) я добавил экспорт и импорт выравнивания (оно хранится в формате sqlite). Так что можно быстро выравнять ваши тексты в Colab’е, а затем загрузить ваше выравнивание в бета-версию Lingtrain и там его подредактировать.

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

Продолжим

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

Выберем языки (английский и русский). Затем загрузим наши размеченные тексты.

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

Переходим на вкладку Align, выбираем наши документы и создаем проект выравнивания:

На этой же вкладке можно сразу загрузить ранее созданное в другом месте выравнивание в формате lt. Это то самое выравнивание en_ru_master.db, которое мы делали в секции про питон (оно в формате db, чтобы показать, что это база данных). Можно переименовать его в *.lt и загрузить.

После создания проекта можно начать выравнивать:

Один батч — 200 строк левого текста и пропорциональное количество строк правого. В нашем случае в английской редакции примерно 10 тысяч строк, поэтому батчей получается 49.

Жмем на Align next и запускаем первичное выравнивание. После этого мы увидим текущую визуализацию выравнивания по батчам:

Так как количество предложений в текстах отличается очень сильно, то, хоть мы и берем батчи с пересечением, в какой-то момент можем выходить за рамки правильных вариантов (посмотрите на 5 батч):

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

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

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

Если на всех картинках видна такая диагональ, то переходм к конфликтам.

Конфликты

Мы можем посмотреть сколько на текущий момент несоответствий в выравнивании и как они выглядят:

Параметры Handle start и Handle finish определяют конфликты на концах выравнивания. Жмем на Resolve all.

После этого шага могут остаться очень длинные конфликты, когда отрезку в 20+ предложений нужно сопоставить такое же большое количество других. Это ограничение добавленно, так как вариантов в этом случае слишком много и лучше просто сократить такой конфликт в ручном режиме в редакторе (об этом ниже), а потом уже добаить конфликт автоматически.

Редактор

Самая насыщенная UI часть приложения, так как возился с ней дольше всего.

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

Можно добавить к тексту машинный перевод в секции Subscript. Нужно скачать или открыть текст в этой секции (если открыть, то можно сразу перевести за счет браузера), перевести его, сохранить его в файл и загрузить обратно.

машинно переведенный текст

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

Выравнивание через перевод

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

Экспорт

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

На этом этапе мы имеем выравнивание, которое можно преобразовать в различные форматы.

Книга

Мы можем настроить внешний вид книги и посмотреть как она будет выглядеть:

Скачать ее можно в html формате. При помощи внешних скриптов можно сверстать ее в еще более красивый вариант с обложкой, содержанием и т.д. Об этом писал здесь.

TMX

Можно скачать выравнивание в формате TMX.

Database

Среди вариантов экспорта нам сейчас нужно выбрать формат базы данных (Database). Нажав на кнопку Download мы скачаем файл в формате lt.

6b773d7aebd045e399c57d033b00460c.lt

Если мы выравнивали русско-английскую книгу, то давайте переименуем файл в master_en_ru.lt.

Собираем все вместе

Как говорилось ранее, чтобы сделать мультиязычный параллельный корпус или книгу, нам понадобятся 9 файлов с выравниваниями:

master_by_ru.lt
master_de_ru.lt
master_en_ru.lt
master_es_ru.lt
master_fr_ru.lt
master_hu_ru.lt
master_it_ru.lt
master_uk_ru.lt
master_zh_ru.lt

Их можно скачать тут.

Чтобы выравнять их между собой, воспользуемся методом из библиотеки lingtran-aligner. Положим выравнивания в папку db и запустим небольшой python скрипт.

from lingtrain_aligner import reader, saver, preprocessor
from operator import itemgetter
import json
db_path2 = "db/master_en_ru.lt"
db_path3 = "db/master_de_ru.lt"
db_path4 = "db/master_zh_ru. lt"
db_path5 = "db/master_by_ru.lt"
db_path5 = "db/master_uk_ru.lt"
db_path6 = "db/master_hu_ru.lt"
db_path7 = "db/master_it_ru.lt"
db_path8 = "db/master_fr_ru.lt"
db_path9 = "db/master_es_ru.lt"
paragraphs_dict, par_ids, meta_info = reader.get_paragraphs_polybook(
    db_paths=[db_path2, db_path3, db_path4, \
              db_path5, db_path5, db_path6, \
              db_path7, db_path8, db_path9]
)
def save_corpora(paragraphs, lang, output_path):
    if lang not in paragraphs:
        print(f"{lang} language was not found in data.")
        return
    flat_list = [sent for par in paragraphs[lang] for sent in par]
    print(f"There are {len(flat_list)} sentences for {lang} language.")
    with open(output_path, "w", encoding="utf-8") as fout:
        fout.write("\n".join(flat_list))
for lang in ["ru", "de", "en", "fr", "zh", "uk", "by", "es", "it", "hu"]:
    output_path = f"texts/{lang}.txt"
    save_corpora(paragraphs_dict, lang, output_path)

В папку texts будут сохранены файлы ru. txt, en.txt, fr.txt и т.д. В каждом из них будет одинаковое количество строк и они будут выровнены друг с другом.

Итог и планы

  • Мы получили мультиязычный параллельный корпус на 10 языках, его я оформил в отдельный проект и выложил на GitHub — Woland-10.

  • Из каждого файла с выравниванием можно сделать параллельную книгу и скачать ее в формате html. Можно немного заморочиться и сделать книгу в pdf формате. Например, такую. Инструкция здесь.

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

  • Сейчас работаю над книгой-трансформером. Об этом расскажу в следующий раз.

Ссылки

  • Градиент обреченный. Тут пишу про свои проекты, машинное обучение и работу. Буду рад общению.

  • Чат Ligntrain. Если не получается что-то запустить, есть идеи, или просто любите языки — пишите в чат.

  • Репозиторий с проектом. Написано на Python + Vue.

  • На кофе с печеньками. Можно поддержать проект чеканой монетой.

🎉 Всех с Наступающим! Мира, счастья и добра в Новом Году!

Новое эссе Путина об Украине раскрывает имперские амбиции

Президент России Владимир Путин изложил историческую основу своих претензий к Украине в спорном новом эссе, которое в некоторых кругах сравнивают с объявлением войны. Статья объемом 5000 слов под названием «Об историческом единстве русских и украинцев» была опубликована 12 июля и включает в себя многие тезисы, которые Путин предпочитал на протяжении последних семи лет необъявленной войны между Россией и Украиной.

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

В одном особенно зловещем пассаже он открыто ставит под сомнение законность границ Украины и утверждает, что большая часть современной Украины оккупирует исторически русские земли, прежде чем официально заявить, что «Россия была ограблена». В другом месте он намекает на новую аннексию украинской территории, заявляя: «Я все больше убеждаюсь в этом: Киеву просто не нужен Донбасс».

Путин заканчивает свой длинный трактат тем, что намекает, что сама украинская государственность в конечном счете зависит от согласия Москвы, заявляя: «Я уверен, что настоящий суверенитет Украины возможен только в партнерстве с Россией».

Неудивительно, что статья Путина вызвала оживленную дискуссию в Украине и за ее пределами. Президент Украины Владимир Зеленский сначала потроллил своего российского коллегу и заявил, что у Путина явно много свободного времени.

Другие идентифицировали многочисленные имперские отголоски и плохо завуалированные угрозы в попытке Путина сыграть историка-любителя. Старший научный сотрудник Стокгольмского форума свободного мира Андерс Ослунд назвал статью «мастер-классом по дезинформации» и «в шаге от объявления войны». Между тем российская газета «Московский комсомолец» заявила, что это эссе было «последним ультиматумом Путина Украине».

Никто в Украине не нуждается в напоминании о мрачном контексте трактата Путина. С весны 2014 года между Россией и Украиной идет вооруженный конфликт, в результате которого погибло более 14 000 украинцев, а миллионы людей остались без крова. Кремль продолжает оккупировать украинский Крымский полуостров и большую часть промышленного Донбасса на востоке Украины. Ранее в этом году Москва сосредоточила более 100 000 военнослужащих вблизи границы с Украиной, что некоторые военные наблюдатели назвали генеральной репетицией полномасштабного российского наступления.

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

Мелинда Харинг, Заместитель директора, Евразийский центр, Atlantic Council: Бредовая и опасная статья Путина раскрывает то, что мы уже знали: Москва не может позволить Украине уйти. Один только шедевр российского президента должен вдохновить Запад удвоить свои усилия, чтобы укрепить способность Киева выбирать свое собственное будущее, и Зеленский должен немедленно отреагировать и преподать Путину урок истории.

Даниил Лубкивский, Директор, Киевский форум безопасности: Путин понимает, что украинская государственность и украинская национальная идея представляют угрозу российскому империализму. Он не знает, как решить эту проблему. Известно, что многие в его ближайшем окружении выступают за применение силы, но пока у российского лидера нет решений. Вместо этого он написал дилетантскую пропагандистскую статью, предназначенную для того, чтобы предоставить сторонникам своей идеологии «русского мира» тезисы для обсуждения. Однако его аргументы слабы и просто повторяют то, что антиукраинские российские шовинисты твердят десятилетиями. Эссе Путина — выражение имперской агонии.

Подписаться на UkraineAlert

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

Александр Мотыль, Профессор политологии, Rutgers University-Newark: В статье нет ничего, что уже не было сказано в имперской, советской или постсоветской российской историографии или пропаганде. Поскольку статья ничего нового не говорит, ничего нового в политике Путина в отношении Украины она не предвещает. (За одним возможным исключением: это не читается так, как будто написал бы человек, планирующий полномасштабное вторжение.)

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

Брайан Уитмор, Старший научный сотрудник-нерезидент, Atlantic Council: Неточные и искаженные утверждения Владимира Путина не новы и не удивительны. Это всего лишь последний пример газлайтинга со стороны кремлевского лидера. В конце концов, это человек, который, как известно, сказал президенту США Джорджу Бушу, что Украина не является реальной страной, во время широко освещавшегося обмена мнениями на саммите НАТО в Бухаресте в 2008 году. Утверждение Путина о том, что «настоящий суверенитет Украины возможен только в партнерстве с Россией», абсурдно лицемерно. Для Украины партнерство с Россией в основном означало подчинение России.

Заявление Путина о том, что Россию и Украину связывают «духовные, человеческие и цивилизационные узы, формировавшиеся веками», игнорирует и преуменьшает историческую связь Украины с Европой, независимой от России, в составе Великого княжества Литовского и Речи Посполитой. Эссе российского лидера говорит о нем больше, чем об Украине. Это показывает, что он правитель-реваншист, который готов создавать ложные исторические нарративы, чтобы оправдать свои имперские мечты.

Алексей Гончаренко, Народный депутат Украины, Европейская солидарность: Статья Путина якобы об истории, но на самом деле речь идет о будущем, а не о прошлом. Украина держит ключ к мечтам Путина о восстановлении статуса великой державы России. Он болезненно осознает, что без Украины это будет невозможно.

Эссе Путина на самом деле не содержит ничего нового. Действительно, мы уже много раз слышали эти же аргументы. Однако его статья помогает прояснить, что нынешний конфликт не связан с контролем над Крымом или Донбассом на востоке Украины; это война за всю Украину. Путин совершенно ясно дает понять, что его цель — прочно удержать Украину в сфере влияния России и предотвратить евроатлантическую интеграцию Украины.

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

События Центра Евразия

Евгений Федченко, Главный редактор, StopFake: В статье Путина нет ничего нового. Из года в год он продолжает отрицать свободу действий украинцев, основывая свои аргументы на бескомпромиссно неоимперском видении геополитики. В своем эссе Путин еще раз ставит под сомнение право Украины на существование и посылает слабо завуалированную угрозу, что Украина потеряет больше территорий, если будет позиционировать себя как «антироссийскую». Но территория здесь, в конце концов, не самое главное. Это просто разменная монета. Путин хочет, чтобы последнее слово в определении подхода Украины к истории, культуре, языку и идентичности. Это решающие фронты в войне России против Украины.

Брайан Боннер, Главный редактор , Киев Сообщение: В этом новом эссе подчеркивается, что Путин никогда не изменится. И он не исключительный. Напротив, снисходительные, империалистические и исторически неверные взгляды Путина на Украину, к сожалению, разделяют слишком многие в России. Это означает, что Украине и Западу придется изменить и ужесточить свою реакцию, чтобы сдержать и изолировать Кремль, который не имеет ничего общего с демократической, плюралистической нацией, которую хочет для себя большинство украинцев.

Тарас Кузио, Профессор, Национальный университет Киево-Могилянская академия: Владимир Путин в очередной раз продемонстрировал, что он не совсем понимает Украину и никогда серьезно не изучал украинские опросы общественного мнения. Его заявление о том, что «Россия сделала все, чтобы остановить кровопролитие» на Украине, абсурдно и оскорбительно. Украинцы слишком хорошо осведомлены о продолжающемся военном вмешательстве России в их страну, так же как они осознают безжалостную антиукраинскую пропаганду, которая доминировала в подконтрольных Кремлю российских СМИ в течение последних семи лет. Это эссе также доказывает, что Путин все еще отрицает свою личную ответственность за крах двусторонних отношений между Россией и Украиной. Вместо этого он продолжает винить во всем антироссийские заговоры и иностранные интриги.

Если западные политики хотят понять причины единственной активной войны в Европе, им нужно начать серьезно относиться к путинскому империализму. Он придерживается тех же шовинистических взглядов на Украину с 2000-х годов и неоднократно ставил под сомнение историческую легитимность страны. Это мировоззрение удобно представлено в его последнем эссе, которое не оставляет сомнений в том, что он намерен бесконечно продолжать борьбу за контроль над Украиной.

Владимира Ермоленко, Главный редактор, UkraineWorld. org: Статья Путина показывает, что Россия снова и снова будет использовать историю для оправдания своих политических и военных действий. Современная Россия по существу остается империей. Прежде чем аннексировать новые территории, Кремль стремится аннексировать историю и ассимилировать своих соседей, отрицая их существование как отдельных национальных идентичностей.

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

Питер Дикинсон — редактор службы UkraineAlert Атлантического совета.

Дальнейшее чтение

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

Подробнее из УкраиныAlert

UkraineAlert — это комплексное онлайн-издание, которое регулярно публикует новости и анализ событий в политике, экономике, гражданском обществе и культуре Украины.

Миссия Евразийского центра заключается в укреплении трансатлантического сотрудничества в продвижении стабильности, демократических ценностей и процветания в Евразии, от Восточной Европы и Турции на западе до Кавказа, России и Центральной Азии на востоке.

Подробнее

Изображение: Президент России Владимир Путин отвечает на вопросы о своем недавнем эссе об украинско-российских отношениях. 13 июля 2021 г. (Sputnik/Алексей Никольский/Кремль через REUTERS)

yandex-english-to-french — Googlesuche

AlleBilderVideosBücherMapsNewsShopping

Suchoptionen

Sprache erkennen──────────DeutschEnglischFranzösischSpanischTürkisch──────────AfrikaansAlbanischAmharischArabischArmenischAserbaidschanischBaskischBelarussischBengalischBirmanischBosnischBulgarischCebuanoChinesisch (traditionell)Chinesisch (vereinfacht)DänischDeutschEnglischEsperantoEstnischFilipinoFinnischFranzösischGalicischGälisch [Schottland]GeorgischGriechischGujaratiHaiti-KreolischHaussaHawaiischHebräischHindiHmongIgboIndonesischIrischIsländischItalienischJapanischJavanischJiddischKannadaKasachischKatalanischKhmerKinyarwandaKirgisischKoreanischKorsischKroatischKurdischLaotischLateinLettischLitauischLuxemburgischMalagasyMalaiischMalayalamMaltesischMāoriMarathiMazedonischMongolischNepalesischNiederländischNorwegischNyanjaOriyaPaschtuPersischPolnischPortugiesischPunjabiRumänischRussischSamoanischSchwedischSerbischShonaSindhiSinghalesischSlowakischSlowenischSomaliSpanischSuaheliSüd-SothoSundane sischTadschikischTamilTatarischTeluguThailandishTschechischTürkischTurkmenischUigurischУкраинскийUngarischUrduUsbekischVietnamesischWalisischWestFriesischXhosaYorubaZuluAlle Sprachen anzeigen


FranzösischDeutschEnglischSpanischTürkisch──────────AfrikaansAlbanischAmharischArabischArmenischAserbaidschanischBaskischBelarussischBengalischBirmanischBosnischBulgarischCebuanoChinesisch (traditionell)Chinesisch (vereinfacht)DänischDeutschEnglischEsperantoEstnischFilipinoFinnischFranzösischGalicischGälisch [Schottland]GeorgischGriechischGujaratiHaiti-KreolischHaussaHawaiischHebräischHindiHmongIgboIndonesischIrischIsländischItalienischJapanischJavanischJiddischKannadaKasachischKatalanischKhmerKinyarwandaKirgisischKoreanischKorsischKroatischKurdischLaotischLateinLettischLitauischLuxemburgischMalagasyMalaiischMalayalamMaltesischMāoriMarathiMazedonischMongolischNepalesischNiederländischNorwegischNyanjaOriyaPaschtuPersischPolnischPortugiesischPunjabiRumänischRussischSamoanischSchwedischSerbischShonaSindhiSinghalesischSlowakischSlowenischSomaliSpanischSuaheliSüd-SothoSundanesischTadschikischTamilTatarischTeluguThailändischTschechischTürkischTurkmenischUigurischUkrainisch УнгарскийурдуУзбекскийвьетнамскийВалисскийзападно-фризскийкосаЙорубаЗулуАлле Sprachen anzeigen

Übersetzung

yandex-anglais

Англо-французский онлайн переводчик и словарь — Яндекс Переводчик словарь с транскрипцией, произношением и примерами употребления. Яндекс.

Ähnliche Fragen

Является ли Яндекс бесплатным переводом?

Как вы переводите в Яндексе?

Какой лучший французский переводчик?

Яндекс переводит лучше гугла?

англо-французский онлайн-переводчик и словарь

translate.yandex.com › словарь › en-fr › англо-французский онлайн-переводчик…

англо-французский онлайн-переводчик и словарь.

Яндекс Переводчик — Приложения в Google Play

play.google.com › магазин › приложения › подробности › id=ru.yan…

Bewertung 4,5

(216.523) · Костенлос · Android

Переводите между любой парой из 100 языков, когда вы в сети. • Переводите с французского, немецкого, итальянского, русского, испанского или турецкого на английский, пока …

Яндекс » Французско-английский переводчик

translate.glosbe.com › fr-en › Яндекс

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

Яндекс.Переводчик Отзывы — 2022 — Slashdot

slashdot.org › … › Machine Translation Software

Bewertung 2,0

(1)

27.01.2022 · Яндекс.Перевод отзывов пользователей из проверенных программ и сервисов… Программа поддерживает семь языков: английский (немецкий), французский (французский) …

yandex image translate — Feudo 43

feudo43.it › yandex-image-translate

Последним приложением в нашем списке лучших приложений для перевода изображений является Yandex Translate. … Как перевести «images» с английского на французский: переводы с …

«Яндекс перевод на английский язык | Французско-английский словарь | Reverso

Dictionary.reverso.net › french-english › «Yandex

‘Яндекс перевод на французский язык — английский Reverso словарь, см. также ‘Y’,yack’, yaourtière’,яхта’, примеры, определение, спряжение.

«Яндекс» выпустил мобильный веб-браузер для iPhone: «Яндекс» выпустил мобильный веб-браузер для iPhone
Парми с сервисами «Яндекс» и Yota Music: Среди этих сервисов «Яндекс» и Yota Music
«Яндекс» опубликовал новое исследование блогосферы рунета: «Яндекс» опубликовал новое исследование блогосферы рунета
Le joyau de sa collection peut être «Яндекс»: жемчужиной его коллекции может стать «Яндекс»

Яндекс.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *