educational-plagiarism-detector

0
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
README.md

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 слов.


⚙️ Конфигурация

Создайте файл

config.py
для настройки:


📈 CI/CD Pipeline

Проект использует GitHub Actions / GitVerse CI/CD для:

✅ Автоматического запуска тестов на каждый push
✅ Проверки кода (flake8, black)
✅ Расчёта покрытия кода
✅ Сохранения отчётов в artifacts

Статус сборки

Tests Code Quality Coverage


🔄 Workflow

Студент загружает работу ↓ Детектор предобрабатывает текст ↓ Сравнивает с базой документов ↓ Рассчитывает метрики (Cosine, Jaccard, etc) ↓ Генерирует отчёт (HTML/JSON) ↓ Преподаватель получает результаты

🎓 Образовательная ценность

Этот проект демонстрирует:

  • Обработка текстов (tokenization, stemming, TF-IDF)
  • Машинное обучение (векторизация, метрики сходства)
  • DevOps & CI/CD (GitHub Actions, автоматизация)
  • Best practices (тестирование, документация, code quality)
  • Решение реальных проблем (борьба с плагиатом)

📝 Лицензия

MIT License — свободно используйте в образовательных целях

👤 Автор

Изиланов Е.А.

🤝 Вклад

Pull requests приветствуются! Пожалуйста:

  1. Fork репозиторий
  2. Создайте feature branch (
    git checkout -b feature/improvement
    )
  3. Commit изменений (
    git commit -am 'Add new feature'
    )
  4. Push branch (
    git push origin feature/improvement
    )
  5. Откройте Pull Request

📞 Поддержка

Если у вас есть вопросы или проблемы:

  • Откройте Issue на GitVerse
  • Посмотрите документацию в папке
    /docs
  • Проверьте примеры в
    /data

Последнее обновление: 2025-12-28
Версия: 1.0.0