Диглосса - plain text против инфомонстров

Jun 24, 2019

Михаил Быков, http://ru.diglossa.org, m.bykov@gmail.com

Диглосса: plain text против инфомонстров

В докладе описывается идеология и основания создания распределенного корпуса на основе plain-text в системе контроля версий, со свободной лицензией. На примерах Pecha.js, a.k.a. Morpheus-for-Tibetan, и приложения для работы с многоязычными текстами Diglossa.js.

The report describes the ideology and foundations of the creation of a distributed corpus (with free license) bases on plain-text under version control system. Using Pecha.js, a.k.a. Morpheus-for-Tibetan and and application for working with multilingual texts Diglossa.js as the examples .

Все обсуждаемые программы имеют свободную лицензию GNU GPL и опубликованы на ресурсе http://github.com/mbykov, там же опубликованы пакеты для Diglossa.js и семейства анализаторов Морфей для древнего Греческого, Тибетского, Китайского - для Windows, MacOS, Linux, подробное описание пакетов на сайте http://ru.diglossa.org (код для Санскрита устарел и будет полностью переработан).

keywords: Node.js, Electron.js, CouchDB, герменевтика, Тибетский, Китайский, Греческий, Санскрит, сообщество, free software, free license

Объект, поступок и понимание

Diglossa.js, и семейство анализаторов “Морфей”, в частности Pecha.js, a.k.a. Morpheus-for-Tibetan, не являются лингвистическими программами. Их работа основана на (воображаемом пока) корпусе текстов, а именно исходном авторском тексте, и всех (всех полностью) “реплик” диалога автора и его читателей: (откликов, описаний, комментариев, переводов, словарных статей, вторичных текстов, фейков, научных публикаций и т.д).

Цель этих программ - помочь в чтении и понимании древнего текста. Что я имею в виду, говоря о понимании? Чем поступок отличается от вещи? Поступок имеет значение, а вещь нет. (Мы можем приписать вещи значение, но это уже будет поступком). Говорение - поступок, но и понимание сказанного есть также поступок. Без поступка значения нет. Вот стоит себе вещь, и что. Поступок же влечет последствия, на последствия приходится реагировать, отвечать. Значение, это и есть ответственность за поступок. Ответственность значит, что нам придется совершать действия, связанные с поступком, и испытывать их последствия, то есть давать ответ. И нести ответ. Эта цепочка понятий связана необходимостью, из нее нельзя выбросить какое-то звено. Понять высказывание, значит включиться в диалог, и значит, включиться в традицию данного текста, дать ответ. Я здесь наметил лишь самый схематичный ход мыслей, я не могу тут вдаваться глубоко в герменевтическую проблематику. Я лишь хочу описать область языкознания, о которой идет речь.

Конечно, понимание корпуса как записи диалога автор-читатели полностью противоположно обычному пониманию корпуса в лингвистике. Предположим, что читатель текста должен дать ответ на читаемый текст, вступить в диалог с автором текста, присоединиться к традиции чтения данного автора. Он нуждается в инструменте - каким может быть этот инструмент диалога? Диалог с давно ушедшим автором, скажем, с Платоном, на первый взгдяд смотрится, наверное, странно. Но лишь на первый взгляд. Никакой мистики здесь нет. Мы задаем вопрос, и читая автора, ищем и получаем ответ. Но и мы отвечаем автору, и автор меняется. Сравните восприятие того же Платона сейчас и сто лет назад, до работ Гуссерля, Хайдеггера. (А у нас Библера, Ахутина, Бибихина и многих-многоих других). В наше время мы задаем иные вопросы, чем сто лет назад, мы сразу по-иному видим древнего автора, мы по-иному рассуждаем, огромная часть диалога уже пройдена, мы стоим на плечах гигантов, нам дальше видно. Автор стал иной, как мы изменяемся мыслью автора, так и он изменяется нашей мыслью. Это и есть понимание.

Чтобы не привнести современный образ мысли, (то, что мы теперь умеем думать, и то, как мы это умеем делать), Морфей, и Pecha.js, в частности, разработан и будет развиваться с оглядкой на древние грамматики, а не на современную лингвистику. То, что современная теория самим фактом ее применения безнадежно искажает мысль древнего автора, также может вызывать непонимание и отрицание. Но это вполне очевидно. Современная научная мысль в основе своей имеет предположение о сознании, отражающем объект и строящем теории об объекте. Конструируя экспериментальную ситуацию, мы можем сравнить предсказание нашей теории и результат эксперимента. Но древний автор этих основных предположений о сознании, теории и объекте не делал, и о них не знал, и знать не мог. Применяя научный метод к мысли древного (любого ино-культурного) автора, мы уже привносим в его мысль свой мир. Мысль автора и современная мысль логически несовместимы. (Примеров масса, достаточно обратить внимание). Лингвисты строят свой собственный диалог, он меня не интересует. Наука получает правильный, объективный результат. Это хороший результат, лингвистам можно пожелать всяких успехов, но этот результат - очевидно не то, что думал автор, и не так, как он думал. А меня интересует живая традиция, заданная автором, работа в ней, создание инструментов такой работы.

Интересно, те же тексты, тот же корпус, те же почти программы, те же методы, - и абсолютно иной результат. Лингвистика (и вообще наука, как инструмент получения объективного знания) приводит к образованию огромного информационного монстра. Его можно представить как дамп базы данных, или огромный XML-файл, в котором собрана вся информация о тексте. Инфомонстр растет и живет сам по себе, наука как институция имеет целью изучение и пополнение этого дампа, но не понимание автора. Возникновение инфомонстра - неизбежное следствие идеи, будто есть некий “правильный, научный” взгляд на текст и метод его интерпретации. Неизбежное логическое следствие. А вместе с инфомонстром возникает и каста жрецов - служителей. Герменевтика же, (как я думаю), приводит к инструменту создания очередного авторского, локального отклика-комментария на голый (plain-text в utf-8), очищенный от всех наслоений, беззащитный, сияющий авторский текст.

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

Pecha.js

Последний в серии анализаторов Морфей, Pecha.js, a.k.a. Morpheus-for-Tibetan. Pecha , དཔེ་ཆ་ - (cholok: pe.cʰa, Wylie: dpe cha) - означает традиционную тибетскую книгу. См. также анализаторы для древнего Греческого, Китайского и Санскрита (устаревшая версия).

Скопировав текст где угодно на десктопе, мы проводим мышью над тибетским текстом и получаем перевод каждого слова из активных в настоящий момент словарей. (О словарях см. ниже). Некоторые фрагменты текста программа не может определить однозначно, и возникает неопределенность - всплывающее окошко, в котором читатель может выбрать один из нескольких вариантов. Если же слово определено однозначно, тем не менее кликом на нем можно вызвать его дальнейший анализ. Возникают цепочки, вплоть до простейших и древнейших слов из одного слога, вспомогательных частиц, etc. Это дает мощный инструмент, позволяющий представить себе процесс возникновения и развития слова. В китайском варианте Морфея клик на односложном слове-иероглифе показывает анализ его зрительной структуры, что также бывает полезно, особенно при чтении поэтических текстов. А в дальнейших версиях Pecha.js будет показываться структура тибетского слога (род букв, образующих слог и правила образования слога из этих букв).

Рис. 1. Pecha.js

Pecha.js имеет встроенный модуль фонетической транслитерации фразы или слова - Cholok, см. https://github.com/mbykov/cholok. Транслитерацию можно посмотреть, наведя мышь на слово при нажатой клавише Shift. Причем дальнейшим нажатием клавиши Ctrl можно получить традиционное кумулятивное призношение тибетского слова. Я должен подчеркнуть, что это не произношение с точки зрения современной лингвистики, и не актуальное произношение носителей языка, а произношение, как оно должно быть с точки зрения традиционных грамматиков, начиная с Т.Самбхоты.

Сложность задачи анализа фразы состоит в том, что Тибетский, как многие иные языки не имеют деления фразы на слова с помощью пробела (или иного знака). Чтобы определить словарный состав фразы, приходится перебрать огромное число возможных комбинаций. Например, обычная фраза из 20 слогов, что совсем не редкость, дает 524,288 возможных цепочек - комбинаций сочетаний возможных сегментов (которые могут оказаться словами). Если анализировать подобные количества комбинаций в лоб, то мой домашний ноутбук Asus-i-7 задумывается на долгие минуты. Тем не менее, Pecha.js работает практически мгновенно. Это достигается небольшой хитростью - в длинной фразе сначала рассчитываются цепочки сегментов из небольшого количества элементов (трех или четырех), при этом некоторые (обычно также длинные) сегменты не имеют соответствий в словаре. И при наведении мыши на такой необработанный сегмент происходит дальнейший рассчет. Т.о. рекурсивный рассчет вызывается также рекурсивно, но фраза короче 15 слогов рассчитывается уже полностью до конца сразу. Обычно этот процесс для читателя совсем не заметен.

Однако, Морфей не ограничивает пользователя интересом к древней грамматике только. Для решения современных (например, лингвистических) задач к анализаторам Морфей можно подключать плагины. (См. раздел Plugins на сайте http://ru.diglossa/tibetan). Плагином является обычный в Node.js npm-пакет (можно не публиковать его, а подключать локально). Однако, если пользователю необходимо использовать утилиту на ином языке программирования, он может ее вызвать из подключаемого npm-пакета (плагина) обычным для Node.js способом. Т.е в результате можно использовать утилиты на любом языке. В процессе выполнения плагин получает доступ к результату работы Морфея для данного текста, активированным словарям и к самому тексту. (В опубликованной версии Pecha.js механизм плагинов пока не реализован).

Diglossa.js

Diglossa.js - приложение для создания и просмотра многоязычных текстов. Напоминающее хорошо известное приложение FB2-Reader.

Рис. 2 - Diglossa.js

Однако Диглосса имеет еще одну, и главную цель, - публикацию полученного текста не только в вебе, в виде, готовом к просмотру, но и в системе контроля версий в виде голого plain-текста (обычно в utf-8). Публикуемый текст может быть исходным авторским текстом, полученным из сканов рукописей или первоизданий, но также и переводом авторского текста, комментарием или любым откликом, ответом на исходный текст. Это достигается тем, что при работе в исходный текст не вносится исправлений и дополнений. (Если все же исправления возникают, например, в виде исправления опечатки, они обрабатываются обычным образом как git merge request, и могут быть приняты или отклонены).

Это достигается тем, что к исходному тексту последовательно пристраиваются слои (layers), привязанные к конкретному месту текста якорями. (Якорь - любая уникальная подстрока текста, в общем случае - подстрока от начала текста до нужного места). Таким образом можно получить результат любой сложности, сохранив исходный текст в неприкосновенности. Очередной следующий пользователь Diglossa.js может подключить и загрузить и исходный текст, и добавочные тексты (и слои-layers), которые ему необходимы в настоящий момент, не из файла, а клонировать из полученного авторитетного источника, из системы контроля версий. Таким образом, работа проистекает не с файлами текстов, а с одним файлом манифеста (в формате .json), в котором описаны лишь необходимые ресурсы и способы их подключения и обработки.

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

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

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

свободная лицензия

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

словари

Создание словаря - такой же поступок, как и произнесение слова, и такой же поступок, как понимание слова. В Диглоссе и Морфее предусмотрена возможность создания локального словаря для данного текста или группы текстов. Сложность состоит в том, что для языков, имеющих склоняемые словоформы, мы можем легко сгенерировать частотный словарь всех форм. Но для создания словаря нужно сгруппировать все зависимые формы, и в словарь поместить только т.н. “словарную форму”. Что требует подключения грамматики (адекватной грамматики) и значительной вычислительной мощности.

Для решения этой задачи в настоящее время я пытаюсь использовать следующую идею. В опубликованных версиях анализаторов при анализе изменяемого слова сейчас вычисляется некоторая “словарная форма”, и затем проверяется наличие ее в актуально подключенных словарях. Если словарная форма обнаруживается, то анализ считается выполненым, а исследуемая словоформа - успешно определенной. В следующей версии Морфея-для-Греческого (я надеюсь, к лету 2019), будет вычисляться не словарная словоформа, а все вероятные гнезда словоформ, в которых присутствует исследуемая словоформа. И затем будет проверяться не наличие словарной формы в словарях, а наличие всего гнезда в “словаре всех форм языка”. “Словарь всех форм” так называется условно, он не обязательно должен действительно содержать все формы. Но он должен быть достаточно большим, чтобы все актуальные гнезда словоформ в нем были представлены с хорошей вероятностью.

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

сообщество грамотных читатателей vs. каста служителей инфомонстров

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

наука и магия

Я показываю здесь целую область использования вычислительной техники в языкознании, которая совсем не охвачена современной лингвистикой. И никогда не будет охвачена, именно по причине того, что лингвистика позиционирует себя наукой, а наука нацелена на получение объективного знания. А я пишу о субъективной реакции автор / читатель / комментатор, и актуальном участии в этом диалоге, совершенно субъективном. Акт о капитуляции лингвистики в этой области уже подписан. Это работа Ю.Д.Апресяна “О понимании”, в которой понимание-1 (базовае значение этого слова) определено как “семантический примитив”. И это правильно. Но работать-то в области, где лингвистика признает свое бессилие, все равно нужно. Использование научных, лингвистических методов за очевидными пределами их применимости есть магия, и ничто иное. Мне кажется, что герменевтический подход представляет собой вполне здравую альтернативу и дает вполне очевидную перспективу плодотворной работы.

список литературы:

http://ru.diglossa.org/about

https://github.com/mbykov/diglossa.js/

https://github.com/mbykov/cholok

http://ru.diglossa.org/tibetan

http://ru.diglossa.org/diglossa.js

http://ru.diglossa.org/blog

http://samag.ru/archive (М. Быков:”Диглосса и Морфей: лингвистика, герменевтика, plain text и локальные словари)

http://0x1.tv/Diglossa.js_—_система_подготовки_и_публикации_дву-(много-)язычных_текстов_(Михаил_Быков,_OSEDUCONF-2019)

http://www.bibikhin.ru/books

https://www.bibler.ru

http://heidegger.ru