Сделал в новом синтаксическом анализаторе работу еще с несколькими типами предложений - императивные конструкции, связки и инверсия.
Что касается связки, точнее одной ее разновидности - нулевой, то есть когда настоящее время глагола быть пропускается. Возникает забавный, и даже может неожиданный, момент - в корне создаваемого графа находится даже не слово, а знак пунктуации.
Вот наглядный пример для предложения кот - хитрое и коварное животное:
Помимо того, что пунктуатор является корнем графа, новый алгоритм явным образом выделяет тему и рему, то есть что и о ком говорится. Соответствующие ребра графа имеют специальные типы, их видно и на скриншоте.
Второй момент, за который может зацепиться глаз - анализатор явным образом структурирует исходную цепочку слов, сближая некоторые слова, уменьшая между ними расстояние в графе. Можно сказать, что анализатор делает последовательные уточнения:
что касается кота,
он является животным,
более того, для этого животного характерно, что оно хитрое,
вдобавок, и коварное
Раньше у меня был специальный модуль, который извлекал такую структурированную информацию и сохранял ее в специальной базе данных. И другой механизм позволял общаться с этой базой знаний посредством вопросов на обычном языке, то есть кто животное? Является ли кот животным? и так далее.
Еще один пример - предложение с инверсией дополнение-сказуемое-подлежащее:
Какой клад ищут на этом необитаемом острове пираты, забыв про свою безопасность
Деепричастный оборот тут добавлен как тестовая нагрузка. Вот что с ним делает анализатор:
Тут тоже информация структурирована и выстроена в иерархию уточнения деталей.
О ком речь - о пиратах (подлежащее, тип ребра RIGHT_SUBJECT)
Что они делают? Они ищут (глагольное сказуемое, корень графа)
Что они ищут? Клад (тип ребра LEFT_OBJECT)
Где происходит действие? На острове
Что известно про остров? Он необитаемый
И так далее.