#!/usr/bin/env bash # -*- coding: utf-8 -*- # Скрипт для быстрого запуска системы анализа токенизации. # Автоматически устанавливает зависимости и запускает веб-интерфейс. echo "🚀 Запуск системы анализа токенизации" echo "=====================================" # Проверяем наличие Python if ! command -v python3 &> /dev/null; then echo "❌ Python3 не найден. Установите Python 3.8+ и повторите попытку." exit 1 fi # Проверяем версию Python python_version=$(python3 -c 'import sys; print(".".join(map(str, sys.version_info[:2])))') required_version="3.8" if [ "$(printf '%s\n' "$required_version" "$python_version" | sort -V | head -n1)" != "$required_version" ]; then echo "❌ Требуется Python 3.8+, найден $python_version" exit 1 fi echo "✅ Python $python_version найден" # Создаем виртуальное окружение (опционально) if [ "$1" = "--venv" ]; then echo "📦 Создание виртуального окружения..." python3 -m venv venv source venv/bin/activate echo "✅ Виртуальное окружение активировано" fi # Устанавливаем зависимости echo "📥 Установка зависимостей..." pip install -r requirements.txt if [ $? -eq 0 ]; then echo "✅ Зависимости установлены успешно" else echo "❌ Ошибка при установке зависимостей" exit 1 fi # Проверяем наличие данных if [ ! -f "data/raw_corpus.jsonl" ]; then echo "📊 Корпус не найден. Запускаем сбор данных..." python src/scrapers.py --auto --out data/raw_corpus.jsonl --min_words 50000 --max_articles 1000 if [ $? -eq 0 ]; then echo "✅ Корпус собран успешно" else echo "⚠️ Ошибка при сборе корпуса, но продолжаем с демо-данными" fi else echo "✅ Корпус найден" fi # Создаем необходимые директории mkdir -p results models notebooks echo "" echo "🎯 Выберите режим запуска:" echo "1) Веб-интерфейс (Streamlit)" echo "2) Демонстрация функционала" echo "3) Сбор дополнительных данных" echo "4) Обучение подсловных моделей" echo "" read -p "Введите номер (1-4): " choice case $choice in 1) echo "🌐 Запуск веб-интерфейса..." echo "Приложение будет доступно по адресу: http://localhost:8501" streamlit run src/streamlit_app.py ;; 2) echo "🎭 Запуск демонстрации..." python demo.py ;; 3) echo "📊 Сбор дополнительных данных..." python src/scrapers.py --auto --out data/raw_corpus.jsonl --min_words 100000 --max_articles 2000 ;; 4) echo "🤖 Обучение подсловных моделей..." python src/train_subword.py ;; *) echo "❌ Неверный выбор. Запускаем веб-интерфейс по умолчанию..." streamlit run src/streamlit_app.py ;; esac echo "" echo "✅ Работа завершена!" echo "📖 Документация: README.md" echo "📋 Отчет: FINAL_REPORT.md"