Быстрый старт

Введение

Для начала работы с системой необходимо установить JRE или JDK версии 1.7 или выше и загрузить архив с системой.

Для запуска системы необходимо указать в аргументах командной строки путь к конфигурационному файлу и пользовательскому JS-скрипту. Поведение системы полностью определяется пользовательским сценарием (JS-скриптом).

Команда для запуска выглядит следующим образом: 

java -jar helis.jar <config> <script> [user_args]
  • <config> - путь к файлу конфигурации в формате JSON
  • <script> - путь к JS-скрипту
  • [user_args] - опциональные аргументы командной строки, которые будут переданы в JS-скрипт
ВАЖНО! Все файлы системы, включая правила и словари (исключая файлы ввода и вывода) должны быть в кодировке UTF-8 без BOM!

Структура архива:
  • helis.jar - главный исполняемый файл системы
  • config.json - базовый конфигурационный файл системы
  • system.fields - файл с минимальным набором граммем
  • test.js - JavaScript файл для проверки работоспособности системы
  • compile.js -  JavaScript файл компиляции морфологического словаря
  • convert_oc.py - Python-скрипт для конвертации морфологического словаря Открытого Корпуса в формат helis

Пользовательский сценарий

Пользовательский сценарий задаётся скриптом на языке JavaScript. Скрипт обязательно должен содержать функцию main(), т.к. эта функция вызывается один раз в момент запуска системы:

function main(args) {

    // Здесь можно подготовиться к лингвистическому анализу и запустить обработку текста

}

Массив args содержит в себе аргументы командной строки, перечисленные в [user_args].

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

function catchObjectEvent(source) {

    // Здесь можно проанализировать лингвистический объект 'source' и что-нибудь с ним сделать

}

Объект source - это обёртка над лингвистическим объектом различных видов, он реализует интерфейс ILinguisticObject; в скрипте доступна глобальная переменная 'api', которая предоставляет доступ к базовым возможностям ввода-вывода и лингвистической обработки, подробнее см. документацию по API.

Конвертация морфологического словаря

Система распространяется без каких-либо лингвистических ресурсов, однако для ознакомительных целей доступна возможность использовать морфологический словарь Открытого Корпуса. Для этого необходимо загрузить XML-версию с сайта и запустить Python-скрипт: 

python3 convert.py --input <source> --output <target> --gram <fields>
  • <source> - путь к исходному файлу словаря Открытого Корпуса (например, dict.opcorpora.xml)
  • <target> - путь к целевому файлу словаря в формате helis (например, morph.txt)
  • <fields> - путь к целевому конфигурационному файлу морфологических граммем (например, morph.fields)
ВНИМАНИЕ! Не указываейте в качестве <fields> файл system.fields - в этом случае он будет перезаписан и данные из него будут утеряны!

Формат морфологического словаря

Исходный файл морфологического словаря в формате helis представляет собой текстовый файл с TAB-разделителями, где каждая строкаимеет следующий формат:

<wordform><tab><tag><tab><flex_len>[<tab><norm_flex>]
  • <tab> - TAB-разделитель (символ '\t')
  • <wordform> - словоформа (в верхнем регистре)
  • <tag> - морфологический тег словоформы (граммемы через запятую)
  • <flex_len> - длина окончания словоформы
  • <norm_flex> - окончание леммы (в верхнем регистре; опционально, может отсутствовать вместе с предешствующим TAB-ом, если окончание нулевое)
При отбрасывании flex_len символов от конца словоформы и конкатенации полученной основы с norm_flex должна получаться лемма!

Компиляция морфологического словаря

Для повышения производительности и минимизации времени загрузки системы морфологический словарь компилируется в конечный автомат. Для этого используется скрипт compile.js:

java -jar helis.jar config.json compile.js <source> <analysis_target> [synthesis_target]
  • <source> - путь к исходному файлу словаря
  • <analysis_target> - путь к конечному автомату для морфологического анализа
  • [synthesis_target] - путь к конечному автомату для морфологического синтеза (опционально)