Изменение порядка связывания в синтаксическом графе

Nov 19, 2012 08:37

В нисходящем парсере сейчас реализован "традиционный" порядок связывания подлежащего и сказуемого. А именно - глагол, который является headword в глагольном сказуемом, становится корнем, подлежащее привязывается к нему ребром типа SUBJECT.

Вчера, при анализе нового алгоритма, наткнулся на то, что достаточно часто жесткое следование такому порядку порождает больше проблем, а порождаемые деревья выглядят неестественно. Это если не рассматривать вообще вопрос о необходимости построения графа как такового - но это отдельная тема, к ней еще придется вернуться при разборе очень, очень длинных предложений в новой поисковой системе.

Итак, вот пример предложения:

Стёклышко ловило луч солнца, подбрасывало его как на ладони и кидало в самую неожиданную сторону

Одно подлежащее, три глагольных сказуемых, каждое со своими уточняющими ветками.

Если идти обычным путем, то получается вот такой граф:





Что с ним не так? Самое главное - сказуемые неожиданно приобретают разный вес, так как одно становится корнем и сразу доступно при анализе графа, остальные два прикрепляются окольными путями, а для анализа требуют дополнительных усилий. Более того, расстояние между подлежащим и сказуемыми разное для этих трех глаголов, что очень плохо. Это отражает порядок разбора (слева направо) и расположение глаголов в исходном предложении, но не имеет никакого отношения к семантике. К примеру, при question answering нужно предусматривать в алгоритме возможность того, что часть важных членов предложения, и ответов на вопрос, на самом деле спрятана где-то там внутри.

Помимо трудностей с анализом уже построенного графа, доскональное воспроизведение такой топологии требует дополнительных танцев с вувузелой, когда мы пытаемся сделать свой вариант Link Grammar. У нас есть существительное, и у него есть слот для исходящих связей типа "подлежащее-сказуемое". Этот слот объявляем многократным, так как одно подлежащее может связываться с несколькими сказуемыми. А у каждого глагола есть входящий слот "подлежащее-сказуемое", причем ограниченный одной связкой. Такая комбинация слотов естественным путем приводит к появлению трех дуг от одного  подлежащего к трем глаголам.



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

Я не вижу, какие проблемы может вызвать такое "нетрадиционно ориентированное" дерево при дальнейшем анализе, к примеру при knowledge mining. Наоборот, оно естественным образом отвечает на вопрос "Что делает стеклышко", порождая три ответа - ловит, подбрасывает, кидает.

В итоге, я думаю, что в новом парсере нет необходимости с дополнительными усилиями приводить деревья к традиционному виду, если более натуральным будет другой порядок связывания.

А если рассматривать только применение парсера в поисковой системе, для извлечения знаний из индексируемых документов, то вообще необходимость построения синтаксических деревьев как финальной часть синтаксического разбора не выглядит жизненно необходимой. Особенно если парсер из-за неоднозначной семантики предложений порождает большое количество вариантов разбора. Тогда сам по себе перебор этих вариантов может занять больше времени, чем синтаксический анализ. Вместо этого, с некоторой потерей точности, можно хранить и использовать матрицу вероятностей связей (или вектор вариантов заполнения семантических слотов в новом парсере). А детерминированную матрицу ребер получать, сохранять и использовать опционально - если парсер смог уложиться в отведенный лимит времени на обработку предложения.

извлечение знаний, синтаксический анализатор, поисковый движок

Previous post Next post
Up