Практический морфоанализатор санскрита — Морфей (Михаил Быков, OSEDUCONF-2015)
Материал из 0x1.tv
Содержание
Аннотация
- Докладчик
- Михаил Быков
Создан практический морфоанализатор санскрита, то есть программа, определяющая словарное значение и морфологическое описание по словоформе (обратная задача).
Практический — потому что (прямая) задача порождения всех словоформ по словарному значению (гораздо более сложная) — не решалась. Вместо этого использовались тесты (словарное значение — словоформа), скопированные из сети.
Программа имеет более 10 тыс. тестов
Видео
Тезисы
На примере санскрита (который считается сложным языком) показано, что задача создания морфоанализатора для флективного языка не так уж и страшна, не боги горшки обжигают. В v.1 анализатора Морфей обрабатываются отдельные слова. Тесты проходят для более чем 98% частотного словаря, без учета составных слов. v2 будет уметь обрабатывать и составные слова. Что даст 98% на реальном частотном словаре.
Для разработки выбран nodejs, вместо ruby.
Это сделано из соображений удобства — один язык в браузере, в couchDB и собственно в анализаторе. Модули программы используются во всех трех средах без изменения. Кроме того, переход с руби ускорил работу программы в 3–4 раза (оценка на глазок).
Недостатком выбранного подхода является то, что программа находит правильное словарное значение по словофрме в данном тесте. Но кроме того она находит еще множество иных словарных значений.
Также правильных — в большинстве случаев. Однако тест не позволяет определить, нет ли в результате лишних значений. Но определяет только то, что среди найденных значений правильное — есть.
Для того, чтобы решить эту проблему, нужно уметь решать прямую задачу — порождать все словоформы по словарному значению.
Для санскрита это возможно с помощью использования алгоритма, описанного в книге «Аштадхяйи», написаной Панини ок IV в. BC. Я планирую сделать это в v.3, если Бог даст.
Аналогичные прграммы (использованные мной для порождения тестов) можно посмотреть здесь:
- https://sites.google.com/site/sanskritcode/
- http://sanskrit.inria.fr/DICO/grammar.html
- http://spokensanskrit.de/
- http://sanskrit.jnu.ac.in/kridanta/ktag.jsp
- http://sanskrit.uohyd.ernet.in/scl/skt_gen/kqw/kqw_gen.html
- http://tdil-dc.in/san/skt_gen/generators.html
- http://sanskrit1.ccv.brown.edu/tomcat/sl/VerbalMorphology