NLP Academy · Урок

Создание детектора спама

Обучите модель на размеченных сообщениях

Урок 2 из 413 шагов

«Создание детектора спама» — бесплатный урок NLP Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения NLP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс NLP Academy содержит 4 уроков всего.

Ваша первая настоящая модель

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

Начните с размеченных данных

Любой метод обучения с учителем нуждается в примерах с известными ответами. Здесь каждому сообщению соответствует метка spam или ham — дружелюбное название для сообщения не-спама.

messages = ["win cash now", "lunch at noon?", "free prize click"]
labels = ["spam", "ham", "spam"]
print(len(messages), len(labels))

Превратите текст в числа

Модель не умеет читать необработанные слова, поэтому сначала подсчитайте их. CountVectorizer преобразует каждое сообщение в строку с подсчётами слов.

from sklearn.feature_extraction.text import CountVectorizer
vec = CountVectorizer()
X = vec.fit_transform(messages)

Знакомьтесь: MultinomialNB

Для подсчёта слов подходит MultinomialNB — основанный на подсчётах вариант наивного байесовского классификатора, встроенный в scikit-learn.

from sklearn.naive_bayes import MultinomialNB
model = MultinomialNB()

Обучите модель

Обучение занимает одну строку: передайте модели признаки и метки. Вызов fit подсчитывает слова в каждом классе и сохраняет вероятности.

model.fit(X, labels)
print("trained on", X.shape[0], "messages")

Предскажите результат для нового письма

Чтобы оценить новое сообщение, векторизуйте его тем же способом и вызовите predict. Модель вернёт свою лучшую догадку о том, является ли сообщение спамом или нет.

new = vec.transform(["free cash prize"])
print(model.predict(new))

Повторно используйте векторизатор

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

Проверьте уверенность модели

Помимо метки, модель может сообщить, насколько уверена в своём решении. Метод predict_proba выдаёт вероятность для каждого возможного класса.

print(model.predict_proba(new))

Оставьте тестовый набор

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

Оцените фильтр

Получите предсказания для отложенных сообщений и сравните их с правильными ответами. Эта точность покажет, действительно ли Ваш фильтр спама работает. 📬

Улучшайте итеративно

Больше качественных данных и улучшенная предварительная обработка быстро повышают результаты. Считайте этот фильтр базовым ориентиром, который можно постепенно улучшать, а не готовым продуктом.

Быстрая проверка

Как следует подготовить новое сообщение перед тем, как получить для него предсказание?

Итоги

Вы векторизовали сообщения, обучили MultinomialNB и предсказали наличие спама в новом тексте. Повторное использование обученного векторизатора сохраняет согласованность признаков. ✅

Можно начать бесплатно

Изучай Python с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
30
Уроки
120

Часто задаваемые вопросы

Урок «Создание детектора спама» бесплатный?

Да — полный текст урока «Создание детектора спама» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс NLP Academy, подпишись на CoddyKit PRO. Курс NLP Academy содержит 4 уроков всего.

Чему я научусь в уроке «Создание детектора спама»?

Обучите модель на размеченных сообщениях Ты практикуешь NLP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать NLP Academy?

Предыдущий опыт не требуется. NLP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Создание детектора спама»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке NLP Academy?

Да. Каждый урок NLP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Интуиция метода наивного Байеса
  2. Создание детектора спама
  3. Мультиномиальные и бернуллиевские модели
  4. Чтение предсказаний модели
← Назад к NLP Academy