Определение того, является ли данный текст спамом или нет (ветчина).
Спам-тексты — это нежелательные сообщения, обычно рассылаемые с целью рекламы. Хотя это помогает продукту дойти до потребителей, оно может стать источником нежелательной информации/коммуникации с потребителем.
Хотя массовое обращение к потребителям с целью увеличения публичности их продукта может показаться безобидным, важно помнить, что спам-сообщения во многих случаях включают в себя попытки фишинга, распространение некоммерческой повестки дня или любой другой запрещенный контент/намерение. . Это может подвергнуть потребителя риску.
Есть много способов, которыми спамер может связаться с вами: SMS, звонки, электронная почта, результаты веб-поиска и т. д.
Здесь мы классифицируем текстовые сообщения на две категории — спам или нет, в зависимости от их содержания.
Реализация идеи на cAInvas — здесь!
Набор данных
Алмейда, Т.А., Гомес Идальго, Дж.М., Ямаками, А. Вклад в изучение фильтрации SMS-спама: новая коллекция и результаты. Материалы симпозиума ACM по разработке документов (DOCENG’11) 2011 г., Маунтин-Вью, Калифорния, США, 2011 г. Веб-сайт | UCI
Набор данных представляет собой файл CSV с 5572 сообщениями, относящимися к одной из двух категорий — ветчина и спам.
Предварительная обработка
Удаление повторяющихся строк
Несколько строк в наборе данных повторяются. Давайте отбросим их, чтобы получить набор данных с уникальными строками.
Теперь в наборе данных 5157 строк, из которых 4516 — спам, а 641 — спам. Это несбалансированный набор данных, но давайте все же попробуем на нем потренироваться.
Кодирование значений категории
Целевой столбец содержит значения меток, которые необходимо преобразовать в целочисленные значения, представляющие классы для обучения.
Очистка данных
Текст в сообщениях должен быть предварительно обработан, прежде чем он будет использован в качестве входных данных для модели.
Определение нескольких функций для выполнения предварительной обработки —
- удаление тегов HTML и URL-адресов
- сохранение только алфавитов, т. е. удаление знаков препинания, специальных символов и цифр
- удалить повторяющиеся символы. Когда мы пишем текст, мы склонны расширять символы для акцента или из-за волнения. Например, «эээээээ». Несколько вхождений одной и той же буквы сокращаются до 1. То есть вышеуказанное сокращается до «привет». Но в английском языке есть слова, в которых есть последовательные повторяющиеся символы, такие как шерсть, привет и т. д. Вот почему мы усекаем символы, которые встречаются более двух раз подряд. Экземпляры с 3 последовательными повторяющимися символами редки.
Список стоп-слов также определен для последующего использования.
Стеммер Snowball модуля nltk.stem используется для получения корня слов в сообщении.
Слова в обеих категориях сохраняются отдельно для последующей визуализации.
Здесь мы пропустили фильтрацию стоп-слов, так как наряду с контекстом стиль текста также является важным фактором.
Очищенные предложения добавляются в виде столбца в набор данных.
Разделение поезд-валидация-тест
Использование соотношения 80–10–10 для разделения фрейма данных на наборы для проверки и проверки поезда. Для этого используется функция train_test_split модуля sklearn.model_selection. Затем они делятся на X и y (вход и выход) для дальнейшей обработки.
В наборе поезда 4125 образцов, в наборе проверки и тесте по 516 образцов.
Векторизация TF-IDF
Существует два способа реализации векторизации TF-IDF:
- Векторизатор TF-IDF
- CountVectorization с последующим преобразователем TF-IDF
Функция CountVectorization модуля keras.preprocessing.text используется для преобразования текста в последовательность целых чисел, представляющих количество токенов.
Очищенные сообщения подаются в качестве входных данных, и возвращается разреженная матрица значений. Преобразователь TF_IDF учитывает частоту слов в наборе данных. Это используется для уменьшения влияния часто встречающихся слов в корпусе.
Определение входных и выходных данных для модели (X — входные данные, а y — выходные данные) —
Визуализация
Глядя на слова, которые являются важными/частыми в обеих категориях.
Функция WordCloud используется для визуализации слов. Частота слов в корпусе прямо пропорциональна их размеру на рисунке.
Модель
Используемая модель является простой с 3 плотными слоями, 2 из которых имеют функции активации ReLU, а последний имеет функцию активации Sigmoid, которая выводит значение в диапазоне [0, 1].
Поскольку это проблема бинарной классификации, модель компилируется с использованием бинарной функции кросс-энтропийных потерь, используется оптимизатор Адама, а точность модели отслеживается на протяжении эпох.
Функция обратного вызова EarlyStopping модуля keras.callbacks отслеживает потерю проверки и останавливает обучение, если она не уменьшается в течение 5 эпох непрерывно. Параметр restore_best_weights гарантирует, что веса модели с наименьшими потерями проверки будут восстановлены в переменной модели.
Модель была обучена со скоростью обучения 0,0001 и достигла точности ~ 98,8% на тестовом наборе.
Поскольку это несбалансированный набор данных, оценка f1 рассчитывается с использованием функции модуля sklearn.metrics.
Составление матрицы путаницы для лучшего понимания результатов —
Значительный процент сообщений радиолюбителей классифицируется как спам. Большой набор данных с большим количеством спам-сообщений поможет избежать ложных срабатываний.
Метрики
Прогноз
Давайте выполним прогнозы на случайных тестовых выборках —
Образец текста берется из исходного CSV-файла, очищается, векторизуется, а затем вводится в модель, поскольку внешний образец должен пройти тот же процесс.
глубокий C
Библиотека, компилятор и инфраструктура вывода deepC предназначены для включения и выполнения нейронных сетей глубокого обучения с упором на функции устройств малого форм-фактора, таких как микроконтроллеры, eFPGA, процессоры и другие встроенные устройства, такие как raspberry-pi, odroid, Arduino, SparkFun Edge, RISC-V, мобильные телефоны, x86 и портативные компьютеры.
Компиляция модели с помощью deepC —
Перейдите на платформу cAINvas (ссылка на блокнот, указанную ранее), чтобы запустить и создать свой собственный файл .exe!
Источники: Аиша Д