Pull to refresh

Comments 45

Интересный проект, совершенно не понятно зачем вам это надо… но выглядит интересно. У меня вопрос, если в одном из языков предложение разобьется, скажем, на два абзаца, не поломается ли весь ваш код параллельной книги? Обязательно ли соблюдении количество, эммм «паралельных тегов»? Ведь при литературных переводах что-то может добавляться или убираться из текста в зависимости от желания переводчика
Для меня польза в том, чтобы делать себе и друзьям такие книжки. Я люблю изучать иностранные языки и это один способов их освоения, который мне подходит.
Если в одном из языков предложение разобъется на два, то в результате выравнивания оно будет склеено в одно, так что все должно быть хорошо. Более того, можно объединить несколько выравниваний и сделать книжку на трех и более языках. Про это писал тут.
Метки сами по себе нужны только для красивой разметки. Если их количество не будет совпадать, то просто каких-то названий глав или картинок не будет и все. Сама книга выравнивается без участия этих тегов.
Проект очень классный! И еще одно применение — помощь в создании параллельных корпусов (например, ruscorpora.ru/new/search-para-en.html), которые в свою очередь могут использоваться для научных исследований переводов и т. п.; автор писал вроде бы в предыдущих статьях, что помогает и в этом проекте.
Воу-воу, это очень круто.
Сервису надо жить в облаке :)
Такие планы есть, надо под это дело архитектуру подогнать.

А почему бы не использовать уже существующие языки разметки, вроде MarkDown или reStructured Text? В чем необходимость придумывать именно свой уникальный формат?

В том-то и дело, что в тех форматах есть много разного, а в этом только %%%%%.

Есть некоторая вроде бы нерешённая проблема - мультиязычная документация для программ (gfm markdown, asciidoc, doxygen).

В ту сторону нет интереса посмотреть? Что-нибудь типа плагина под obsidian может быть.

А в чем там проблема? Вроде бы пишешь доки на разных языках и всё :)
Больше форматов, красивых и разных.

Если серьезно, то для такого «птичьего языка» гораздо проще было реализовать парсинг, чем для того же MarkDown'а и тем более RST.

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

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

А-а, я, кажется, начинаю понимать о чем вы :)

Вам, наверное, показалось, что эта разметка используется непосредственно при генерации книги. Поясню — все, что нужно от разметки сырого текста, — это изъять из текста все строки, оканчивающиеся на %%%%%[имя метки] и прикопать их. Все. Из того, что осталось, делается параллельный корпус.

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

Вот тут ваша идея кажется интересной — да, можно на основе корпуса и координат меток вместо html делать MD или reST документ, который уже можно визуализировать сторонними библиотеками. Идея хорошая, спасибо.

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

Я уже хотел аргументировать, что мой «стандарт» парсится одной регуляркой, но что-то есть в ваших словах.
Есть только небольшие сомнения в удобстве для пользователя, — я как-то писал документацию в reST и там не то чтобы все было очевидно. Плюс надо за отступами было следить. Надо подумать, но, опять же, спасибо за идею.

И, кстати, что делать в таком случае со стилями? При моем подходе, при рендере html я добавляю всяхих классиков в span'ы, чтобы одинаковые предложения подсвечивались, картинки были одного размера, у абзацев были отступы и разделители и т.д.

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

я как-то писал документацию в reST и там не то чтобы все было очевидно

Возможно он немного непривычен, да. Но ведь не обязательно использовать именно его. Тот же Markdown тоже можно использовать, для него готовых парсеров и рендеров еще больше.

Например, для Python есть библиотека markdown, которая к тому же поддерживает расширение синтаксиса через написание собственных плагинов. Даже вот встроенный плагин metadata есть, сразу с примером указания автора документа и прочих атрибутов. Правда она возвращает не AST, а сразу HTML.

парсится одной регуляркой

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

У меня есть идея приложения для тренировки навыка письма на иностранном языке. Суть в том, что обучающийся переводит текст с родного языка на иностранный. Похоже на метод Ильи Франка но с обратным переводом и в письменном виде. Так вот, ваше приложение может стать неплохим источником текстов для обратного перевода!

Идею поддерживаю :)
А как проверять правильность ответа? Перевести же можно по разному.

Если брать книги, составленные по методу Ильи Франка, то там перевод близок к дословному. И я планировал брать английский текст и менять все буквы в словах каким-то символом, например #, так что у переводящего будет информацмя о количестве слов в предложении и их длине. Так что предложение "London is the capital of Great Britain" примет вид "###### ## ### ######## ## ##### #######". Знаки препинания можно оставять без изменений. Если переводящий только смог перевести только часть слов так, что они совпали со словами под маской, их можно открывать как в "поле чудес". Можно давать подсказки при ошибочном вводе.

У меня даже прототип был на втором питоне. Надо подучить программирование для вэба и запилить вэб приложение. У меня пока довольно смутные представления как это делается. Надеюсь что яваскрипт не обязательно для этого учить:)

Можете посмотреть мой код, там фронтенд отдельно от бэкенда. Написан на фреймворке Vue, он популярный, а большинство визуальных элементов уже реализовано (типа используешь теги <v-card>{{контент}}</v-card>, а это уже аккуратно оформленная карточка).
А сама идея у вас интересная, обязательно попробуйте развить.
Вы молодец!
Мне кажется было бы круто все это сделать в виде системы вариантов перевода для разных текстов и статей.
Или даже отдельных страниц )
Ну тут надо иметь очень большой набор таких переводов, чтобы рекомендовать варианты. Либо переводить машинно.
К сожалению, художественный перевод не факт что будет даже попадать по абзацам с оригиналом. Поэтому и существуют адаптированные под это книги с переводом. А есть еще и «Метод Ильи Франка», где делается подстрочник, и читаешь одно и то же сначала с ним потом без. В зависимости от уровня подготовки сначала делаешь больше акцент на одной, потом все больше и больше прпоускаешь куски с вкраплением а переходишь сразу туда где только лишь оригинал.

Но это всего лишь про контент. Проделанная работа интересная :)
Ну Илью Франка мы все, конечно, знаем) На выравнивание по предложениям, кстати, можно накрутить выравнивание пословное и делать такие книги самому.

Про абзацы — здесь у нас совпадение по абзацем не требуется, один из текстов можно вытянуть в единственную строку и все продолжить работать.

Хуже, если в одном из текстов не будет каких-то кусков (может быть, вы именно это имели в виду?), но такое, по моим наблюдениям, встречается довольно редко. Вот тут я выравниваю Мастера и Маргариту на восьми языках.
Я вот пару дней назад искал нечто подобное. Нашел интересный мне материал, исходники на LaTeX (по сути — текст, НЕ бинарный формат). Переключать окна с оригинала на перевод не удобно, программы сравнения текстов естественно не подходят. Как отнесется к этому Ваше приложение? Что потребуется «допиливать»?
Так как на вход надо подать текстовый файл, то надо достать текст их .tex файла. Это можно сделать при помощи pandoc.
Потом по желанию добавить разметку и вперед.
Учитель: Дети, запишите предложение…
Teacher: Children, write down the sentence ...

По-моему, это всё-таки sentence.

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

Да, различных приложений много. Но не всегда там интересные тексты.

UFO just landed and posted this here
Новых частей уже не будет.
А у вас есть готовые англо-русские книги?
Выкладываете куда-нибудь?
Можете выложить?

Это можно в телеграм канале посмотреть, там уже немного книг есть. А если у вас есть тексты, то можно из них сделать книжку.

А кто-нибудь встречал приложения для параллельных песен? Чтобы загрузить два разных варианта (например, оригинал и кавер) - и переключаться между ними в любом месте.

На amalgama-lab.com такое есть:
image

Там несколько режимов просмотра, и миллионы текстов уже есть. Новые, наверное, тоже можно добавлять.

Я не про тексты, а про музыку. Загружаешь два mp3, оно анализирует, находит запевы, припевы, сильные / слабые доли и т.п. и сопоставляет.

Это идея для стартапа.

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

Sign up to leave a comment.

Articles