PaydaDosh: пошаговое гайд по ИИ-платформе для сохранения языка | AiManual
AiManual Logo Ai / Manual.
17 Апр 2026 Гайд

PaydaDosh: как мы построили ИИ-платформу, чтобы ингушский язык не стал цифровым призраком

Полное техническое руководство по созданию платформы для цифровизации малоресурсных языков. От сбора данных до запуска ИИ-помощника на примере ингушского.

Половина языков мира умрет к концу этого века. Это не предсказание, это статистика. Ингушский - один из тех, кто на очереди. У него нет цифровой почвы: нет больших датасетов, нет нормальных переводчиков, голосовые ассистенты его не слышат. Молодежь переходит на русский, старики уходят, а между ними - цифровая пустота.

PaydaDosh - это попытка залатать эту дыру. Не просто собрать словарь в PDF, а построить полноценную экосистему, где язык живет в цифре. Платформа, бот, мобильное приложение, открытый корпус текстов. И все это на плечах ИИ, который учится на крохах данных.

Если вы думаете, что для такого проекта нужен лингвистический институт и миллионы долларов - вы ошибаетесь. Нужен один сумасшедший разработчик, немного open-source инструментов и понимание, как обмануть систему, когда данных почти нет. Вот как это делается.

Почему классический подход не работает

Вы не можете взять Transformer, скормить ему 10 миллионов предложений на ингушском и ждать чуда. Этого датасета не существует в природе. GPT-4o (последняя версия на 2026 год) ингушский не знает. Даже Whisper-v4 для распознавания речи спотыкается о специфическую фонетику.

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

Поэтому PaydaDosh строится на трех принципах: синтетические данные, transfer learning с родственных языков (чеченский) и гибридные системы, где ИИ помогает человеку, а не заменяет его.

Архитектура: что внутри платформы

Система состоит из пяти взаимосвязанных модулей. Если один упадет - остальные должны работать.

  • Ядро данных: параллельный корпус ингушский-русский. Хранится в PostgreSQL с расширением pgvector для семантического поиска.
  • ML-сервисы: набор моделей для перевода, генерации текста и классификации. Обернуты в FastAPI, развернуты на отдельном GPU-сервере.
  • Веб-платформа: интерфейс для лингвистов и волонтеров. React + Django, редактор для разметки текстов.
  • Telegram-бот: самый популярный способ взаимодействия. Переводчик, словарь, игры для запоминания слов.
  • Мобильное приложение: оффлайн-словарь и система распознавания речи. Собрано на Flutter, потому что один код для iOS и Android.
💡
Начните с бота. Его проще всего разработать и он сразу даст обратную связь от реальных пользователей. Веб-платформа для лингвистов - это важно, но вторично.

Пошаговый разбор: от нуля до работающего прототипа

Теория закончилась. Вот что вы делаете на практике, если хотите повторить этот проект для своего языка.

1Собираем все тексты, которые существуют

Не начинайте с нейросетей. Начните с простого скрипта на Python, который парсит все, что можно: сайты местных газет, PDF-книги, даже подписи в Instagram. На этом этапе важно количество, а не качество.

Проблема: 90% контента - в смеси ингушского и русского. Решение: используйте языковую модель для классификации. Я взял за основу Kakugo - техника сжатия больших моделей для работы на слабом железе. Fine-tuned версия XLM-Roberta (последняя модель от Facebook на 2026 год) отлично отличает ингушские предложения от русских.

# Пример: фильтрация смешанного текста
from transformers import AutoModelForSequenceClassification, AutoTokenizer
import torch

model_name = "facebook/xlm-roberta-xl-2026"  # Условное название актуальной модели
model = AutoModelForSequenceClassification.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

def detect_language(text):
    inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=512)
    with torch.no_grad():
        outputs = model(**inputs)
    probabilities = torch.nn.functional.softmax(outputs.logits, dim=-1)
    # 0 - русский, 1 - ингушский, 2 - смешанный
    return torch.argmax(probabilities).item()

Не пытайтесь делать парсинг вручную. Возьмите готовый фреймворк вроде Scrapy, но настройте его на кириллицу и специфические кодировки. Иначе потеряете половину символов.

2Создаем параллельный корпус: где взять переводы

Здесь начинается боль. Готовых переводов ингушской литературы на русский почти нет. Что делать?

  • Переводите машинно, потом правите вручную. Используйте модель, обученную на чеченско-русских данных (они есть), как отправную точку. Перевод будет кривой, но это лучше, чем ничего.
  • Запустите краудсорсинг. В том же Telegram-боте добавьте функцию: "Помоги перевести предложение". Люди исправляют ошибки ИИ, и вы получаете чистые данные.
  • Генерируйте синтетические пары. Методы из статьи про Hinglish отлично работают. Берете русское предложение, заменяете ключевые слова на ингушские с помощью словаря, получаете псевдо-перевод для обучения.

Формат хранения: каждая запись в базе - это исходный текст, перевод, метаданные (источник, тема, сложность) и векторное представление для поиска.

3Обучаем свои модели: без GPU и с малыми данными

У вас нет кластера с A100. Да и не нужно. Для задач вроде перевода предложений или классификации текста хватит одной карты с 8 ГБ памяти.

План такой:

  1. Базовые модели берем с Hugging Face. Ищите модели, дообученные на кавказских языках. Если таких нет - берите многоязычные (mBERT, XLM-R) и дообучайте.
  2. Используйте технику Few-Shot Learning. Вместо тысячи примеров, дайте модели 5-10 правильно разметленных шаблонов. Это экономит данные.
  3. Для перевода: Seq2Seq с вниманием. Трансформеры - это круто, но для маленьких датасетов они переобучаются. Иногда простая архитектура на LSTM работает стабильнее.

Мой стек: PyTorch 2.3 (последний стабильный на 2026 год), библиотека Transformers от Hugging Face, и Weights & Biases для трекинга экспериментов.

# Пример запуска обучения на Colab (бесплатно, но с ограничениями)
!pip install transformers datasets torch wandb -q
!git clone https://github.com/your-repo/paydadosh-ml
%cd paydadosh-ml

# Запускаем fine-tuning для классификации
!python train_classifier.py \
  --model_name "facebook/xlm-roberta-base" \
  --train_data "data/train.csv" \
  --num_epochs 10 \
  --batch_size 16
💡
Не гонитесь за точностью 99%. Для первого прототипа достаточно 75-80%. Главное - запустить и получить обратную связь. Модель можно улучшать постепенно, по мере накопления данных.

4Строим веб-платформу: Django или FastAPI?

Оба варианта работают. Я выбрал Django, потому что там из коробки есть админка, аутентификация и ORM. Когда нужно быстро дать инструмент лингвистам, которые не знают SQL, это спасает.

Ключевые компоненты:

  • Редактор текстов с разметкой. Похож на Google Docs, но с возможностью отмечать грамматические конструкции. Используем TipTap.js.
  • Система проверки контрибьютеров. Чтобы волонтеры не портили данные, каждое изменение проверяется другим пользователем или ИИ.
  • Экспорт в разные форматы. Лингвисты любят Excel, программисты - JSON. Делайте и то, и другое.

Если нужен максимально легкий бэкенд, посмотрите на AI-агент для лингвистов. Там описаны подходы к автоматизации рутинной разметки.

5Telegram-бот: самый быстрый способ достучаться до людей

Бот - это лицо проекта. Он должен уметь:

  • Переводить слова и предложения (используем модель из шага 3).
  • Искать примеры употребления из корпуса.
  • Играть в викторины для запоминания слов.
  • Принимать голосовые сообщения и преобразовывать их в текст.

Для голоса я интегрировал Izwi - open-source аналог Whisper, который можно дообучить на специфическом акценте. На сервере ставим ffmpeg и запускаем модель в отдельном контейнере.

# Пример обработки голосового сообщения в боте
import requests
from telegram import Update
from telegram.ext import ContextTypes

async def handle_voice(update: Update, context: ContextTypes.DEFAULT_TYPE):
    voice_file = await update.message.voice.get_file()
    # Скачиваем файл
    voice_path = f"tmp/{voice_file.file_id}.ogg"
    await voice_file.download_to_drive(voice_path)
    
    # Отправляем в сервис распознавания
    with open(voice_path, 'rb') as f:
        response = requests.post('http://localhost:8001/transcribe', files={'file': f})
    
    if response.status_code == 200:
        transcription = response.json()['text']
        await update.message.reply_text(f"Вы сказали: {transcription}")
    else:
        await update.message.reply_text("Не удалось распознать речь")

6Развертывание: как не сломаться под нагрузкой

Вы не Google. У вас нет команды SRE. Поэтому архитектура должна быть максимально простой.

  • Веб-сервер: Nginx + Gunicorn для Django. Статику отдаем через CDN (Cloudflare бесплатно).
  • База данных: PostgreSQL на отдельном сервере. Регулярные бэкапы в S3-совместимое хранилище.
  • ML-сервисы: Docker-контейнеры, оркестрируемые через Docker Compose. Каждая модель в своем контейнере с REST API.
  • Мониторинг: Prometheus + Grafana для метрик, Sentry для ошибок.

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

Чего никто не рассказывает: подводные камни

Вот с чем вы столкнетесь, даже если все шаги выполнены правильно.

ПроблемаРешениеЗатраты времени
Диалектные различия в языкеРазмечайте данные с указанием диалекта. Обучайте отдельные модели для каждого или используйте адаптеры.+40% к времени сбора данных
Вандалы в краудсорсингеСистема репутации: новые пользователи правят только после проверки. Автобан при подозрительной активности.Неделя на настройку модерации
Модель перевода галлюцинируетДобавьте правило-based постобработку: проверяйте выходной словарь, используйте N-gram языковые модели для оценки правдоподобия.2-3 дня на написание правил

Еще один нюанс: юридический. Некоторые тексты могут быть под авторским правом. Либо договаривайтесь с авторами, либо используйте только то, что в общественном достоянии. И всегда указывайте источник.

Что дальше? Когда ИИ начнет писать стихи на ингушском

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

Представьте: ИИ пишет детские сказки на ингушском, которых никогда не существовало. Или генерирует учебные материалы для школ. Язык не просто сохраняется в формалине, он продолжает расти в цифровой среде.

Технически это потребует перехода с классических трансформеров на архитектуры вроде GATO или других мультимодальных моделей, обученных на тексте, аудио и изображениях одновременно. Но это уже тема для другой статьи.

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

Начните сегодня. Завтра может быть уже нечего сохранять.

Подписаться на канал