Объектно-ориентированная грамматика: ключевые абстракции и формализмы
Общетеоретические положения: линейная последовательность знаков и их иерархия
Естественный способ речевой коммуникации между людьми предполагает
обмен звуковыми или иными сигналами, которые имеют линейную последовательность,
т.е. следуют один за другим во времени. В устной речи это единственно
возможный способ коммуникации, поскольку
речевые звуки (фонемы) мы производим по очереди, а не одновременно.
Соответственно, человеческий язык устроен таким образом, чтобы упаковывать
интересующую нас информацию в линейные последовательности, т.е. в слова,
предложения, абзацы, главы, цельные речи. Это ключевая особенность нашей
речевой коммуникации в отличие, скажем, от зрительного восприятия, когда мы
одновременно можем наблюдать целую картину. Все тексты, которые производит
на свет человек, записываются на носители последовательно, буква за буквой,
слово за словом, предложение за предложением. Направление письма может быть
разным–слева направо (европейские языки), справа налево (например,
арабский, иврит) или сверху вниз (историческая письменность Китая)–
однако принцип последовательного развертывания знаков во времени и пространстве
всегда соблюдается.
Понятие знака предполагает закрепление за определенным объектом определенной семантической и синтаксической информации, позволяющей связывать знаки одного ранга между собой и образовывать
знаки более высокого уровня. Нахождение связей между знаками становится возможным благодаря тому,
что знаки помимо линейного расположения обладают собственной синтактикой, т.е.
могут образовывать иерархические или древовидные структуры.
Так, из определенных линейных сочетаний фонем (на письме выраженных буквами
или буквосочетаниями)
образуются слоги, слоги представляют собой строительный материал для формантов-морфем,
из морфем строятся словоформы, из словоформ–синтаксические объекты,
из синтаксических объектов–предложения и т.д. Каждый из уровней знака несет свою
собственную семантическую информацию, которая в итоге суммируется по определенным
правилам и дает нам итоговую семантическую картину.
Например, определенная речевая интонация может означать, что говорящий делает утверждение,
задает вопрос, формулирует просьбу, удивляется и т.п. В китайском языке тон каждого
слога будет неразрывно связан с лексической семантикой.
Морфемы вносят свой семантический вклад, готовые лексические единицы–свой.
Порядок слов в предложении также очень важен для адекватного понимания
смысла текста.
В китайском языке семантическая информация закрепляется как
за звуковыми (фонемными) комплексами, так и за графическими знаками–идеограммами.
Однако принципы линейного анализа потока знаков оказываются
универсальными как для звуков, так и для графем.
Рисунок 1 – Линейное расположение иероглифов без пробелов-разделителей
Рисунок 1 – Линейное расположение иероглифов без пробелов-разделителей
Текст представляет собой результат сложной упаковки в линейную
последовательность знаков различных уровней. Задача автоматической
интерпретации текста состоит в том, чтобы определить алгоритмы
распаковки знаковых последовательностей и воссоздания иерархической знаковой структуры,
выражающей смысл. Процесс линейного вычленения единиц разных уровней называется
токенизацией.
Рисунок 2 – Линейная токенизация: основные уровни
Каждый из представленных в схеме уровней является определяющим
для нижестоящего: наверх передаются только те версии анализа, которые
получили разумную интерпретацию на соответствующем уровне.
Порядок активации уровней в программной реализации следующий.
Анализируемый текст может быть подан на вход любому
из имеющихся токенизаторов. Вызванный токенизатор должен
представить на выходе своей работы все возможные версии
интерпретации входного потока, исходя из имеющихся у него эвристик.
Если для получения очередной языковой единицы данного уровня
требуется узнать ее собственные составные единицы, то токенизатор
обращается к нижестоящему уровню и активирует соответствующий токенизатор.
В итоговом разбора текст будет представлен в виде единиц различных уровней,
собранных в иерархические структуры.
Для иллюстрации общей идеи объектно-ориентированного
анализа текста рассмотрим короткий русский текст.
Рассмотрим следующую последовательность кириллических символов:
арозаупаланалапуазора
Мы намеренно удалили пробелы, чтобы показать, что анализ знаковых последовательностей может происходить и без вспомогательных средств орфографии и пунктуации. Ведь в звучащей речи обычно нет пауз и поток звуков непрерывен. Кроме того, даже на письме пробелы между словами не всегда ставятся (связные формы с предлогами в арабском языке, отсутствие пробелов при использовании китайских иероглифов и др.).
На уровне символьной токенизации
строка будет разделена на отдельные знаки–буквы.
«а» «р» «о» «з» «а» ...
токен «а»–лексема «а»: союз / буква / междометие / сокращение
токен «роза»–лексема «роза»: существительное, имя собственное (ж. р., ед. ч., им. пад.)
токен «упала»–лексема «упасть»: глагол (личная форма, прош. время, ед. ч., ж.р.)
токен «на»–лексема «на»: предлог, функциональный аналог высказывания (= держи!)
токен «лапу»–лексема «лапа»: существительное (ж. р., ед. ч., вин. пад.)
токен «азора»–лексема «азор»: неизвестное существительное, имя собственное?
(м. р., ед.ч., род./вин. пад.;
ж. р., ед. ч., им. пад.)
При вызове синтаксического анализатора для каждой словоформы выполняется поиск возможных синтаксических ролей в рамках объекта «Высказывание». Объект класса «Высказывание» связывает свои строительные единицы в единую иерархическую структуру. Подробнее синтактика уровня высказываний будет рассмотрена позже, а пока лишь покажем структуру связей и вложенностей объектов на этом уровне.
"а"–синтаксический коннектор (связывающий простые предложения) "роза"–именная группа, группа подлежащего, группа простого предложения (вершина) "упасть"–глагольная группа, группа сказуемого (подчинено группе подлежащего) "на"–предложная группа, обстоятельство (подчинено глагольной группе) "лапа"–именная группа, группа предложной конструкции, подчинено предложной группе "азора"–именная группа, группа генетивного определения, подчинено именной группе
Рисунок 3 – Структура данных объекта класса «Высказывание»
В высказывании формируются отдельные пропозиции, которые подлежат семантическому анализу с обращением к толковому словарю и онтологии. Вся совокупность предложений текста переводится в комплекс взаимосвязанных семантических пропозиций. Ниже приводится несколько огрубленный пример записи в Python-нотации семантических пропозиций, извлеченных из текста нашего примера.
roza = Roza() # создаем экземпляр объекта класса «Роза»
azor = AnimalObject() # создаем экземпляр объекта класса «Живое существо»
lapa = azor.physical_structure.paw # создаем экземпляр объекта класса «Лапа»,
# который агрегирован в физическую структуру класса «Живое существо»
roza.padaet(action_phase=complete,target=lapa) # объект «роза» выполняет метод «падать»
# со следующими параметрами:
# фаза действия = «завершенная»
# цель действия = объект «лапа»
s = Statement() # создаем экземпляр объекта класса «Суждение»
s.about(roza) # объект «суждение» выполняет метод подгрузки
# объекта «роза», о котором выполняется суждение
author = Author() # создаем экземпляр объекта класса «Автор сообщения»
author.communicate(s) # объект «автор сообщения» выполняет метод
# «сообщить», аргументом которого является
# объект «сообщение»
Этот комплекс уже является строго формализованной информацией, соотносящей все объекты данного высказывания с общей семантической онтологией и базой знаний. С этой информацией можно работать средствами логического анализа, независимо от конкретного естественного языка. На наш взгляд, задача лингвистического анализа текста на естественном языке должна считаться выполненной, если процесс интерпретации приводит к выявлению совокупности семантических пропозиций в объектной нотации.