Upload
yandex
View
565
Download
6
Embed Size (px)
Citation preview
Морфологический анализатор Mystem 3.0
Алексей Зобнин
Программа Mystem
│ Mystem – свободно распространяемый морфологический анализатор для русского языка, созданный в Яндексе
http://api.yandex.ru/mystem/
Первая версия программы была написана Ильёй Сегаловичем и его коллегами ещё в 1997 году
Словоформа и парадигма
Словоформа: чай кофе потанцуем Лемма: [ча]й [кофе] [потанц]евать Парадигма: -й -и - -ую -уем
-я -ев -уешь -уете -ю -ям -уй -уйте -й -и -ует -уют -ем -ями -евал
-евали -е -ях -евала -евало
-евать
Добавим грамматические теги
ковер [ковер] S, неод, муж, ед, им [ковр]а S, неод, муж, ед, род [ковр]у S, неод, муж, ед, дат [ковер] S, неод, муж, ед, вин [ковр]ом S, неод, муж, ед, твор [ковр]е S, неод, муж, ед, пр [ковр]ы S, неод, муж, мн, им [ковр]ов S, неод, муж, мн, род [ковр]ам S, неод, муж, мн, дат [ковр]ы S, неод, муж, мн, вин [ковр]ами S, неод, муж, мн, твор [ковр]ах S, неод, муж, мн, пр
А если слова нет в словаре?
я иду {идти} по ковру {ковёр} мы идем {идти} по коврём {коврать?} ты идешь {идти} по коврёшь {коврать?} вы идете {идти} по коврёте {коврать?} он идет {идти} по коврёт {коврать?} они идут {идти} по коврут {коврать?}
А если слова нет в словаре?
«Глокая куздра штеко будланула бокра и курдячит бокрёнка» Л. В. Щерба
глокая {глокать? глокий?}
куздра {куздра?}
штеко {штекий? штеко?}
будланула {будланул? будланула? будлануть?}
бокра {бокр? бокра? бокрый?}
и {и}
кудрячит {кудрячит? кудрячита? кудрячитый? кудрячить?}
бокренка {бокренк? бокренка? бокренок?}
Построение гипотез по образцу бокренка:
кенгуренка буренка тигренка сестренка
→ бокренок → бокренка черенка керенка
→ бокренок шестеренка → бокренка
будланула: обманула гранула
→ будлануть → будланула манула → будланул
https://ru.wikipedia.org/wiki/Манул
Программа Mystem: новая версия
│ Мы представляем версию Mystem 3.0
http://api.yandex.ru/mystem/
│ Её отличия:
› ранжирование разборов и снятие омонимии
› поддержка фикслистов
› разные форматы ввода-вывода
Ранжирование разборов
есть: есть=V,несов,пе=инф есть=INTJ= быть=V,нп=(…)
│ Задача №1: ранжировать разборы без учета контекста
Ранжирование разборов
есть: есть=V,несов,пе=инф есть=INTJ= быть=V,нп=(…)
айпад: айпада?=S,муж,од=(вин,мн|род,мн) айпад?=ADV= айпад?=S,муж,неод=(вин,ед|им,ед) айпада?=S,жен,неод=род,мн
│ Задача №1: ранжировать разборы без учета контекста
Ранжирование разборов
есть: 2. есть=V,несов,пе=инф 3. есть=INTJ= 1. быть=V,нп=(…)
айпад: айпада?=S,муж,од=(вин,мн|род,мн) айпад?=ADV=
1. айпад?=S,муж,неод=(вин,ед|им,ед) айпада?=S,жен,неод=род,мн
│ Должно получиться примерно так:
Частоты для ранжирования
› Берём из подкорпуса со снятой омонимией Национального корпуса русского языка
› Учитываем частоты слов из веба
│ Однако корпус не полон, и запоминать частоты для каждой словоформы расточительно. Поэтому мы «факторизуем» частоты, настраивая их отдельно для:
› окончаний каждой схемы › основ каждой схемы › самих морфологических схем
Более формально
Пусть зафиксирована парадигма (схема разбора) scheme, и в слове word выделены основа stem и окончание flex.
Считаем, что события «встретить основу слова» и «встретить окончание слова» в рамках этой схемы независимы.
𝑃(𝑠𝑐ℎ𝑒𝑚𝑒|𝑤𝑜𝑟𝑑)=
= 𝑃(𝑤𝑜𝑟𝑑|𝑠𝑐ℎ𝑒𝑚𝑒)𝑃(𝑠𝑐ℎ𝑒𝑚𝑒)/𝑃(𝑤𝑜𝑟𝑑) =
= 𝑃(𝑠𝑡𝑒𝑚|𝑠𝑐ℎ𝑒𝑚𝑒)𝑃(𝑓𝑙𝑒𝑥|𝑠𝑐ℎ𝑒𝑚𝑒)𝑃(𝑠𝑐ℎ𝑒𝑚𝑒)/𝑃(𝑤𝑜𝑟𝑑) .
Оценка качества
Мы тестировали программу на подкорпусе НКРЯ со снятой омонимией, выбирая самую вероятную лемму из предложенных
│ Стратегии:
› Первая по алфавиту лемма: 89%
› Лемма с самой частотной парадигмой: 90%
› Самая вероятная лемма в новой модели: 95,5%!
Снятие омонимии
› Опция -d включает переранжирование разборов с учётом контекста
› Модель обучена с помощью технологии машинного обучения MatrixNet
› В качестве факторов используются в том числе «нормализующие подстановки» из модели Ю. Зеленкова, И. Сегаловича и В. Титова (Диалог-2005)
› Точность первого разбора (по тексту леммы) составляет 97,8%
Пример
./mystem -n ./mystem -n -d сорока жила на горе сорока жила на горе сорока {сорок|сорока} сорока {сорока} жила {жить|жила|жило} жила {жить} на {на} на {на} горе {горе|гора|гор} горе {гора}
Дополнительные опции
› Опция --generate-all строит все гипотезы для неизвестных слов, а не только те, где совпадение с образцом максимально
› Опция --filter-gram разрешает строить только разборы с указанными грамматическими тегами
mystem --filter-gram V
батарея {батареть?=V,несов,нп=непрош,деепр}
Использование
│ Программа распространяется в бинарном виде и в виде динамической библиотеки для C
Пример использования – Томита-парсер
Спасибо! http://api.yandex.ru/mystem/