Skip to content

fedorn/morph-presentation

Repository files navigation

Доклад "Реализация модуля морфологического анализа текста в рамках инфраструктуры Apache UIMA"

Введение

NLP@Cloud

Работа выполнялась в рамках совместного проекта МиСИС и КФУ по созданию системы обработки естественного языка на основе распределенных вычислений. Проект ставит целью применение последних достижений в области ИТ к сфере обработки естественного языка.

UIMA

Одним из таких достижений является программный фреймворк Apache UIMA, предназначенный для обработки неструктурированной информации. UIMA изначально была разработана в IBM, в которой была успешно применена при разработке программного обеспечения интеллектуального суперкомпьютера Watson, способного отвечать на произвольные вопросы на естественном языке. В 2006 году исходники фреймворка были открыты и управление проектом перешло к Apache Software Foundation.

Ключевыми особенностями проекта являются:

  • Ориентированность на Java-платформу
  • Все результаты обработки информации представляются в виде аннотаций.
  • Вся работа над информацией производиться последовательно несколькими аннотаторами, каждый из которых получает результаты работы предыдущих аннотаторов (сходство с unix pipeline).

Морфоанализ на основе словаря

Цель работы состояла в разработке одного из таких аннотаторов, выполняющего функцию добавления морфологической информации к токенам, полученным на предыдущем этапе токенизации. Главная цель данного модуля - предоставить необходимую информацию последующим аннотаторам (NER, NP,VP-chunking и т. д.)

Таким образом, из принципа модульности вытекают следующие особенности морфоанализатора

  • Контекст слова никак не учитывается (так как учет контекста производится на последующих этапах обработки)
  • Морфоанализатор должен возвращать все возможные варианты интерпретации слова (выбор наиболее вероятного из них производится также на поселдующих этапах)

Такой морфоанализ проще и качественнее всего делать на основе словаря, где заранее прописаны морфохарактеристики для слов языка.

OpenCorpora

В качестве такого словаря был выбран морфологический словарь проекта OpenCorpora. Данный словарь не составлен с нуля, он основан на словаре проекта АОТ, который, в свою очередь, основан на известном словаре А. А. Зализняка. Преимуществами этого словаря являются:

  • Распространение под лицензией Creative Commons Attribution-ShareAlike 3.0, что позволяет свободно использовать его в проекте, в том числе коммерческом (только нужно не забыть указать авторство).
  • Словарь представлен в удобном для парсинга и хорошо документированном xml формате.

Реализация

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

Реализация на хэш-таблице

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

Троичное дерево поиска

В качестве решения этих проблем была выбрана структура "троичное дерево поиска". Типичные сферы её применения - это хранение словарей для автодополнения при заполнении полей и применение при коррекции ошибок в тексте.

Пример и объяснение

Предсказание морфохарактерестик

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

Пример

Тестирование

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

В качестве тестов были использованы:

  1. Дорожка "Редкие слова" c форума "Оценка методов автоматического анализа текста" 2010 г. - для нее аккуратность составила 0.68, что соответствовало бы четвертому месту из девяти участников форума.
  2. Выборка из словаря OpenCorpora, при этом в качестве морфологического словаря системе была передана оставшваяся часть словаря, без выборки. В этом случае аккуратность составила 0.8.

About

Reveal.js based presentation about my work on morphology component

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published