Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Анализ текста на естественном языке, управляемый вариантами разбора
1. Анализ текста на естественном языке,
управляемый вариантами разбора
Носков Алексей
МГУ им. М.В.Ломоносова, ВМК
alexey.noskov@gmail.com
19 мая 2012
2. Содержание
Анализ текста и неоднозначность
Анализ по этапам
Неоднозначность анализа
Анализ по вариантам
Представление вариантов анализа
Список вариантов
Дерево вариантов
Граф вариантов
Обработка множества вариантов
Преобразование графов вариантов
Процессы на графах вариантов
Применение алгоритмов анализа
Регулярные преобразователи
Контекстно-свободные грамматики
Программная реализация
2
3. Независимые этапы анализа
Текст
Графематический анализ
Несколько этапов Морфологический анализ
анализа, которые:
независимы Синтаксический анализ
применяются
последовательно Семантический анализ
Внутреннее представление
3
4. Независимые этапы
Причины
Почему так именно так?
Декомпозиция сложной задачи на более простые
Удобно описывать и тестировать алгоритмы, работающие
на независимых этапах
Можно проводить разработки в рамках одного этапа, а
другие использовать уже какие-то готовые
Но есть проблема:
Неоднозначность анализа
4
5. Неоднозначность анализа
Проявляется на каждом из этапов
мимо гор. Калуги
мыла
вернулся из поездки в Москву
Как правило не может быть разрешена в рамках одного
этапа
Иногда не может быть разрешена в рамках одного
“предложения“
Река Ока протекает через южную часть гор. Калуги -
административного центра области.
5
6. Неоднозначность анализа
Применяемые решения
Фильтрация вариантов перед следующим этапом
Можно упустить правильные варианты
Фильтрация представляет из себя упрощенный вариант
последующих этапов – порождает усложнение и
дублирование кода
Передача на следующий этап нескольких вариантов
Можно проанализировать то, что совсем не нужно
6
9. Неоднозначность анализа
Анализ человеком
Наблюдения о человеке:
анализирует текст сразу при поступлении слов
строит вариант анализа того, что уже поступило и
предполагает что будет дальше
если новый участок текста не согласуется с
предположением - происходит возврат
расстояние на которое возврат может сделан быстро
ограничено кратковременной памятью
8
10. Анализ по вариантам
Основные идеи:
Максимально глубокий анализ (через все возможные
этапы) того участка текста, который уже поступил
Анализ дальнейшего текста исходя из результатов анализа
того, что уже получено ранее
Возврат в случае невозможности дальнейшего анализа
9
13. Анализ по вариантам
Основные проблемы
Вариантов анализа может быть очень много
Не рассматривать все варианты - только те, которые
нужны для достижения результата
Не повторять анализ одних и тех же участков
Разбиение по этапам удобнее для описания
Описание этапов не обязательно должно явно
соответствовать последовательности их применения
Описывать этапы так, чтобы:
они остались независимыми
при этом позволяли производить анализ по вариантам
12
14. Содержание
Анализ текста и неоднозначность
Анализ по этапам
Неоднозначность анализа
Анализ по вариантам
Представление вариантов анализа
Список вариантов
Дерево вариантов
Граф вариантов
Обработка множества вариантов
Преобразование графов вариантов
Процессы на графах вариантов
Применение алгоритмов анализа
Регулярные преобразователи
Контекстно-свободные грамматики
Программная реализация
13
15. Представление вариантов анализа
На каждом уровне текст можно представить как набор
некоторым образом связанных единиц. Например, лексем
или синтаксических конструкций.
Для начала – просто последовательность этих единиц без
связей.
Но вариантов представления может быть много.
Как представлять набор этих вариантов?
14
16. Представление вариантов анализа
Cписок вариантов
Простейший способ - просто перечислить все варианты
Я мою пол
Я мой полый
Я мой пол
Я мой пола
Я мыть полый
Я мыть пол
Я мыть пола
15
17. Представление вариантов анализа
Дерево вариантов
полый 3
пол
2 3
мыть
пола
Очевидное
3
улучшение –
Я
склеить начало 0 1
вариантов
полый 3
мой
пол
2 3
пола
3
16
18. Представление вариантов анализа
Граф вариантов
Некоторые неопределенности локальны и не вляют на
дальнейший текст – можно склеить в граф
мыть полый
Я пол
0 1 2 3
мой пола
17
19. Представление вариантов анализа
Граф вариантов
Некоторые неопределенности локальны и не вляют на
дальнейший текст – можно склеить в граф
мыть полый
Я пол
0 1 2 3
мой пола
В этом графе каждый путь определяет некоторый допустимый
вариант разбора. Будем называть такой граф «графом
вариантов».
17
20. Содержание
Анализ текста и неоднозначность
Анализ по этапам
Неоднозначность анализа
Анализ по вариантам
Представление вариантов анализа
Список вариантов
Дерево вариантов
Граф вариантов
Обработка множества вариантов
Преобразование графов вариантов
Процессы на графах вариантов
Применение алгоритмов анализа
Регулярные преобразователи
Контекстно-свободные грамматики
Программная реализация
18
21. Обработка множества вариантов
Этап анализа как преобразование
Этап анализа – преобразование одного графа вариантов в
другой с сохранением отношений между вариантами:
Каждый путь из входного графа преобразуется в подграф
выходного графа (возможно пустой)
Пути выходного подграфа - варианты анализа этого пути
19
25. Обработка множества вариантов
Этап анализа как процесс
Этап анализа – процесс, который:
Имеет состояние, изменяющееся в рамках анализа одного
варианта
Обрабатывает вариант анализа поэлементно – получает на
вход один элемент входного варианта и выдает новые
элементы на выход сразу, как только возможно
Копируется в случае возникновения неоднозначности
Склеивается в случае окончания локальной
неоднозначности
Работает независимо от других процессов (в том числе
своих копий)
23
26. Обработка множества вариантов
Работа процессов
Процессы осуществляют последовательное преобразование
входного графа в выходной.
Я мою пол
Synan|Morphan|Graphan
24
29. Обработка множества вариантов
Работа процессов
Грамматика для синтаксического анализа:
NG -> N | Pn | A NG
VG -> V [NG]
S -> NG VG
NG(Я) мою пол
Synan|Morphan
27
30. Обработка множества вариантов
Работа процессов
Грамматика для синтаксического анализа:
NG -> N | Pn | A NG
VG -> V [NG]
S -> NG VG
мыть
NG(Я) пол
1 Synan Morphan
мой
28
31. Обработка множества вариантов
Работа процессов
Грамматика для синтаксического анализа:
NG -> N | Pn | A NG
VG -> V [NG]
S -> NG VG
мыть
Synan
NG(Я) пол
Morphan
Synan мой
29
32. Обработка множества вариантов
Работа процессов
Грамматика для синтаксического анализа:
NG -> N | Pn | A NG
VG -> V [NG]
S -> NG VG
V(мыть)
Synan
NG(Я) пол
Morphan
Synan мой
30
33. Обработка множества вариантов
Работа процессов
Грамматика для синтаксического анализа:
NG -> N | Pn | A NG
VG -> V [NG]
S -> NG VG
V(мыть)
Synan
полый
NG(Я) пол
пола
мой
Synan
31
34. Обработка множества вариантов
Работа процессов
Грамматика для синтаксического анализа:
NG -> N | Pn | A NG
VG -> V [NG]
S -> NG VG
Synan полый
пол
V(мыть)
Synan
NG(Я) Synan пола
полый
Synanмой
пол
пола
32
35. Обработка множества вариантов
Работа процессов
Грамматика для синтаксического анализа:
NG -> N | Pn | A NG
VG -> V [NG]
S -> NG VG
A(полый)
Synan
пол
V(мыть)
Synan
NG(Я) Synan пола
полый
Synanмой
пол
пола 33
36. Обработка множества вариантов
Работа процессов
Грамматика для синтаксического анализа:
NG -> N | Pn | A NG
VG -> V [NG]
S -> NG VG
пол
V(мыть)
Synan
NG(Я) Synan пола
полый
Synanмой
пол
пола
34
37. Обработка множества вариантов
Работа процессов
Грамматика для синтаксического анализа:
NG -> N | Pn | A NG
VG -> V [NG]
S -> NG VG
N(пол)
V(мыть)
Synan
NG(Я) Synan пола
полый
Synanмой
пол
пола
35
38. Обработка множества вариантов
Работа процессов
Грамматика для синтаксического анализа:
NG -> N | Pn | A NG
VG -> V [NG]
S -> NG VG
V(мыть) N(пол) VG(2)
Synan
NG(Я) Synan пола
полый
Synanмой
пол
пола
36
39. Обработка множества вариантов
Работа процессов
Грамматика для синтаксического анализа:
NG -> N | Pn | A NG
VG -> V [NG]
S -> NG VG
V(мыть) N(пол) VG(2)
S(2)
NG(Я) Synan пола
полый
Synanмой
пол
пола
37
40. Обработка множества вариантов
Порядок работы процессов
От того в каком порядке работают процессы зависит
количество операций для нахождения первого полного
варианта анализа.
последовательное движение - поиск в глубину
параллельное движение - поиск в ширину
введение оценок перспективности анализа - эвристический
поиск
38
41. Содержание
Анализ текста и неоднозначность
Анализ по этапам
Неоднозначность анализа
Анализ по вариантам
Представление вариантов анализа
Список вариантов
Дерево вариантов
Граф вариантов
Обработка множества вариантов
Преобразование графов вариантов
Процессы на графах вариантов
Применение алгоритмов анализа
Регулярные преобразователи
Контекстно-свободные грамматики
Программная реализация
39
42. Регулярные преобразователи
Конечные автоматы-преобразователи замечательно
подходят под роль процесов:
Имеют состояние, которое поддерживает сравнение и
копирование
Обрабатывают входящие символы по одному
Выдают результаты сразу после накопления необходимой
информации
Языки описания регулярных преобразователей работают
поверх графов вариантов и реализуются процессами
Все это остается верным и при их расширении
контекстными условиями (например, как в языках
Jape/LSPL)
40
43. Регулярные преобразователи
Пример грамматики
adj.agrTo(’noun).* - noun.$(’noun)
==> nameGroup(’noun)
nameGroup.$(’subj) - verb.agrTo(’subj) - nameGroup
==> action
Может быть использована для преобразования:
Произвольных подпутей в графе (например, отдельных
конструкций)
Подпутей в графе, составляющих полный путь (например,
последовательных предложений)
Полного пути в графе (например, единственного
предложения)
41
44. Контекстно-свободные грамматики
Упаковка дерева
Упаковка дерева в путь в графе вариантов
Постфиксная запись дерева
Два типа элементов в пути:
Лист дерева
Промежуточный узел, создаваемый на основе N
предыдущих
При проходе по графу дерево может быть распаковано
путем построения снизу вверх
NG(Я) V(мыть) NG(пол) VG(2) S(2)
42
46. Контекстно-свободные грамматики
Плюсы такой упаковки
Сохраняет последовательность появления листьев
Допускает обход и преобразование снизу вверх без
распаковки
Позволяет представлять локальные неоднозначности на
различных уровнях дерева
Естественное представление, которое получается в
процессе работы LR-анализатора
44
47. Контекстно-свободные грамматики
Применение алгоритмов
Алгоритмы анализа, использующие явный стек легко
адаптируются для работы в виде процессов
Стек просто становится частью состояния
Особенно хорошо адаптируются LR-алгоритмы
Последовательность шагов shift-reduce – и есть описанное
выше упакованное дерево
45
48. Программная реализация
Общая информация
Прототип на языке Scala
Простейший графематический анализ
Морфологический анализ на базе библиотеки для Lucene,
использующей словари AOT
Реализация графов и процессов
Реализация регулярных преобразователей поверх
процессов
DSL для описания регулярных грамматик непосредственно
в коде
Визуализация полученных графов вариантов
46
49. Программная реализация
Граф вариантов
Ленивая структура данных
Несколько типов узлов:
Конец варианта
Возврат
Множественное ветвление - ленивый список вариантов
Вывод элемента - ленивое вычисление следующего узла
Может быть раскрыт в ленивый список вариантов
Для получения первых N вариантов анализа
Для отладки
47
50. Программная реализация
Регулярные преобразователи
DSL для описания грамматики в коде
val grammar = new RegularWordGrammar[Any] {
adj.aggrTo(’main).* - noun.bind(’main) ==> nameGroup
}
val nameGroupGraph = grammar.gsubMatcher(wordsGraph)
48
51. Дальнейшие направления
Адаптация более сложных подходов к анализу
Введение оценок перспективности для эвристического
поиска
Ограничение кратковременной памяти
Проведение экспериментов
Качество работы
Вычислительная эффективность
Реализация программной системы для экспериментов с
подходом
Базовая библиотека, реализующая подход
Средства для описания более сложных методов анализа
Графическая среда для экспериментов без
программирования
49