Shanraq.org Shanraq.org
IT

AI без LLM: создаем свою модель ИИ Урок 21 из 30

Урок 21. Размечаем вопросы вручную

Учитель сначала пишет ответы к карточкам, а уже потом проверяет ученика. Для модели такая карточка состоит из вопроса и правильной учебной метки. Без ответов к примерам ей нечему учиться и нам нечем проверять ошибки.

Текст переведён с помощью ИИ.

Зачем это нужно

Учитель сначала пишет ответы к карточкам, а уже потом проверяет ученика. Для модели такая карточка состоит из вопроса и правильной учебной метки. Без ответов к примерам ей нечему учиться и нам нечем проверять ошибки.

До программы

В examples.json записано 13 вымышленных вопросов. Каждая карточка имеет text — вопрос и label — метку: уақыт (спрашивают о времени), орын (о месте), белгісіз (другая тема или сразу два запроса). Метка — решение человека для упражнения, не ответ о расписании. Перед разметкой спросите: «Какие сведения хочет человек?» Если ни один из двух видов не подходит, не выдумывайте метку. Сохраните JSON как UTF-8 рядом с labels.py.

[
  {
    "text": "Шахмат қашан?",
    "label": "уақыт"
  },
  {
    "text": "Сурет қашан?",
    "label": "уақыт"
  },
  {
    "text": "Шахмат уақыты?",
    "label": "уақыт"
  },
  {
    "text": "Сурет уақыты?",
    "label": "уақыт"
  },
  {
    "text": "Шахмат қайда?",
    "label": "орын"
  },
  {
    "text": "Сурет қайда?",
    "label": "орын"
  },
  {
    "text": "Шахмат орны?",
    "label": "орын"
  },
  {
    "text": "Сурет орны?",
    "label": "орын"
  },
  {
    "text": "Шахмат қашан өтеді?",
    "label": "уақыт"
  },
  {
    "text": "Сурет қайда өтеді?",
    "label": "орын"
  },
  {
    "text": "Шахмат нешеде?",
    "label": "уақыт"
  },
  {
    "text": "Шахмат неге?",
    "label": "белгісіз"
  },
  {
    "text": "Шахмат қашан және қайда өтеді? Уақыты қандай?",
    "label": "белгісіз"
  }
]

Из корня проекта перейдите в папку шага и запустите программу:

cd course/kazakh-ai/step-21
python3 labels.py

В Windows вместо последней команды выполните py labels.py.

import json

with open("examples.json", encoding="utf-8") as file:
    rows = json.load(file)
counts = {"уақыт": 0, "орын": 0, "белгісіз": 0}
for row in rows:
    label = row["label"]
    if label in counts:
        counts[label] += 1
    else:
        print("Қате белгі:", label)
print("Уақыт:", counts["уақыт"])
print("Орын:", counts["орын"])
print("Белгісіз:", counts["белгісіз"])

Файлы шага.

Как работает код

counts хранит три счётчика. for row in rows проходит карточки, row["label"] берёт человеческую метку. label in counts проверяет, есть ли такая метка в разрешённом наборе; += 1 прибавляет единицу к прежнему числу. Непонятная метка печатается как ошибка и не попадает в счётчики. Мы ещё не обучаем модель — проверяем качество исходной разметки.

Опорная карта

Вопрос → человеческая метка → список JSON → проверка допустимости → счётчики 6 / 5 / 2.

Вспомните и проверьте

Закройте код и назовите три возможные метки. Добавьте вопрос Сурет нешеде? с меткой уақыт. Подсказка: новую карточку отделяет запятая. Эталон: Уақыт: 7, Орын: 5, Белгісіз: 2. Затем попробуйте метку уақ и найдите сообщение Қате белгі: уақ. Частая ошибка: считать белгісіз отсутствием ответа в каталоге; здесь это метка вопроса, каталог фактов проверяется отдельно.

Если вы нашли ошибку или опечатку в тексте статьи, то сообщите нам об этом

Комментарии (0)

Пока нет комментариев. Будьте первым.