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