/Messages-Spam

📮 Write a program that classifies a message as spam or not spam [👨‍🏫 Teacher: Бернгардт Олег Игоревич] {5️⃣ Semester} (Artificial intelligence)

Primary LanguageJupyter Notebook

Зачетная работа по искусственному интеллекту (Вариант #4)

Задача

Написать программу, которая классифицирует сообщение спам или не спам

Требования

  1. Программа для обучение
  2. Программа для обработки
  3. Описание на страницу - как работает, какие результаты

Структура проекта

  1. data - Папка с датасетов сообщений
  2. models - Папка с моделями

    Пока что в папке models лежит одна натренированная модель наивный байесовский классификатор ComplementNB

  3. implementing.ipynb - Блокнот для классификации сообщений
  4. classifier_bag_words.py - Функция предварительной обработки текста (Мешок слов)

Краткое описание блокнотов

traning.ipynb

  1. Импорт необходимых библиотек и загрузка стоп-слов для библиотеки nltk
  2. Разархивация архива с датасетов сообщений
  3. Просмотр и анализ датасета с помощью библиотеки Pandas
  4. Разбиваем датасет на тестовые (20%) и тренировочные (80%)
  5. Настраивает конвейер Pipeline
    1. Преобразуем датасет в матрицу с помощью CountVectorizer с параметром analyzer в которую передан название функции для предварительной обработки текста classifier_bag_words (Мешок слов)
    2. Преобразуйте матрицу подсчета в нормализованное представление TF-IDF с помощью TfidfTransformer
    3. Уставливаем классификатор наивный байесовский классификатор ComplementNB
  6. Обучаем модель
  7. Прогнозирование значений в тестовом наборе данных для проверки модели
  8. Сохранение моделей с именем finalized_model

implementing.ipynb

  1. Импорт необходимых библиотек
  2. Загрузка модели finalized_model
  3. Запуск программы, где человеку предлагается ввести сообщение
  4. Прогнозирование введеным человеком сообщение спам или не спам

Для выхода из режима ввода требуется ввести -1

Дополнительное описание файлов

classifier_bag_words.py

  1. Удаляем ненужные символы, цифры и знаки препинания
  2. Делаем слова строчными
  3. Удаляем стоп-слова из списка
  4. Возвращает обработанное сообщение

Точность нейронной сети

Accuracy:  97%