Ходовые испытания вероятностной морфологии в движке

Jan 08, 2013 18:31

Интеграция модели

В движок будущей версии 12 добавлен C++ код декодера/теггера одной из вероятностных моделей русской морфологии, которые я насоздавал и гонял последние полгода.

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

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

Главный недостаток выбранной модели

Тяжёлое обучение. Сейчас полный цикл обучения и проверки занимает около 1.5 часа, из них примерно 1 час это утряска коэффициентов в градиентном спуске.

Второй момент связан с первым - при добавлении нового статистического материала необходимо переобучать модель заново. То есть нет режима инкрементального обучения. У другой модели на скамеечке запасных такая возможность есть, но она дает значительно большую погрешность распознавания (около 3% против 1% для выбранной).

Точность моделей

Процент неверно проставленных тегов для эталонного корпуса:

N-gram with smoothing ...... 3.25% (определение части речи и набора грам. признаков)
HMM .................................. 1.12% (определение только части речи)
CRF .................................. ~1.0% (точность зависит от параметров модели; определение POS и набора грам. признаков)

Важный нюанс в оценках точности - погрешность распознавания ГЛАГОЛОВ составляет около 0.02%. Если учитывать ценность разных слов для ПОНИМАНИЯ смысла повествования, то понятно, что погрешность определения частицы обычно не причиняет такого вреда, как неправильно узнанный или не узнанный глагол. Поэтому я рассчитываю, что новый вариант нисходящего парсера будет неплохо работать на сильно зашумленных текстах (включая безграмотные, жаргонизированные и т.д.).

Размер файла данных модели

Размер файла с матрицами сильно зависит от параметров модели. Если взять очень грубую (другими словами - очень обобщающую) конфигурацию, то файл имеет размер около 1-2 Мб. Для очень сложной модели получается до 100 Мб файл. Для текущих экспериментов взят некий компромиссный вариант, который при точности 99% работает с файлом размером ~18 Мб.

Уменьшение энтропии распознавания

Выполняется подсчет количества вариантов распознавания слов по всему корпусу. Идеальным является вариант, когда для каждого слова остается только 1 вариант распознавания.

Без снятия неоднозначности получается так:

слов:           277326
вариантов: 518823

Включение вероятностной модели дает результаты:

слов:           277326
вариантов: 286092

Как включается вероятностная модель

1. В каталог со словарем кидаются двоичные файлы с матрицами модели. В XML файл конфигурации словаря (http://www.solarix.ru/for_developers/docs/russian-grammatical-dictionary-configuration.shtml) вписывается поле , задающее относительный путь к этим файлам. На будущее это поле скорее всего будет содержать данные для подключения нескольких моделей и т.п., но пока все сделано предельно прямолинейно.

2. При вызове sol_MorphologyAnalysis (http://www.solarix.ru/api/ru/sol_MorphologyAnalysis.shtml) в параметр Flags примешивается битовая константа SOL_GREN_MODEL.

вероятностная русская морфология, вероятностная модель, Морфологический анализ, pos tagger

Previous post Next post
Up