«Диглосса» и «Морфей»: герменевтика, plain text и локальные словари

«Диглосса» и «Морфей»: герменевтика, plain text и локальные словари

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

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

Все обсуждаемые программы имеют свободную лицензию GNU GPL и опубликованы на ресурсе github.com/mbykov, там же опубликованы пакеты для Diglossa.js и семейства анализаторов «Морфей» для древнего греческого, тибетского, китайского – для Windows, Mac OS, Linux, подробное описание пакетов на сайте ru.diglossa.org (код для санскрита устарел и будет полностью переработан).

 

Зачем это нужно? Современная теория и древняя грамматика

Зачем такие сложности? Дело в вопросе, который мы зада-ем, а именно: «что и как думал (древний) автор». А не «что думает современная наука по поводу данного текста». Разница принципиальна – древний автор нашей современной начной премудрости не знал и поэтому думать так, как думает современный нам ученый-лингвист, не мог.

Здесь необходимо сделать отступление. Я ни в какой степени не предлагаю некую «альтернативу» лингвистике. Все, что говорит современная наука, верно, на то она и наука. Но в этом как раз и состоит опасность. Перед нами задача, и вот задача решена и решена правильно и научно грамотно. Возникает иллюзия, будто работа выполнена и можно поставить точку. Но работа только начинается. Объективное знание – лишь часть доступных нам способов думать. Вспомним об искусстве, поэзии, философии, религии, экономике, политике. Мы можем (и должны, разумеется) к любому предмету отнестись как к объекту. Например, к вот этому человеку – измерить его, взвесить и исследовать его химический состав. Но мы немного при этом узнаем о нем как о человеке. Чтобы узнать человека, нужно его расспросить и «пуд соли съесть». А его объективные данные никак с этим не связаны и могут лишь служить основой, первым листочком в толстой папке документов – досье на этого человека.

Также обстоит дело и в отношении слова и текста. Лингвистика – наук и как таковая даст нам объективные современные данные о тексте и его авторе. Именно благодаря тому, что рассматривает слово как объект. Полученные наукой результаты, безусловно, верны. Но нам нужно узнать, не к каким выводам приходит лингвистика, но как и что думал автор. Например, «вот стол деревянный». «Деревянный» – это прилагательное, говорит лингвистика. Но древний автор не знал понятия «прилагательное», это существенно последекартовское понятие, когда мир предстал перед человеком как множество объектов, имеющих свойства. И объекты получили имя существительных, а их свойства – прилагательных. Древний же автор имеет в виду, видимо, что-то вроде «вот стол из дерева». Я не буду здесь углубляться в философскую и герменевтическую проблематику. Важен практический вывод – для понимания мысли автора следует опираться не на современную лингвистику, а на древнюю, адекватную мысли автора, современную ему грамматику. Таким образом, речь идет не о компьютерной лингвистике, а о компьютерной герменевтике. Список литературы для тех, кто заинтересуется, приведен в конце статьи.

Семейство анализаторов «Морфей»

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

Так родился проект семейства анализаторов «Морфей». Пример: Pecha.js, a.k.a. Морфей-для-Тибетского языка, ru.diglossa.org/tibetan (Pecha переводится как «традиционная тибетская книга»).



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

Все программы написаны на Node.js + Electron.js. Пользователь будет иметь возможность вносить исправления в тексты и словари и создавать свои авторские словари для текста или набора текстов. Поэтому в качестве базы данных выбрана CouchDB/PouchDB – она позволяет «из коробки» синхронизовать базы данных на сервере и на всех клиентах и удобным образом разрешить возможные конфликты. CouchDB также использует JS для управления, т.е. весь код, и серверный, и десктопный – только JS, это очень удобно.

Сложность задачи состоит в том, что многие языки не имеют деления фразы на слова с помощью пробела (или иного знака). Чтобы определить словарный состав фразы, приходится перебрать огромное число возможных комбинаций. Причем длинные фразы совсем не редкость. Например, вот длинная фраза из классической Сутры Сердца Праджняпарамиты – ее увидит каждый, кто только посмотрит в сторону тибетского языка:

ཇི་ལྟར་ཁྱོད་ཀྱིས་བསྟན་པ་བཞིན་དུ་ཤེས་རབ་ཀྱི་ཕ་རོལ་ཏུ་ཕྱིན་པ་ཟབ་མོ་ལ་སྤྱད་

One should practice this profound Perfection of Wisdom just as you have taught it (перевод взят откуда-то из сети).

Эта фраза имеет 20 слогов, что дает 524,288 возможных комбинаций сочетаний возможных сегментов. Если анализировать подобные количества комбинаций в лоб, то мой домашний ноутбук Asus-i-7 задумывается на долгие минуты. Тем не менее Pecha.js работает практически мгновенно. Как это достигается, смотрите в коде, там всего-то:

$ du -csh src => 160K total

Плагины

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

diglossa.js: plain text против информационных монстров

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

Лучшее, что мы можем сделать, – скопировать текст мышкой с более-менее надежного сайта – а на сайте нет текста, там html. (Я напомню, сейчас XXI век, между прочим.) В общем, это кошмар, и, попросту говоря, текстов (никаких) в сети нет, есть неизвестно что, грязь.

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

Можно написать админу Васе, Вася укажет API, по которому можно получить то, что мне нужно. А почему это будет авторитетный результат, а не очередная грязь? Я должен на слово верить Васе, что у него нет багов в программе? Что я получил то, что хотел? Где «авторитетность»? Меня лично наукообразный антураж в качественности результата не убеждает, и никого не убеждает.

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

Блажен, кто верует. Еще раз, конечно, хорошо, что хоть так. Но чтобы удостовериться в качестве результата работы инфомонстра, этот результат нужно сравнить с исходным текстом. А исходника нет. А если бы он был, зачем тогда инфомонстр?

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

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

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

Например, группа людей получает сканированные изображения текста и первоначальные OCR текстовые файлы и последовательно и постепенно вносит исправления в них, сравнивая вручную тексты и изображения. При этом авторитетность текста определяется авторитетом этой группы людей. При этом люди в группе имеют «право на запись», это важно. Я могу проверить, удостовериться в адекватности текста на каждом этапе. Очевидно, что для этой цели удобно использовать систему контроля версий. И для простоты предположим, что по умолчанию мы будем использовать github.com, свое сообщество редакторов для каждого текста.



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

Идея авторитетного, голого plain-text используется в утилите Diglossa.js, diglossa.org/diglossa.js. Подробнее о работе с «Диглоссой» можно прочитать на сайте. Работа с ней не сложнее, чем работа с хорошо известной программой FB2-Reader. Важно, что работа построена на голом исходном авторитетном тексте, в который не вносятся изменения и который хранится в системе контроля версий (github.com). К тексту последовательно пристраиваются слои (layers), привязанные к конкретному месту текста якорями. Таким образом можно получить результат любой сложности, сохранив исходный текст в неприкосновенности.



Обработав текст или группу текстов, мы можем опубликовать его в вебе (в удобном интерфейсе, с полнотекстовым поиском, etc). Естественно, по умолчанию на десктопе включается также интеграция с семейством анализаторов «Морфей», если таковой уже есть для текущего языка. Но важно, что мы можем также и опубликовать текст в системе контроля версий, то есть создать новый авторитетный источник. Тогда следующий редактор-читатель может загрузить в «Диглоссу» (и куда угодно также, разумеется) этот текст уже из системы контроля версий напрямую, то есть наш новый авторитетный источник использовать.

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

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

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

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

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

Локальные словари

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

Во-первых, каждая статья словаря сама по себе – типичный инфомонстр. Там нагромождение всего: и грамматических сведений, и примеров перевода из всех контекстов без разбора, и ссылок на тексты. И никакой системы нет, а есть неконтролируемое умножение сущностей, без тени рефлексии по этому поводу. Ясно, что если вопрос, что такое словарь, и задается, то ответа на него нет.

Вторая беда еще хуже – все классические словари, и Моньер-Вильямс, и Лиддел-Скотт, и что угодно – составлены (гигантами, да, и низкий поклон, etc) в XIX веке людьми, постигшими истину. Истиной для них была ньютоновская физика и ньютоновская картина мира. А все прочие люди, люди, чьи языки они изучали, и не имеющие «научной» картины мира в своем интеллектуальном бэкграунде, рассматривались как люди, э-м-м-м, думавшие ошибочно. Это отношение можно увидеть практически в любом классическом словаре.

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

Между тем создание словаря – такой же поступок, как и произнесение слова, и такой же поступок, как понимание слова. Поэтому в «Диглоссе» и «Морфее» предусмотрена возможность создания локального словаря для данного текста или группы текстов.

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

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

Заключение: сообщество и unix way

Таким образом, я надеюсь, Diglossa.js и семейство «Морфей» являются неким предварительным прообразом библиотеки будущего, когда распространяется не книга в переплете, а только лишь необходимая часть текста с необходимым адекватным аппаратом и адекватным локальным словарем. Превращению простого текста в чудовищных информационных монстров может быть противопоставлена культура распространения авторитетного текста со свободной лицензией, а касте служителей информационных систем – сообщество грамотных читателей. Если программисты могут создать сообщество и совместно развивать продукт, то почему филологи не справятся?

Источник: http://samag.ru/archive/article/3826