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

Preview:

DESCRIPTION

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

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

Маме – Мам

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

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

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

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

Маме

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

String POS Norm_form Params

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

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

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

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

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

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

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

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 суток

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

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

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

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

валет

съесть

бульон

котлета

варить

десять

дама

бубен

украсть

валет

дама

валет

съесть

бульон

котлета

варить

десять

дамой

бубен

украсть

дамы

даму

даме

дамам

дама

валет

съесть

бульон

котлета

варить

десять

дамой

бубен

украсть

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

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

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

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

дамажен им ед

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

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

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

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

скорость 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 Мб

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

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

К

Д

РЧ

Н

Ж

Б

К

Д

РЧ

О

Ж

В

Л

Г

РШ

Н

Ж

БВ

А

М

Д

ФШ

Р

Ж

Б

М

Д

Ф

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

К, предл

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

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

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

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

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

скорость 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 Мб

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

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

А Б … Д … Э Ю Я

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

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

А … Е … Ы … Ю Я

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

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

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

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

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

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

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

Табличный

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

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

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 с/с

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

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

PatriciaFusion tree

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

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

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

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

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

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

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

рам-весн-

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

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

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

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

А … Е … Ы … Ю Я

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

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

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

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

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

А Б … Д … Э Ю Я

дама, сущ

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

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

А … Е … Ы … Ю Я

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

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

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

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

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

А Б … Д … Э Ю Я

дама, сущ

Префиксы

Постфиксы

Стекло

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

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

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

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

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

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

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

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

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

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

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

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

… Т …

… Р …

… И …

… Н …

… И …

… Т …

… Р …

… О …

… Т …

… О …

… Л …

… У …

… О …

… Л …

… Т …

… Р …

… И …

… Н …

… И …

… ТРО …

… Т …

… ОЛУОЛ

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

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

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

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

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

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

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

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

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

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

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 часа

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

Нет!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ы (-)

ОВ(А)

Ы(-)

АМ(У)

АМИ(ОМ)

АХ(Е)

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

А/Ы(-)

ОВ(А)

А/Ы(-)

АМ(У)

АМИ(ОМ)

АХ(Е)

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

Ы(-)

ОВ(А)

Ы(-)

АМ(У)

АМИ(ОМ)

АХ(Е/У)

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

Ы(-)

ОВ(А)

ОВ(А)

АМ(У)

АМИ(ОМ)

АХ(Е)

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

А/Ы(-)

ОВ(А)

ОВ(А)

АМ(У)

АМИ(ОМ)

АХ(Е)

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

RCO, …)

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

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

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

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

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