Вторая конференция "Свободное програмное обеспечение в высшей школе" (27-28 января 2007)

Использование технологии Wiki для обработки структурированных данных

Андреев Артем Викторович

Институт лингвистических исследований РАН, Санкт-Петербург

Технология Wiki все чаще используется как средство организации групповой работы. В основе этой технологии лежит, как известно, представление данных в виде набора текстовых "листков" с простым форматированием, связанных между собой гиперссылками. Такое представление очень удобно для редактирования в режиме online и чрезвычайно просто в освоении, однако для многих областей может оказаться совершенно неадекватным. Примером такой области является представление лингвистической информации - как собственно исследуемых текстов, так и лингвистических статей. Отметим главные особенности этого вида данных, которые не могут адекватно выражены с помощью существующих Wiki-решений:

  1. необычное форматирование (параллельные тексты, глоссирование, фонетическая транскрипция), а также наличие большого числа "странных" символов
  2. необходимость представлять наряду с текстовым описанием структурированную информацию - например, результат морфологического анализа
  3. наличие большого разнообразия типов связей между элементами
  4. необходимость интеграции с различными системами автоматизированной обработки текста, а также с существующими форматами хранения данных, в первую очередь - TEI (http://www.tei-c.org)

Первый пункт не составляет, в принципе, большой проблемы, так как расширить инвентарь средств форматирования какой-либо Wiki-системы достаточно просто. Однако если сделать набор условных знаков слишком большим, то теряется главное преимущество Wiki - легкость в использовании (а количество обозначений действительно может стать очень большим, если учесть что рекомендации TEI определяют около 450 различных тегов - против 90 в спецификации HTML 4). Дополнительная трудность состоит в том, что многие приемы форматирования, необходимые лингвисту, с трудом могут быть выражены с помощью средств HTML, а это значит, что Wiki-система для лингвиста должна предусматривать альтернативное представление (например, с помощью встроенных изображений, генерируемых из исходного материала).

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

В нашем институте разрабатывается система, которая должна решить перечисленные проблемы, сохранив при этом все характерные особенности Wiki-систем. Отличительными чертами нашей системы являются:

Хочется подчеркнуть, что в нашей системе используется именно SGML, а не более популярный ныне XML. Связано это с тем, что "полный" SGML предоставляет широкие средства сокращенной разметки. В частности, имеется возможность сопоставлять теги определенным символам или группам символов, а это позволяет легко имитировать традиционный "wikitext". Задача же интеграции с TEI или любым другим XML/SGML-форматом становится и вовсе тривиальной.

Алгебраический тип данных, если говорить коротко - это тип, значениями которого являются деревья с помеченными листьями и узлами. В принципе, алгебраические типы могут быть реализованы в любом языке программирования, однако полноценная их поддержка есть только в функциональных языках, в частности, в языке Haskell (http://www.haskell.org), на котором наша система и написана. Алгебраические типы для нас, очевидно, удобны тем, что их значения очень легко могут быть представлены в виде SGML, а следовательно - и в виде Wiki-страниц Более того, поскольку структура алгебраического типа сама является алгебраическим типом, появляется возможность редактировать структуру данных в точности теми же средствами, что и сами данные.

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

Разумеется, наша разработка являются полностью свободной (распространяется на условиях лицензии GPL, http://claws.sourceforge.net), так же как и используемая нами реализация языка Haskell (http://www.haskell.org/ghc).

Программа конференции