Давайте напишем морфологию

62
Клышинский Э.С. ИПМ им. М.В. Келдыша РАН

description

Эдуард Клышинский (Институт прикладной математики им. М.В. Келдыша РАН. Москва)В докладе затрагиваются принципы построения программного модуля морфологического анализа и синтеза русского языка.

Transcript of Давайте напишем морфологию

Page 1: Давайте напишем морфологию

Клышинский Э.С.

ИПМ им. М.В. Келдыша РАН

Page 2: Давайте напишем морфологию

Хм… Так сразу и не ответишь…

Page 3: Давайте напишем морфологию

Хм… Так сразу и не ответишь…Система, возвращающая по словоформе ее лексему!Маме – Мама ж.р., одуш.; -а им.п., ед.ч.

-ы род.п., ед.ч.-у вин.п., ед.ч.

Page 4: Давайте напишем морфологию

Хм… Так сразу и не ответишь…

А может быть только лемму?

Маме – Мама ж.р., одуш., дат.п., ед.ч.

Page 5: Давайте напишем морфологию

Хм… Так сразу и не ответишь…

Или Малдер был прав – истина где-то рядом?

Page 6: Давайте напишем морфологию

Хм… Так сразу и не ответишь…

Нет! Она возвращает по словоформе стем!

Маме – Мам

Page 7: Давайте напишем морфологию

Обработка текстов на естественном языке:Информационный поискМашинный переводКластеризация и классификация текстовИзвлечение данных и информации из текстовДиалоговые системы…И еще многое другое

Оставайтесь на нашем канале!

Page 8: Давайте напишем морфологию
Page 9: Давайте напишем морфологию

Машинный переводДиалоговые системыРазъяснительные системы

Мама, сущ, ж.р., одуш., дат.п., ед.ч.

Маме

Page 10: Давайте напишем морфологию

Стемминг / лемматизаторСловарный / бессловарный

Page 11: Давайте напишем морфологию

String POS Norm_form Params

мама сущ мама жен одуш им ед

мамы сущ мама жен одуш род ед

маму сущ мама жен одуш вин ед

маме сущ мама жен одуш дат ед

Select norm_form, pos, params from morph where string=‘маме’

Select string from morph where norm_form=‘маме’ and params=‘жен одуш дат ед’

Page 12: Давайте напишем морфологию

String Id Params

мама 101 им ед

мамы 101 род ед

маму 101 вин ед

маме 101 дат ед

SELECT nf_table.string, nf_table.pos, nf_table.params, par_table.params FROM par_table, nf_table WHERE par_table.string=‘маме’ AND par_table.id=nf_table.id

Par_tableId Strin

gPos Params

101

мама сущ жен одуш

102

папа сущ муж одуш

103

рама сущ жен неод

104

мыло сущ ср неод

NF_table

Page 13: Давайте напишем морфологию

200 000 лексем * 25 форм в лексеме = 5 000 000 записей5-10 тыс. слов в секунду50-75 тыс. слов на учебник в 300 страниц – 5-7 сек.130 тыс. слов во «Властелине колец» - 15 сек.3 000 000 слов на 5-6 тыс. документов – 5 мин.700 000 000 слов в Библиотеке Мошкова – 19,5 часов3,4 млрд слов на webreading.ru – 4 суток

Всё зависит от задачи!

Page 14: Давайте напишем морфологию

«+»Простота реализации, поддержки, реализации систем на ее основеПереносимость решенияВозможность создания централизованного сервераПростота обновления

«-»Относительно невысокая скорость работыЗначительный объем памяти

Page 15: Давайте напишем морфологию

Двоичные деревья Троичные деревья TRIE-структуры

Page 16: Давайте напишем морфологию

валет

съесть

бульон

котлета

варить

десять

дама

бубен

украсть

валет

дама

Page 17: Давайте напишем морфологию

валет

съесть

бульон

котлета

варить

десять

дамой

бубен

украсть

дамы

даму

даме

дамам

дама

Page 18: Давайте напишем морфологию

валет

съесть

бульон

котлета

варить

десять

дамой

бубен

украсть

дамы, сущ, дамажен род еджен им мн

дамудаме, сущ,

дамажен дат ед

дамамдама, сущ,

дамажен им ед

Page 19: Давайте напишем морфологию

5 000 000 1023 словоформ - до 24 сравнений строк

Омонимичность в языке 1,5 омонима на слово

3 000 000 1022 словоформ - до 23 сравнений строк

Page 20: Давайте напишем морфологию

Характеристика Табличный Бинарное дерево

скорость 5 000 - 10 000 50 000 – 100 000

память 5 000 000 * 100 б + 200 000 * 150 б =530 Мб + индекс

3 000 000 указателей + 3 000 000 вершин *150 б = 12 Мб + 450 Мб = 462 Мб

Page 21: Давайте напишем морфологию

«+»Простота реализации при использовании библиотекПереносимость решения на уровне кодаБолее высокая скорость

«-»Надо повозиться с созданием структуры данныхВсё еще значительный объем памяти

Page 22: Давайте напишем морфологию

К

Д

РЧ

Н

Ж

Б

К

Д

РЧ

О

Ж

В

Л

Г

РШ

Н

Ж

БВ

А

М

Д

ФШ

Р

Ж

Б

М

Д

Ф

дама, сущжен род мн

К, предл

Page 23: Давайте напишем морфологию

33 26 символа в алфавите – до 6 сравнений символов на каждую букву входного словаВерхняя оценка – 6*длину слова

Глубина «рыжего» дерева – где-то до 20 уровней

Page 24: Давайте напишем морфологию

Характеристика

Табличный Бинарное дерево

Троичное дерево

скорость 5 000 - 10 000 50 000 – 100 000

100 000 – 150 000

память 5 000 000 * 100 б + 200 000 * 150 б =530 Мб + индекс

3 000 000 указателей + 3 000 000 вершин *150 б = 12 Мб + 450 Мб = 462 Мб

216 «рыжих» * 20 символов в дереве * 150 б = 200 Мб

Page 25: Давайте напишем морфологию

«+»Простота реализации при использовании библиотек (осталось их найти)Переносимость решения на уровне кодаЕще более высокая скоростьПриемлемый объем памяти

«-»Надо повозиться с созданием структуры данных… а при отсутствии библиотек – и с кодом

Page 26: Давайте напишем морфологию

А Б … Д … Э Ю Я

А Б … Д … Э Ю Я А Б … Д … Э Ю Я А Б … Д … Э Ю Я

А Б … М … Э Ю Я А Б … Д … Э Ю Я А Б … Д … Э Ю Я

А … Е … Ы … Ю Я

А Б … М … Э Ю Я А Б … Д … Э Ю Я А Б … Д … Э Ю Я

дама, сущжен род мн

дама, сущжен им ед

дама, сущжен дат ед

дама, сущжен род еджен им мн

Page 27: Давайте напишем морфологию
Page 28: Давайте напишем морфологию

Совершенно линейная скорость от размера слова.

Глубина дерева – где-то до 20 уровней

Page 29: Давайте напишем морфологию

Табличный

Бинарное дерево

Троичное дерево

TRIE

скорость

5 000 – 10 000

50 000 – 100 000

100 000 – 150 000

500 000

память 5 000 000 * 100 б + 200 000 * 150 б = 530 Мб + индекс

3 000 000 указателей + 3 000 000 вершин *150 б = 462 Мб

216 «рыжих» * 20 символов в дереве * 150 б = 200 Мб

216 вершин * 136 б указателей + 3 000 000 словоформ * 150 б = 460 Мб

на самом деле

280 Мб 70 000 с/с

350 Мб 70 000 с/с

Page 30: Давайте напишем морфологию

«+»Простота реализации при использовании библиотекПереносимость решения на уровне кодаЕще более высокая скорость

«-»Надо повозиться с созданием структуры данных… а при отсутствии библиотек – и с кодом… и памяти как-то не очень гуманно тратится

Page 31: Давайте напишем морфологию
Page 32: Давайте напишем морфологию

PatriciaFusion tree

Есть решения и посложнее!Но по слухам – эффективнее.

Page 33: Давайте напишем морфологию

дама, жен им еддамы, жен род еддаму, жен вин еддаме, жен дат еддамой, жен твор еддаме, жен предл ед…

рама, жен им едрамы, жен род едраму, жен вин едраме, жен дат едрамой, жен твор едраме, жен предл ед…

мама, жен им едмамы, жен род едмаму, жен вин едмаме, жен дат едмамой, жен твор едмаме, жен предл ед…

Page 34: Давайте напишем морфологию

-а, жен им ед-ы, жен род ед-у, жен вин ед-е, жен дат ед-ой, жен твор ед-е, жен предл ед…

мам-дам-рам-весн-Лид-

Page 35: Давайте напишем морфологию

-а, сущ, жен им ед од-ы, сущ, жен род ед од-у, сущ, жен вин ед од-е, сущ, жен дат ед од-ой, сущ, жен твор ед од-е, сущ, жен предл ед од…

рам-весн-

-а, сущ, жен им ед неод-ы, сущ, жен род ед неод-у, сущ, жен вин ед неод-е, сущ, жен дат ед неод-ой, сущ, жен твор ед неод-е, сущ, жен предл ед неод…

мам-дам-Лид-

Page 36: Давайте напишем морфологию

А Б … Д … Э Ю Я А Б … Д … Э Ю Я А Б … Д … Э Ю Я

А Б … М … Э Ю Я А Б … Д … Э Ю Я А Б … Д … Э Ю Я

А … Е … Ы … Ю Я

А Б … М … Э Ю Я А Б … Д … Э Ю Я А Б … Д … Э Ю Я

дама, сущжен род мн

дама, сущжен им ед

дама, сущжен дат ед

дама, сущжен род еджен им мн

А Б … Д … Э Ю Я

дама, сущ

Page 37: Давайте напишем морфологию

А Б … Д … Э Ю Я А Б … Д … Э Ю Я А Б … Д … Э Ю Я

А Б … М … Э Ю Я А Б … Д … Э Ю Я А Б … Д … Э Ю Я

А … Е … Ы … Ю Я

А Б … М … Э Ю Я А Б … Д … Э Ю Я А Б … Д … Э Ю Я

дама, сущжен род мн

дама, сущжен им ед

дама, сущжен дат ед

дама, сущжен род еджен им мн

А Б … Д … Э Ю Я

дама, сущ

Префиксы

Постфиксы

Page 38: Давайте напишем морфологию

Стекло

Сте(чь), гл + кло, сов перех прош ср 3 Ст(екло), сущ + екло, ср неод им едСтекл(ить), гл +

Или пофантазируем

Стекло(), нар +

Page 39: Давайте напишем морфологию

Скорость разбора линейна по длине слова, но увеличивается с увеличением количества вариантов

Дерево префиксов – около 14 уровнейДерево постфиксов – около 4 уровней

214 вершин * 136 б указателей + 3 000 000 словоформ * 150 б = 450 Мб

Page 40: Давайте напишем морфологию

тюль – муж неод им едстол – муж неод им ед

Они одинаковые!

Можно хранить лишь № парадигмы и № записи в ней

Page 41: Давайте напишем морфологию

Скорость разбора линейна по длине слова, но увеличивается с увеличением количества вариантов

Дерево префиксов – около 14 уровнейДерево постфиксов – около 4 уровней

214 вершин * 136 б указателей + 3 000 000 словоформ * 32 б + 10 000 парадигм * 25 лемм * 100 б = 123 МбВдвое меньше лучшей оценки!

Page 42: Давайте напишем морфологию

… Т …

… Р …

… И …

… Н …

… И …

… Т …

… Р …

… О …

… Т …

… О …

… Л …

… У …

… О …

… Л …

Page 43: Давайте напишем морфологию

… Т …

… Р …

… И …

… Н …

… И …

… ТРО …

… Т …

… ОЛУОЛ

Page 44: Давайте напишем морфологию

Кручу-верчу, обмануть хочу!За хороший зрения100 Мб премия!

Page 45: Давайте напишем морфологию

А Б Г Д Е Ж З И К Л М Н О РВ П

ВНИМАНИЕ!Порядок букв – произвольный!

Page 46: Давайте напишем морфологию

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

Всё зависит от задачи!

Если вам надо обрабатывать большое количество данных «внутри», то лучше средства для ускорения не найти.

Page 47: Давайте напишем морфологию

Морфологический словарь русского языка на 190 000 лексем занимает в памяти 40 Мб

Скорость работы – до 500 000 слов в секунду

Page 48: Давайте напишем морфологию

Разные тексты (длина слова, предсказание)Смотря что возвращается

Всё зависит от задачи!

Page 49: Давайте напишем морфологию

250-500 тыс. слов в секунду50-75 тыс. слов на учебник в 300 страниц – 0,2 сек.130 тыс. слов во «Властелине колец» - 0,3 сек.3 000 000 слов на 5-6 тыс. документов – 10 сек.700 000 000 слов в Библиотеке Мошкова – 25 минут3,4 млрд слов на webreading.ru – 2 часа

Всё зависит от задачи!… и от скорости винчестера.

Page 50: Давайте напишем морфологию
Page 51: Давайте напишем морфологию

Нет!

Главное в морфологии – это качество анализа текста, а не скорость

Думаете, скорость – это главное?

Page 52: Давайте напишем морфологию

Или в нашем случае – текстов много, а словарь конечен.

Что же делать, если в словаре нет текущего слова?

Page 53: Давайте напишем морфологию

Если словарь содержит дерево постфиксов, то оно может использоваться для предсказания парадигмы изменения слова.

Варка(ться) –лось, гл, несов нетр прош ср 3

Page 54: Давайте напишем морфологию

Шор(ёк) –ьки, сущ, одуш муж им мн как хорькиШор(ёк) –ьки, сущ, неод муж им мн как конькиШорьк() –и, сущ, одуш муж им мн как мужиШорьк(а) –и, сущ, неод жен им мн как кожиШорьки() –, сущ, неод как саниШорьк(ий) –и, прил, кратк мн как мягкиШорьк(ить) –и, гл, повел как стелиКак легли, могли, вели, ученики …Хорошее упражнение для развития чувства русского языка, не так ли?

Page 55: Давайте напишем морфологию

Иногда помогает несколько последних букв псевдоосновы.

Вряд ли это будет глагол «шорькить», так как большинство слов на «-ить» имеют на конце псевдоосновы согласную, отличную от ‘к’: ‘’м, ‘л’, ‘с’, …

По этому поводу можно прочесть: …

Page 56: Давайте напишем морфологию

Может помочь контекст, окружающий данное слово.

«Хливкие шорьки пырялись» позволяет отбросить глагол и краткое прилагательное, но оставить существительное.

Это называется методом n-грамм

Page 57: Давайте напишем морфологию

Множ (ед) им. род. вин. дат. тв. пред.

АДМИН (ТЕЛЕФОН) м.р., неодуш.

Ы (-)

ОВ(А)

Ы(-)

АМ(У)

АМИ(ОМ)

АХ(Е)

АДМИН (ТОН)м.р., неодуш.

А/Ы(-)

ОВ(А)

А/Ы(-)

АМ(У)

АМИ(ОМ)

АХ(Е)

АДМИН (БАЛ)м.р., неодуш.

Ы(-)

ОВ(А)

Ы(-)

АМ(У)

АМИ(ОМ)

АХ(Е/У)

АДМИН (АКТИВИСТ)м.р., одуш.

Ы(-)

ОВ(А)

ОВ(А)

АМ(У)

АМИ(ОМ)

АХ(Е)

АДМИН (ОПЕР)м.р., одуш.

А/Ы(-)

ОВ(А)

ОВ(А)

АМ(У)

АМИ(ОМ)

АХ(Е)

Page 58: Давайте напишем морфологию
Page 59: Давайте напишем морфологию

www.aot.ruСтеммер ПортераПлатные аналоги со всеми плюсами (Oracle,

RCO, …)

Не все морфологии одинаково полезны.

Page 60: Давайте напишем морфологию
Page 61: Давайте напишем морфологию

Коррекция ошибокИнструментальные средства пополнения

морфологического словаряРасширенные словариМорфологический синтез на деревьях

Page 62: Давайте напишем морфологию

Я буду рад ответить на ваши вопросы.

☺ ☺ ? ☺ ☺Кто первый?