NLP_Homework_1 / run.sh
Kolesnikov Dmitry
feat: Вторая лабораторка
83b4881
#!/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"