Текстобзор: Diglossa

07.10.2022

Описание

Diglossa — набор программ для чтения и создания электронных книг. Отличительные особенности проекта: автоматизация создания параллельных текстов на разных языках, поддержка словарей, включая их генерацию, использование текстовых слоёв.

Проект развивает Михаил Быков с 2016 года. Сайты с информацией по проекту: diglossa.orgopen in new window и diglossa.ruopen in new window. Исходный код всех систем проекта открыт и размещён на GitHub: diglossaopen in new window, anthraxopen in new window, pecha.jsopen in new window и др.

Diglossa

Основной модуль Диглосы является десктопным приложением на Electronopen in new window + CouchDBopen in new window, другие модули используют сходный стек. Для последней версии (0.9.94open in new window) в релизах на GitHub есть релизы для macOS и нескольких дистрибутивов Linux, версии для Windows нет.

Возможности программы из описания:

  • импорт книг: .epub, .pdf, .fb2, .html, .md, .txt и — .dgl
  • импорт словарей — .sd, .dsl
  • автоматическое определение языка текста
  • вызов соответствующего языку словаря по alt-mouse-move
  • локальный и полнотекстовый поиск
  • закладки
  • импорт и параллельное подключение переводов той же книги
  • редактирование структуры книги
  • автоматическая проверка синхронизации абзацев
  • экспорт синхронизированных книг в формате .dgl (пока только в виде файла)
  • генерация многоязычных контекстных фразовых словарей[1]

Внешне Diglossa похожа на обычную читалку для электронных книг.

diglossa_yandexmap_01.png

diglossa_yandexmap_01.png

В плане обычного чтения обычных книг, Диглоса не предоставляет каких-то преимуществ по сравнению с другими читалками (например, CoolReaderopen in new window), примечательные возможности описаны далее.

В целом интерфейс программе не всегда интуитивно-понятный и содержит ошибки. Например, если не сделать генерацию индекса через главное меню (КнигаGenerate FTS) то при поиске будет пустое окно результатов. Даже если сделать поиск и там будут результаты, непонятно как вернуться назад к книге, в интерфейсе нет элементов для этого.

diglossa_yandexmap_01.png

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

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

Формат dlg

Diglossa может экспортировать и импортировать книги в собственном формате dlg. Книга в формате dlg это архив состоящий из файла с описанием в формате JSON и файлов книг в Markdown.

JSON-файл содержит стандартную информацию, вроде названия книги и лицензии, а так же список Markdown-файлов. Каждый Markdown-файл представляет собой книгу на определённом языке. Таким образом формат подходит для хранения параллельных текстов. Пример JSON файла из dlg-книги:

{
  "name": "Владимир-Ильич-Ленин-Государство-и-революция",
  "version": "1.0.0",
  "editor": "John Doe",
  "email": "john.doe@example.com",
  "homepage": "http://example.com",
  "license": "CC BY-SA",
  "keywords": "diglossa, bilingua, dgl",
  "date": "2022-10-06 17:31:17",
  "texts": [
    {
      "lang": "rus",
      "author": "Владимир Ильич Ленин",
      "title": "Государство и революция",
      "type": "md",
      "src": "Владимир-Ильич-Ленин-Государство-и-революция/ВладимирИльичЛенин-Государство-и-революция.rus.md",
      "origin": true
    },
    {
      "lang": "eng",
      "author": "V. I. Lenin",
      "title": "The State and Revolution",
      "type": "md",
      "src": "Владимир-Ильич-Ленин-Государство-и-революция/V.I.Lenin-The-State-and-Revolution.eng.md"
    }
  ]
}

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

Псевдо-markdown — потому что из блоковых тегов используется только один — p, или paragraph. Последовательность (псевдо) абзацев включает заголовки, абзацы, строки таблицы, строки списка, примечания и всё подобное горизонтальное. Таким образом, текст книги превращается в последовательность абзацев. Благодаря этой особенности формата .dgl можно легко сопоставить два или более параллельных текста. В синхронизируемых текстах каждый абзац соответствует своей параллельной паре. [1:1]

Слои

Концепция слоёв — одна из наиболее важных для текстологии идей описанных в материалах связанных с Diglossa. Авторский текст представляет из себя простой текст (plain text) или текст с минимальной разметкой. Такой текст удобнее всего хранить в системе управления версиямиopen in new window. Затем к такому тексту может быть добавлена дополнительная информация в виде «слоёв». В самой простейшей реализации, слой может представлять из себя набор позиций в тексте и информацию которую нужно в эти позиции добавить, например, ссылки на примечания.

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

В «Диглоссе» к исходному тексту могут быть добавлены, например, параллельные тексты целиком или любой текст к любому месту в исходном тексте. Основной целью при создании «Диглоссы» была работа с параллельными текстами. Однако параллельные тексты являются лишь одним из примеров слоя. Другие примеры: предисловия и справочники, комментарии, пагинации, логические разметки, картинки и примечания издателей, любая мета-информация и режим учебника, когда исходный текст представляется вставками, цитатами в обрамлении нового текста. (Эти возможности будут добавляться постепенно в следующих версиях.) Использовать сложную систему слоев без необходимости не обязательно.[2]

Такой подход решает следующие проблемы:

  • Авторское право не нарушается, в плане модификации произведения. Текст остаётся в неизменном виде, все изменения распространяются отдельно в виде слоёв;
  • Исходный текст не модифицируется и может быть легко проверен по первоисточнику (если сохранилась связь со сканом, которая тоже может быть представлена в виде слоя);
  • Слои можно создавать отдельно от произведения, для разных целей, разными людьми, можно представить себе коллективное редактирование слоёв по wiki-принципам.

Расширяя идею слоёв дальше, можно, представить себе систему которая позволит включать или выключать отдельные слои (например, как сейчас делается в онлайн картах)а затем пользоваться результатом или экспортировать результат в подходящий формат: PDF, fb2 и др.

Пример Яндекс-картopen in new window с выключенными и включенными слоями отображающими пробки и общественный транспорт:

diglossa_yandexmap_01.png

diglossa_yandexmap_01.png

diglossa_yandexmap_01.png

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

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

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

  • Возможны конфликты слоёв друг с другом.

Параллельные тексты

Diglossa позволяет подготавливать и читать параллельные тексты.

diglossa_yandexmap_01.png

Для подготовки параллельных текстов присутствует режим редактирования (запускается по ctrl+e).

diglossa_yandexmap_01.png

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

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

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

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

После того как абзацы сопоставлены книгу можно экспортировать в dlg-формат. Важно подчеркнуть, что для импорта или отображения параллельной книги из dlg-формата или его аналогов нет необходимости использовать базу данных. Вся информация необходимая для отображения уже содержится в Mrakdown-файлах — деление файлов на абзацы. Кроме файлов требуется только определённый алгоритм деления файлов на блоки, например, используемый Diglossa, при котором все блоки находятся на одном уровне — отсутствует иерархия (возможно, за исключением оглавления).

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

Словари

Отдельным крупным разделом Diglossa являются словари. Помимо простой загрузки словарей в Diglossa есть инструменты для их генерации. В качестве исходных данных для словарей используются wiktionary.orgopen in new window или данные самой книги. Опубликованные инструменты относятся к следующим языкам: греческий, латинский, санскрит, тибетский, китайский.

Некоторые инструменты можно использовать отдельно от Diglossa, напримерopen in new window веб-приложение anthraxopen in new window как словарь греческого языка:

diglossa_yandexmap_01.png

Другой пример — контекстные словари Morpheus:

Для работы достаточно скопировать тибетский текст (utf-8) где угодно на десктопе и затем провести мышкой над тибетской фразой в «Морфее». Справа будут показаны значения из активированных словарей и (возможно) служебные частицы в составе слова. Иногда Pecha.js не может определить словарный состав фразы однозначно, возникает всплывающее окошко для выбора варианта. (Отмечается слегка розовым цветом.) Также можно проанализировать состав правильно определенного сложного слова из нескольких слогов, кликнув на нем. В его структуре тоже могут оказаться неоднозначности. В результате возникает забавная лесенка вариантов состава слова, вплоть до слов из одного слога, самых древних. В целом это дает отличный инструмент для конструирования возможного смысла слова и представление о его возникновении и развитии.[2:1]

diglossa_yandexmap_01.png

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

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

Заключение

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

Не все идеи на данный момент реализованы, часть функций выглядит ещё сырой. На данный момент проект Diglossa выглядит прототипом, проверкой концепцииopen in new window. Это важный шаг, чтобы проверить идеи на работоспособность и полезность. С точки зрения текстологии особый интерес представляют алгоритмы работы со слоями, параллельными текстами и словарями.

Таким образом, я надеюсь, Diglossa.js и семейство «Морфей» являются неким предварительным прообразом библиотеки будущего, когда распространяется не книга в переплете, а только лишь необходимая часть текста с необходимым адекватным аппаратом и адекватным локальным словарем.[2:3]


  1. Diglossa.js — инструмент медленного чтения, Михаил Быков, OSSDEVCONF-2021open in new window ↩︎ ↩︎ ↩︎

  2. «Диглосса» и «Морфей»: герменевтика, plain text и локальные словари (2019)open in new window ↩︎ ↩︎ ↩︎ ↩︎

Последниее изменение: