
Информатика: создаём своего цифрового помощника Урок 65 из 72
Обучаем простой классификатор
Вы учите младшего товарища раскладывать карточки: на «читать» он кладёт их к книгам, на «геометрия» — к математике.
Где мы на карте
Урок 65 из 72. Блок «ИИ и выпуск проекта» (63–72). Помощник сохраняет прежние правила напоминания и локальную базу; новая функция только предлагает категорию задачи и допускает отказ.
Ситуация и вопрос
Вы учите младшего товарища раскладывать карточки: на «читать» он кладёт их к книгам, на «геометрия» — к математике. Наш код делает очень упрощённую версию: считает слова только в учебных карточках.
Новые слова без пропусков
Обучение здесь — подсчёт частот слов по меткам train, а не изменение мозга или понимание темы. Токенизация выделяет слова из заголовка. Вес слова — сколько обучающих примеров нужной категории его содержат. Оценка категории — сумма этих весов для нового заголовка. Ничья и отсутствие знакомых слов дают review.
Опорный сигнал
Прочитайте три клетки схемы слева направо, затем закройте третью. Назовите вход и действие в каждой клетке; предскажите, чем закончится путь и какой наблюдаемый факт подтвердит ответ. Сравните рисунок с файлом проекта или контрольным примером. Если число на схеме не получается из данных, исправьте схему, а не данные под красивую картинку.
Разбираем шаг за шагом
Запустите python3 classifier.py "Кітап оқу" в step-07: ожидается suggestion: reading. Для Геометрия есебі — math. Откройте classifier.py: train читает только строки split=train, а suggest суммирует счётчики. Для незнакомого «Задача без примеров» оба счёта равны нулю и ответ review. Измените одну вымышленную обучающую строку и предскажите, как это сдвинет счёт.
Предскажите и проверьте
Запишите ожидаемый вывод до запуска кода. Выполните его в указанной папке step-06 или step-07, сравните результат символ за символом и объясните каждую строку. Затем измените один безопасный вымышленный вход и повторите цикл «предсказать — запустить — изменить — объяснить — проверить». Наблюдение на маленьком наборе не превращайте в обещание для реальных людей.
from classifier import read_examples, train, suggest
model = train(read_examples("labelled_tasks.csv"))
print(suggest("Кітап оқу", model), suggest("Геометрия есебі", model), suggest("unknown", model))
Ожидаемый вывод
reading math review
Поймайте ошибку
Это игрушечный классификатор, не большая языковая модель. Он не понимает склонения, отрицания и контекст. Добавление удобной тестовой строки в обучение до оценки нарушит честность проверки.
Изменение проекта
В проекте 2.1 сохраняются база, отчёт, напоминания и резервирование. Файл labelled_tasks.csv содержит только вымышленные примеры. classifier.py выдаёт совет math, reading или review, но не записывает решение в базу. Каждый вывод модели сравнивается с отложенными примерами и пересматривается человеком.
Задание и доказательство
Вычислите вручную счёт для заголовков с одним знакомым словом. Покажите случай ничьей. Затем запустите тесты и объясните расхождение, если оно возникло.
Перенос в новую ситуацию
Сортировщик писем знает слово «счёт», но встречает «счётчик». Почему правила выделения слов могут изменить ответ?
Возврат через 1, 7 и 30 дней
Через 1 день нарисуйте схему по памяти и найдите в ней одну границу применения. Через 7 дней объясните её товарищу, не читая урок, и решите 7 из 10 вопросов блока; ошибочные ответы разберите на конкретных входах. Через 30 дней откройте свежую копию проекта, воспроизведите проверку и перенесите принцип в новый пример. Сохраните свой протокол с входом, ожидаемым и фактическим результатом.
Первоисточник для проверки
Следующий урок
Если вы нашли ошибку или опечатку в тексте статьи, то сообщите нам об этом
Комментарии (0)
Войдите, чтобы оставить комментарий →
Пока нет комментариев. Будьте первым.