educational-plagiarism-detector
Educational Plagiarism Detector 🔍
Интеллектуальная система для выявления плагиата в студенческих работах, используя методы машинного обучения и текстовых метрик.
📋 Описание
Educational Plagiarism Detector — инструмент для анализа текстовых документов и выявления потенциального плагиата путем:
- Сравнения с базой референсных документов
- Анализа семантического сходства
- Обнаружения паттернов копирования
- Расчета метрик плагиата (Cosine Similarity, Jaccard Index)
Проект решает реальную проблему в образовании — автоматизацию проверки оригинальности студенческих работ.
Ключевые возможности
✅ Быстрый анализ текстов — обработка документов за секунды
✅ Множественные метрики — Cosine Similarity, Jaccard Index, Token Overlap
✅ Пакетная обработка — проверка нескольких документов одновременно
✅ Детальные отчёты — HTML и JSON отчёты с визуализацией
✅ CI/CD интеграция — автоматическая проверка качества и тестирование
🚀 Быстрый старт
Предварительные требования
- Python 3.8+
- pip или conda
- Git
Установка
📖 Примеры использования
Пример 1: Базовое сравнение двух текстов
Вывод:
Сходство: 85.43%
Статус: ⚠️ ПЛАГИАТ
Метрики:
- Cosine Similarity: 0.8543
- Jaccard Index: 0.6234
Пример 2: Проверка работы против базы документов
Пример 3: Пакетная обработка
Пример 4: Использование через CLI
📁 Структура проекта
educational-plagiarism-detector/
├── src/ # Исходный код
│ ├── __init__.py
│ ├── detector.py # Основной класс детектора
│ ├── metrics.py # Метрики сходства
│ ├── preprocessing.py # Предобработка текста
│ ├── database.py # Управление БД документов
│ ├── batch_processor.py # Пакетная обработка
│ ├── report_generator.py # Генерация отчётов
│ ├── cli.py # Командная строка
│ └── config.py # Конфигурация
│
├── tests/ # Тесты
│ ├── __init__.py
│ ├── test_detector.py
│ ├── test_metrics.py
│ ├── test_preprocessing.py
│ ├── test_batch_processor.py
│ └── conftest.py
│
├── data/ # Примеры данных
│ ├── sample_documents/
│ │ ├── original1.txt
│ │ └── original2.txt
│ └── test_submissions/
│ ├── submission1.txt
│ └── submission2.txt
│
├── docs/ # Документация
│ ├── ARCHITECTURE.md # Архитектура проекта
│ ├── API.md # Описание API
│ └── EXAMPLES.md # Расширенные примеры
│
├── .github/workflows/ # CI/CD конфиги
│ ├── tests.yml # Запуск тестов
│ └── coverage.yml # Проверка покрытия
│
├── scripts/ # Вспомогательные скрипты
│ ├── prepare_data.py
│ └── generate_report.py
│
├── .gitignore
├── requirements.txt
├── requirements-dev.txt
├── setup.py
├── pytest.ini
└── README.md
🛠️ Требования
numpy>=1.20.0
scipy>=1.7.0
scikit-learn>=1.0.0
pandas>=1.3.0
nltk>=3.6.0
Требования для разработки
pytest>=7.0.0
pytest-cov>=3.0.0
pytest-xdist>=2.5.0
flake8>=4.0.0
black>=22.0.0
🧪 Тестирование
Запуск всех тестов
Запуск с покрытием кода
Запуск конкретного теста
Параллельный запуск (быстрее)
📊 Метрики качества
Проект использует несколько метрик для определения плагиата:
1. Cosine Similarity (0-1)
Определяет угловое сходство между векторами TF-IDF документов.
Формула: cos(θ) = (A · B) / (||A|| × ||B||)
2. Jaccard Index (0-1)
Мера пересечения уникальных токенов.
Формула: J(A,B) = |A ∩ B| / |A ∪ B|
3. Token Overlap (0-1)
Процент совпадающих слов в документе.
4. N-gram Similarity
Сравнение последовательностей из N слов.
⚙️ Конфигурация
Создайте файл для настройки:
📈 CI/CD Pipeline
Проект использует GitHub Actions / GitVerse CI/CD для:
✅ Автоматического запуска тестов на каждый push
✅ Проверки кода (flake8, black)
✅ Расчёта покрытия кода
✅ Сохранения отчётов в artifacts
Статус сборки
🔄 Workflow
Студент загружает работу
↓
Детектор предобрабатывает текст
↓
Сравнивает с базой документов
↓
Рассчитывает метрики (Cosine, Jaccard, etc)
↓
Генерирует отчёт (HTML/JSON)
↓
Преподаватель получает результаты
🎓 Образовательная ценность
Этот проект демонстрирует:
- Обработка текстов (tokenization, stemming, TF-IDF)
- Машинное обучение (векторизация, метрики сходства)
- DevOps & CI/CD (GitHub Actions, автоматизация)
- Best practices (тестирование, документация, code quality)
- Решение реальных проблем (борьба с плагиатом)
📝 Лицензия
MIT License — свободно используйте в образовательных целях
👤 Автор
Изиланов Е.А.
🤝 Вклад
Pull requests приветствуются! Пожалуйста:
- Fork репозиторий
- Создайте feature branch (
)git checkout -b feature/improvement - Commit изменений (
)git commit -am 'Add new feature' - Push branch (
)git push origin feature/improvement - Откройте Pull Request
📞 Поддержка
Если у вас есть вопросы или проблемы:
- Откройте Issue на GitVerse
- Посмотрите документацию в папке /docs
- Проверьте примеры в /data
Последнее обновление: 2025-12-28
Версия: 1.0.0