Синтаксические правила
Финальная полировка. Защита от школьных ошибок алгоритма с помощью жестких регулярных выражений.
Даже после прохождения семантического и словарного слоев, текст не готов к выдаче пользователю. ИИ часто нарушает строгие правила визуального оформления разбора, принятые в школьной практике. Для этого реализован слой Rule-based Post-processing на чистом PHP.
Изоляция союзов
Нейросеть нередко включает подчинительные союзы (что, если, чтобы, хотя) в состав подлежащего или сказуемого. Скрипт перед рендерингом принудительно проходит по массиву токенов, находит все слова из стоп-листа союзов и переводит их синтаксическую роль в состояние не_член (без подчеркивания).
Охота на частицу «БЫ»
В русском языке частицы условного наклонения (бы, б) являются неотъемлемой частью сказуемого, даже если они стоят в другом конце предложения.
ИИ этого не понимает. Он маркирует «бы» как частицу и оставляет без подчеркивания. Специальный PHP-постпроцессор находит такие частицы и принудительно присваивает им атрибут line_type: double (двойное подчеркивание).
Построение схемы предложения
Пожалуй, самая сложная часть интерфейса — генерация текстовой схемы вида [ ___ === ], (что === --- ).. ИИ не умеет рисовать такие схемы надежно.
Движок генерирует схему математически, "читая" уже исправленный массив токенов слева направо. Он открывает квадратные скобки для главных предложений [], круглые для придаточных (), расставляет запятые и подставляет нужные символы подчеркиваний (___, ===, ~~~) ровно в том порядке, в котором они идут в тексте. Это гарантирует 100% синхронизацию визуальной схемы с самим разбором.