Создание детектора спама
Обучите модель на размеченных сообщениях
«Создание детектора спама» — бесплатный урок 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 — локальная установка не требуется.
Все уроки этого курса
- Интуиция метода наивного Байеса
- Создание детектора спама
- Мультиномиальные и бернуллиевские модели
- Чтение предсказаний модели