Но я облажался...
Предыстория: экосистема 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)
# ошибка
Что я вынес из этого опыта:
Не изобретайте велосипед в NLP — используйте проверенные решения
Русский язык невероятно сложен — одних только исключений больше, чем правил
MVP != Production — то, что работает на 10 примерах, сломается на реальных текстах
Открытый код спасает время — 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 для русского языка, загляните в репозитории, я не откажусь от помощи с форками, а КТТС будет полезна любая помощь, я больше не пойду =):
