Морфологический слой
Защита от галлюцинаций. Как мы отбираем у ИИ право на ошибку с помощью детерминированных Python-словарей.
Языковые модели прекрасно видят общую картину, но они ужасающе небрежны в деталях. Для ChatGPT грамматика — это просто статистика. Он не знает правил русского языка, он просто воспроизводит те комбинации токенов, которые чаще всего видел в интернете.
Болезни LLM-парсинга
В первых версиях Razbor.org мы полностью доверяли разбор нейросети. Результаты были катастрофическими:
- Игнорирование вида глаголов: ИИ случайным образом путал совершенный и несовершенный вид («бежал» мог стать совершенным видом, просто потому что так сгенерировалось).
- Путаница в падежах: Родительный и Винительный падежи одушевленных существительных (вижу кота / нет кота) ставили нейросеть в абсолютный тупик.
- Выдуманные характеристики: Иногда модель приписывала наречиям род и число, что является грубейшей академической ошибкой.
Внедрение Pymorphy3
Мы поняли, что ИИ нельзя доверять академическую базу. Поэтому мы разработали отдельный микросервис на Python, внутри которого работает Pymorphy3 — классический морфологический анализатор, использующий словари OpenCorpora.
Двойной запрос (Параллельная обработка)
Каждое слово из предложения, которое ИИ определил как самостоятельную часть речи, параллельно отправляется по API в наш словарный микросервис. Pymorphy сверяет слово с эталонной базой (содержащей сотни тысяч лексем) и возвращает жесткий, математически точный набор морфологических тегов (число, род, падеж, спряжение, вид).
Но что делать, если ИИ выдал один результат, а словарь — другой? Кому верить? Об этом — на этапе Склейки.