Парсер - морфологический и синтаксический анализатор русскоязычных текстов

Парсер решает следующие задачи:

1. Лексический анализ - разбивка текста на предложения и слова.

2. Морфологический анализ слов - определение части речи, падежа, рода, числа и других грамматических признаков с учетом контекста слова.

3. Лемматизация - приведение слова к начальной форме (лемме).

4. Синтаксический анализ (dependency parsing) - определение синтаксических связей слов в предложении, поиск подлежащего, сказуемого и так далее.

5. Упрощенный синтаксический анализ (chunking) - разбивка предложения на группы подлежащего, дополнений, обстоятельств.

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

Использование парсера

Первый вариант парсера работает в командной строке. В качестве входных данных он получает текстовый файл в utf-8. Результаты работы сохраняются в XML формате в заданном файле или выводятся прямо в консоль.

Типичный сценарий вызова парсера таков:

parser.exe -verbose -tagger 0 -parser 0 -lemmatizer 0 -emit_morph 0 -d dictionary.xml input.txt -o output.xml

Параметры:

-verbose печать информации о ходе парсинга в консоль.

-tagger 0 для выполнения морфологического анализа (Part-Of-Speech tagging) используется базовая модель русской или английской морфологии.

-parser 0 для выполнения синтаксического анализа (построение dependency tree) используется базовый shift-reduce парсер.

-lemmatizer 0 лемматизация выполняется с использованием вероятностной модели русского языка и с учетом контекста слова.

-emit_morph 0 не выдавать в XML файл результатов списки морфологических тегов слов; режим 1 приведет к значительному росту объема результата.

-d dictionary.xml путь к конфигурационному файлу словарной базы

-o output.xml имя создаваемого файла с результатами, по умолчанию вывод идет в консоль.

Пример запуска можно найти в файле run.cmd в дистрибутиве.

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

Серверный режим работы парсера

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

Задача разбора по одному предложению может быть решена либо использованием библиотеки PyParser из кода на питоне, либо запуском REST-сервиса.

Запуск в режиме RESR-сервиса (см. файл http.cmd в дистрибутиве):

Parser_RestHttpService.exe -tagger 0 -parser -1 -lemmatizer 0 -d dictionary.xml -url 127.0.0.1 -port 10973

Опция -url 127.0.0.1 задает сетевой интерфейс, на котором будет доступен сервис. Чтобы сервис был доступен из любых внешних сетей, нужно указать адрес 0.0.0.0, или подставить адрес конкретного сетевого интерфейса.

-port 10973 адрес порта, через который веб-сервис будет работать по http.

В дистрибутиве проекта есть пример вызова сервиса парсинга на Питоне.

Исходные тексты парсера

Парсер написан на C++ и собирается для MS Windows и Linux. Исходные тексты парсера, данные для сборки русской словарной базы и инструкции по сборке доступны в репозитории проекта.

Дополнительные материалы по парсеру можно найти на отдельной странице в репозитории.

Дистрибутив и лицензия на парсер

В состав дистрибутива входят все необходимые словарные базы и вероятностные модели.

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

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

Скачать парсер с русской словарной базой под Win64 (94 Мб)

  © Козиев Илья 2019
изменено 08-Mar-18