Проблемы морфологического анализа
Морфологический анализ — определение леммы и грамматических признаков каждой словоформы текста. Это один из первых этапов обработки языка: от его качества зависят синтаксический разбор, поиск и машинный перевод.
Анализ
По словоформе найти лемму и граммемы: столов → стол, сущ., мн. ч., род. п.
Синтез
По лемме и граммемам породить форму: идти + прош., м. р. → шёл
Снятие омонимии
Из нескольких возможных разборов выбрать единственный верный по контексту.
Основные проблемы
Морфологическая омонимия
Одна словоформа допускает несколько разборов: стекло — существительное или глагол, мой — местоимение или повелительная форма «мыть». Сюда же относится синкретизм форм внутри одной парадигмы (кости).
Несловарные слова (OOV)
Язык — открытая система: неологизмы, имена, термины и опечатки отсутствуют в словаре. Анализатор вынужден строить гипотезы по окончаниям — как в «глокой куздре» Щербы.
Токенизация
Точка — конец предложения или сокращение? Дефис — часть слова (кто-то) или разделитель? В китайском пробелов между словами нет вовсе.
Типология языков
Флективные языки дают омонимию окончаний и чередования, агглютинативные — тысячи форм от одной основы (ev-ler-imiz-de), изолирующие почти не имеют словоизменения.
Морфонология
Чередования (бегу — бежишь), беглые гласные (сон — сна), супплетивизм (человек — люди), гармония гласных, немецкие композиты.
Разные стандарты разметки
Тегсеты OpenCorpora, Mystem, Universal Dependencies и MULTEXT-East по-разному делят части речи (причастие — глагол или отдельный класс?), что мешает сравнивать системы.
Малоресурсные языки
Для многих языков, включая тюркские, мало размеченных корпусов и словарей; ситуацию усложняет сосуществование кириллицы и латиницы.
«Шумные» тексты
Соцсети: опечатки, сленг, пропуск «ё», смешение языков (code-switching). Ошибки морфологии распространяются на все следующие этапы анализа.
Пример: омонимия словоформы «стали»
| Лемма | Часть речи | Граммемы | Контекст |
|---|---|---|---|
| стать | глагол | прош. вр., мн. ч. | Они стали друзьями |
| сталь | существительное | род. п., ед. ч. | нож из стали |
| сталь | существительное | дат. / предл. п., ед. ч. | о закалённой стали |
| сталь | существительное | им. / вин. п., мн. ч. | легированные стали |
Методы решения
| Подход | Идея | Сильные стороны | Слабые стороны |
|---|---|---|---|
| Стемминг (Портер, Snowball) | Отсечение аффиксов по правилам | Быстро, без словаря | Overstemming и understemming, нет леммы и граммем |
| Словарный (Зализняк, OpenCorpora) | Основы и парадигмы хранятся в словаре (trie, DAWG) | Высокая точность на известных словах | Не покрывает новые слова, не снимает омонимию |
| Конечные преобразователи (двухуровневая морфология Коскенниеми) | Автомат связывает лексический и поверхностный уровни | Обратимость (анализ и синтез), удобно для агглютинативных языков | Трудоёмкое ручное описание грамматики |
| Статистический (HMM, CRF) | Вероятностный выбор тега по контексту; алгоритм Витерби | Снимает омонимию | Нужен размеченный корпус, разреженность данных |
| Нейросетевой (BiLSTM, BERT) | Модель учится на символах и широком контексте | Лучшее качество, разбор незнакомых слов | Много данных и вычислений, слабая интерпретируемость |
Инструменты и ресурсы
pymorphy2 / pymorphy3
Анализатор для русского на Python, словарь OpenCorpora. Метод parse() возвращает все разборы слова с оценками.
Mystem
Анализатор Яндекса: гипотезы для несловарных слов и контекстное снятие омонимии.
UDPipe, Stanza
Обучаемые конвейеры (токенизация, теги, леммы, синтаксис) в стандарте Universal Dependencies, формат CoNLL-U.
HFST, Foma, Apertium
Инструменты конечных преобразователей; в Apertium есть открытые анализаторы тюркских языков.
Корпуса
НКРЯ, OpenCorpora, трибанки UD — «золотой стандарт» для обучения и оценки (accuracy по токенам).
Natasha, NLTK
Библиотеки Python: Natasha — для русского (морфология, синтаксис, NER), NLTK — универсальный учебный набор.
Тесты: 10 вариантов по 15 вопросов
У каждого из 10 студентов свой вариант — вопросы не повторяются. В каждом вопросе один правильный ответ.
Результаты
Сохраняются в этом браузере. Оценка: 13–15 — «5», 10–12 — «4», 7–9 — «3», меньше — «2».