Приложения для классификации спам сообщений

Проект, темой которого является реализация приложения для классификации спам сообщений. На вход приложение принимает email сообщение полученное через API стороннего сервиса. На выходе получаем список

 · 5 min read

Описание проекта

Проект, темой которого является реализация приложения для классификации спам сообщений. На вход приложение принимает email сообщение полученное через API стороннего сервиса. На выходе получаем список сообщений, помеченных как спам или не спам.

Бизнес-задача

Разработать и внедрить эффективный детектор спам-сообщений в мессенджере с целью обеспечения безопасности и комфорта пользователей. Задача включает в себя улучшение точности определения спама, минимизацию ложных срабатываний. Результатом должно быть значительное сокращение воздействия нежелательной переписки на пользовательский опыт, повышение доверия к платформе и снижение риска для пользовательской безопасности.

Постановка ML Задачи

Данная задача является задачей обучения с учителем, где есть размеченные данные с информацией о том, является ли сообщение спамом или нет.

Для решения данной задачи требуется:

  • собрать набор данных, содержащий примеры спама и нормальных сообщений,
  • разделить данные на обучающий, валидационный и тестовый наборы,
  • очистить данные от шума, удалить лишние символы или форматирование,
  • выбрать модель для классификации текста,
  • обучить модель на обучающем наборе данных, используя целевую функцию и оптимизатор,
  • оценить производительность модели на валидационном наборе данных, используя метрики, такие как точность, полнота, точность и F1-мера.

Исследование ML-задачи

Существует несколько подходов к реализации детектора спам-сообщений, и выбор зависит от характеристик данных, задачи и доступных ресурсов. Вот несколько основных подходов:

  1. Правила и эвристики:
    1. Описание: Основан на наборе правил или эвристик, определяющих характеристики спама (например, ключевые слова, частые символы, ссылки).
    2. Преимущества: Прост в реализации, требует минимального обучения.
    3. Недостатки: Может быть неэффективным при появлении новых видов спама, требует постоянного обновления правил.
  2. Машинное обучение:
    1. Описание: Использование алгоритмов машинного обучения для автоматического обучения на основе размеченных данных.
    2. Преимущества: Адаптивен к новым видам спама, способен выявлять сложные паттерны.
    3. Недостатки: Требует больших объемов размеченных данных и времени для обучения.
  3. Байесовский классификатор:
    1. Описание: Использует теорему Байеса для определения вероятности, с которой сообщение является спамом или не спамом.
    2. Преимущества: Эффективен и относительно прост в реализации.
    3. Недостатки: Может требовать обновления вероятностей при появлении новых данных.
  4. Фильтрация на основе правил:
    1. Описание: Комбинация правил и эвристик для автоматического отсева сообщений согласно определенным критериям.
    2. Преимущества: Может быть быстрым и эффективным.
    3. Недостатки: Требует тщательной настройки, может быть менее гибким.
  5. Глубокое обучение:
    1. Описание: Использование глубоких нейронных сетей для обучения на данных и выявления сложных зависимостей.
    2. Преимущества: Способен обрабатывать сложные структуры данных.
    3. Недостатки: Требует больших объемов данных, вычислительных ресурсов и времени для обучения.
  6. Комбинированный подход:
    1. Описание: Использование комбинации нескольких методов для улучшения общей производительности.
    2. Преимущества: Может объединить преимущества различных подходов.
    3. Недостатки: Может быть сложным в настройке и управлении.

Исследование датасета

Поиск датасета производился на платформе Hugging Face, с фильтрацией по спам-сообщениям. В результате были найдены 4 датасета с разным объемом и структурой данных. Для каждого датасета был проведен EDA анализ для NLP.

В ходе анализа были получены следующие результаты:

ХарактеристикаДатасет
33716 строки5572 строки10900 строки20348 строк
Ненулевые строки3310755721090020348
До удаления стоп-слов
Средняя длина сообщения1489\.8380\.12372\.91326\.84
Минимальная длина сообщения1211
Максимальная длина сообщения228253910415442584
Количество неуникальных элементов352540323814
Количество уникальных элементов2958251691066220334
Частота униграм

the 288201

to 210184

and 155433

of 146821

in 105450

to 2242

you 2240

the 1328

and 979

in 898

the 20275

to 19262

and 17583

you 14606

of 12511

the 33688

to 31171

and 18672

you 16617

1635465 15636

Частота биграм

of the 30859

in the 24381

hou ect 16212

ect ect 15757

to the 13252

lt gt 276

are you 180

you are 129

you have 118

do you 109

looking for 1984

we ve 1663

want to 1555

of the 1543

ve got 1540

1635465 1635465 7389

hou ect 3142

of the 2916

ect ect 2772

in the 2534

После удаления стоп-слов
Средняя длина сообщения1259\.8963\.55294\.17272\.25
Минимальная длина сообщения0210
Максимальная длина сообщения191068579410212584
Количество неуникальных элементов352540423829
Количество уникальных элементов2958251681066220319
Частота униграм

enron 59775

ect 35338

com 23843

company 22787

please 20102

call 591

get 391

ur 385

gt 318

lt 316

data 5840

get 4340

dataset 3257

https 2873

ve 2818

1635465 15636

ect 6632

enron 6050

vince 5568

url 4937

Частота биграм

hou ect 16212

ect ect 15764

enron enron 6239

http www 5231

enron com 4417

lt gt 276

please call 55

call later 50

co uk 49

ll call 45

ve got 1541

https www 1159

social media 1075

get rich 879

rich quick 836

1635465 1635465 7778

hou ect 3142

ect ect 2775

vince kaminski 2522

cc subject 1271

График выбросов

Датасет на 33716 строки

Рисунок 1.До удаления стоп-слов

Рисунок 2.После удаления стоп-слов

Датасет на 5572 строки

Рисунок 3.До удаления стоп-слов

Рисунок 4.После удаления стоп-слов

Датасет на 10900 строк

Рисунок 5.До удаления стоп-слов

![]/files/(Aspose.Words.102b1569-64c3-4494-9275-ce75df0f2f3c.006.jpeg)

Рисунок 6.После удаления стоп-слов

Датасет на 20348 строк

Рисунок 7.До удаления стоп-слов

Рисунок 8.После удаления стоп-слов

Исходя из данных, полученных в результате анализа, можно предположить, что датасет на 33716 элементов имеет больше информации для обучения модели.

ML-модели: выбор и сравнение**

Проведено сравнение нескольких моделей для детекции спам-сообщений с использованием данных, сфокусированных на текстовых признаках. Рассмотрим ключевые результаты их производительности:

Рекуррентные Нейронные Сети (RNN)*

Преимущества: - Хорошо учитывает последовательность слов в тексте. - Подходит для обработки долгосрочных зависимостей.

Недостатки: - Требует большого объема данных для эффективного обучения. - Могут возникнуть проблемы с обработкой длинных текстов.

Сверточные Нейронные Сети (CNN)

Преимущества:

  • Эффективно обрабатывает локальные паттерны в тексте.
  • Обучается быстро на небольших наборах данных.

Недостатки: - Может упускать некоторые последовательные зависимости в тексте.

BERT (Bidirectional Encoder Representations from Transformers)

Преимущества:

  • Полностью учитывает контекст и взаимодействие слов в тексте.
  • Предоставляет выдающуюся производительность на разнообразных данных.

Недостатки:

  • Требует больших вычислительных ресурсов.
  • Возможна сложность в fine-tuning на небольших датасетах.

Сравнительный Анализ:

Точность:

BERT показывает наилучшие результаты в точности классификации спама и нормальных сообщений.

Обобщение:

CNN хорошо обобщается на новые данные, несмотря на меньшую точность, что делает ее предпочтительной в сценариях с ограниченными ресурсами.

Скорость обучения:

CNN является наиболее эффективной в обучении на небольших объемах данных, что делает ее более масштабируемой в реальных условиях.

В итоге выбор пал на модель BERT, которая используется для векторизации текста, используемая для обучения модели случайного леса.

Оценка результата

Выбранная модель была обучена на приведенных выше датасетах, каждый из которых был разделен на обучающие и тестовые данные, в соотношении 80/20.

Далее приведены результаты обучения моделей:

Рисунок 9.Датасет на 30к.

Рисунок 10.Датасет на 5к.

Рисунок 11.Датасет на 10к.

Рисунок 12.Датасет на 20к.

Как можно видеть из рисунков, представленных выше, исходя из оценки f1, лучше всего показывает себя модель обученная на датасете из 30к. элементов. Хуже всего себя показала модель обученная на датасете из 20к. строк, т.к. оценка f1 для нее равна 100%, что демонстрирует плохое качество данных.

**

Архитектура решения

Архитектура системы представлена в виде 3-х уровней диаграммы С4

Рисунок 13.Контекстная диаграмма

Рисунок 14.Диаграмма контейнеров.

Рисунок 15.Диаграмма компонентов.

Демонстрация решения

В ходе работы было реализовано приложение и интерфейс взаимодействия с ним. Пользователь при входе на сайт может нажать на кнопку “Click_me”, после чего отобразятся все входящие email сообщения с пометкой “spam” или “ham”.

Рисунок 16. Интерфейс приложения с результатами запроса.

Рисунок 17.Имитация получения email сообщения.

Код приложения расположен в следующем репозитории: - https://github.com/Aloha-dancer/MAIMLPROD

Заключение

В ходе работы было разработано веб-приложение «спам-детектор» для email сообщений, также было проведено исследование задачи, датасета и моделей, подходящих для ее решения, далее была выбрана модель и проведен анализ метрик этой модели , обученной на нескольких датасетах.

Авторы проекта

Студенты группы М8О-206М-22:

  • Чирков Артем Андреевич
  • Константинов Иван Алексеевич
  • Попов Валерий Владиславович

No comments yet.

Добавить комментарий
Ctrl+Enter, чтобы добавить комментарий