Но я облажался...

Предыстория: экосистема MAWO и вторая жизнь NLP-библиотек

В русскоязычном сообществе разработчиков есть проблема — многие качественные NLP-библиотеки для русского языка перестали поддерживаться. Pymorphy2, razdel, slovnet — отличные инструменты, которые просто остановились в развитии.

После того как я обновил mawo-pymorphy3 для современных версий Python, мне написал разработчик из команды KTTC. Они использовали оригинальный pymorphy2 и столкнулись с проблемами совместимости. Мы вместе доработали библиотеку, создали единый API для всех MAWO-форков, и в процессе он пригласил меня помочь с их основным проектом.

Что такое KTTC и зачем нужна проверка переводов

KTTC (Knowledge Translation Testing & Checking) — это платформа для автоматической оценки качества переводов. Представьте: вы перевели техническую документацию или юридический договор через нейросеть. Перевод выглядит хорошо, но как убедиться, что нет критических ошибок в терминологии, грамматике или смысле?

KTTC решает эту задачу комплексно:

  • Многоуровневая проверка через NLP-анализ

  • Интеграция с различными LLM (Яндекс, Сбер, GPT)

  • Мультиагентная система для кросс-валидации

  • Использование специализированных справочников и бенчмарков

  • Метрики качества перевода (BLEU, ROUGE, BERTScore)

Базовое использование выглядит просто:

# Проверка нескольких вариантов перевода
kttc check source.txt trans1.txt trans2.txt trans3.txt \
  --source-lang en \
  --target-lang ru \
  --output report.json

# Результат включает:
# - Оценки качества для каждого варианта
# - Список найденных проблем с категоризацией
# - Рекомендации по улучшению

Почему мы решили писать свой модуль грамматики

Команде нужен был инструмент для проверки грамматических ошибок в русских переводах. Существующие решения либо были слишком базовыми, либо требовали дорогих API. Мы решили: "Насколько сложно может быть написать проверку русской грамматики? У нас же есть pymorphy для морфологии!"

Офигеть как сложно.

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

Оказалось, что для корректной проверки нужно учитывать:

  • Согласование по роду, числу и падежу — но с учётом исключений

  • Управление глаголов — каждый глагол требует определённый падеж

  • Пунктуация — правила для запятых, тире, двоеточий

  • Орфография — проверка написания с учётом контекста

Блин я даже в школе столько правил по русскому не читал, какой же наш язык сложный, а чтобы реализовать все проверки, что бы правила корректно отрабатывали, проще застрелиться... Пришлось гуглить информацию по ЕГЭ 2025 года и ковыряться на НКРЯ. Много нового узнал =)
В общей сложности потратили неделю, на реализацию концепта, функционал, перенос правил русского языка.

Когда доделали, крутость зашкаливала просто)) Все завелось и работало, супер! Но мы быстро опустились на землю, когда тесты начали выдавать ложные ошибки, причем десятки, а иногда и сотни, после 3 дней мучений с костылями и добавлением правил на правила, мы решили забить... Проект был удален...

Качественная проверка грамматики — это годы разработки и поддержки правил. Команда КТТС остановилась на LanguageTool, проект решает эту задачу уже 20 лет и с русским отлично работает.
И как не странно все у него сразу заработало, но плохой опыт тоже опыт.

from mawo_grammar import RussianGrammarChecker
checker = RussianGrammarChecker()
text = "красивая дом"
errors = checker.check(text)
# ошибка

Что я вынес из этого опыта:

  1. Не изобретайте велосипед в NLP — используйте проверенные решения

  2. Русский язык невероятно сложен — одних только исключений больше, чем правил

  3. MVP != Production — то, что работает на 10 примерах, сломается на реальных текстах

  4. Открытый код спасает время — LanguageTool бесплатен и покрывает 99% кейсов

В детали их проекта я не сильно вникал, там не все так просто как кажется, попробую своими словами. Если коротко, то суть проекта в проверке качества переводов, скажем вы перевели через ИИ текст с английского на русский, в целом он может быть хороший, но могут попадаться нюансы, особенно если текст большой или какой ни будь договор, которых хотелось бы избежать если этот документ нужно будет отправлять кому то или подписывать.
После интеграции LanguageTool качество проверки значительно выросло. Основные направления развития:

  • Веб-интерфейс для удобной работы (сейчас только CLI)

  • Расширение поддержки языковых пар

  • Интеграция с CAT-системами

  • API для встраивания в CI/CD переводческих проектов.

И куча еще всякого, как мне показалось часть не документирована еще в ридми.

Работает так:

kttc check source.txt trans1.txt trans2.txt trans3.txt \
  --source-lang en \
  --target-lang ru

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

Проект в стадии разработки. Меня хватило на неделю и я больше не хочу смотреть и читать про морфологию, прилагательные, варианты написания, правила запятых и т.д. По этому я попрощался с ними =) и решил написать статью. Я не стал добавлять какие то примеры, какие были баги, это скорее на эмоциях, поделиться впечатлением.

Если вы работаете с переводами или NLP для русского языка, загляните в репозитории, я не откажусь от помощи с форками, а КТТС будет полезна любая помощь, я больше не пойду =):

Комментарии (23)


  1. t0kashi
    21.11.2025 03:12

    "Мы посчитали что мы крутые и начали писать свою библиотеку для граматики..."

    "Пришлось гуглить информацию по ЕГЭ 2025 года и ковыряться на НКРЯ. Много нового узнал =)"

    "Все завелось и работала, супер!"

    Лудшая презентация проекта!!!!


    1. exTvr
      21.11.2025 03:12

      "Все завелось и работала, супер!"

      Велик могучим русский языка!


  1. Robastik
    21.11.2025 03:12

    Что может сравниться с грамматикой - требует миллионы человеко-часов на "освоение" при полном отсутствии практической ценности.


    1. REPISOT
      21.11.2025 03:12

      миллионы человеко-часов

      5-9 класс, программа русского языка ~700 часов. Академических, которые 45 минут. Этого хватает, чтобы грамотно писать и говорить. А 1 миллион часов - это 114 лет круглосуточно.

      при полном отсутствии практической ценности

      Казнить этого господина нельзя помиловать


      1. shlmzl
        21.11.2025 03:12

        5-9 класс, программа русского языка ~700 часов. Академических, которые 45 минут. Этого хватает, чтобы грамотно писать и говорить.

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


      1. Robastik
        21.11.2025 03:12

        700 часов

        Не только вы их потратили, есть и другие

        Казнить этого господина нельзя помиловать

        Почему-то подобные идеи никогда не сопровождаются фактами.

        Факты, например, такие:

        1. Язык выполняет функцию коммуникации

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

        3. Грамматически образованные люди забывают 99,99% изученного, но это никак не вляет на их коммуникацию.

        4. Невозможно забыть то, что приносит тебе пользу каждый день. Невостребованные навыки деградируют.

        5. Компьютер научился говорить немедленно после того, как его перестали учить грамматике

        6. Автор статьи безграмотен, но это не помешало вам понять его текст


        1. cupraer
          21.11.2025 03:12

          Вы абсолютно верные вещи говорите. Но забываете: чтобы насытиться, можно съесть кило пареной репы, а можно — пепосо на приоратском полусухом.

          Вы поймёте Эллочку-людоедку, но в купе поезда, идущего во Владивосток, почему-то хочется оказаться с профессором математики с непрофильным ЛитИном в анамнезе.

          И так далее.


          1. Robastik
            21.11.2025 03:12

            Вот эта парадигма - когда из ЛитИна выходят профессора математики, чтобы потом кататься в поездах на Владивосток, - абсолютно органична для грамматики.


            1. cupraer
              21.11.2025 03:12

              Вы сейчас разговариваете с представителем этого органичного для грамматики парадигменного племени (кроме докторской — поленился защитить).


    1. StasTukalo
      21.11.2025 03:12

      О! Люди со здравыми мыслями еще есть! Я зашел сюда написать именно это, и подумал что сейчас меня за это закидают какахами. А тут уже вы отметились. Полностью поддерживаю вашу точку зрения, коллега! Вы молодец, что непобоялись её высказать.


      1. Robastik
        21.11.2025 03:12

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


        1. cupraer
          21.11.2025 03:12

          грамматика — исключительно политический конструкт

          Вы путаете грамматику с полисемантичностью, традиционно служившей инструментом Великой Казуиции. Грамматика per se — не более чем продажная девка синтаксиса, не способная даже к такой простейшей политической интриге, как катахреза (и даже, обобщая тенденцию, — как троп любой масти, кроме, пожалуй, литоты).


  1. saag
    21.11.2025 03:12

    "Аблигация или облигация,"(С)


  1. shlmzl
    21.11.2025 03:12

    как не странно все у него сразу заработало

    Gemini 3 спросил. Тут две ошибки: орфографическая и пунктуационная.

    1. Орфографическая ошибка: «не» вместо «ни» Правильно писать: «как ни странно». В устойчивых оборотах с уступительным значением (как ни в чем не бывало, как ни крути, как ни старался) используется усилительная частица «ни». Смысл фразы не в том, что это «не странно», а в усилении: «насколько бы странным это ни казалось».

    2. Пунктуационная ошибка: пропущена запятая Правильно: «Как ни странно, ...». Оборот «как ни странно» является вводным (выражает эмоциональную оценку говорящего). Вводные слова и конструкции в русском языке всегда выделяются запятыми.


  1. mayorovp
    21.11.2025 03:12

    Пришлось гуглить информацию по ЕГЭ 2025 года и ковыряться на НКРЯ. Много нового узнал

    Надо было гуглить учебники русского языка для иностранцев, узнали бы ещё больше :-)

    Когда носители языка изучают родной язык - они и так интуитивно понимают его, им нужно лишь разложить по полочкам уже известное. А вот при обучении иностранным языкам требуется выстраивать понимание языка с нуля.


    1. Robastik
      21.11.2025 03:12

      лишь разложить по полочкам уже известное

      Почему покупатель и продавец - правильно, а продаватель и покупец - нет?


  1. REPISOT
    21.11.2025 03:12

    нужен был инструмент для проверки грамматических ошибок в русских переводах

    А как вы его тестировали, если у вас (судя по статье) уровень на троечку? В статье больше десятка элементарных ошибок (это при чтении по диагонали).


  1. kraken2018
    21.11.2025 03:12

    "нехочу смотреть", "По этому", " какой то", "Все завелось и работала" - автор неудачно шутит? Или неделя изучения русского языка для него прошла зря?

    после 3 дней мучений с костылями и добавлением правил на правила, мы решили забить... Проект был удален...

    очень целеустремленная команда, работает на результат


  1. x-x
    21.11.2025 03:12

    Извиняюсь за глупый вопрос, я только начинаю путь тестировщика, но вы пишете "По этому я попрощался с ними =)" - то есть вы уволились? Вот так просто и что теперь заново искать работу, проходить собеседования и тд? Или для вас не проблема тут же найти новую работу :)


  1. Edge_STV
    21.11.2025 03:12

    Да, и "что бы" в данном контексте пишется вместе: "чтобы"


  1. Biga
    21.11.2025 03:12

    Спасибо за статью. На самом деле очень интересно.


  1. d3d11
    21.11.2025 03:12

    Не хватило усидчивости.
    Проблема зумеров.


  1. cupraer
    21.11.2025 03:12

    У Лескова есть блистательнейшая повесть «Полунощники». Так вот любой автоматический проверятель — на этом тексте сломается, что твоя «японская бензопила»™.

    А текст, тем временем, является одним из самых крутых образчиков русского языка.

    А ведь еще есть Платонов. Да даже Веничка Ерофеев.