Shanraq.org Shanraq.org
IT

Үлкен тілдік үлгісіз ЖИ: өз үлгімізді жасаймыз 22-сабақ (барлығы 30)

22-сабақ. Оқыту, баптау және бақылауды бөлеміз

Оқушы бақылау жұмысының жауаптарын алдын ала көрсе, жоғары баға білімін дәлелдемейді. Сондықтан сұрақтарды үш конвертке бөлеміз: біріншісі үйренуге, екіншісі ережені түзетуге, үшіншісі соңғы тексеруге керек.

Мәтін ИИ көмегімен аударылды.

Бұл не үшін керек?

Оқушы бақылау жұмысының жауаптарын алдын ала көрсе, жоғары баға білімін дәлелдемейді. Сондықтан сұрақтарды үш конвертке бөлеміз: біріншісі үйренуге, екіншісі ережені түзетуге, үшіншісі соңғы тексеруге керек.

Бағдарламаға дейін

Жаңа split өрісі конвертті көрсетеді: train — оқыту, tune — баптау, test — бақылау. Бұл файлда 8 оқыту және 5 баптау сұрағы бар. Белгілері көрсетілген алты бақылау сұрағы 25-қадамның бөлек файлында сақталады: соңғы тексеруге дейін оны ашпаңыз. Сұрақтарды кездейсоқ емес, қолмен бөлдік; нәтижені қайта алуға болады. Бір мәтін екі конвертте қайталанбауы керек. seen оқылған сұрақтарды сақтайды, valid қате табылған-табылмағанын көрсетеді. True — «дұрыс», False — «дұрыс емес».

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

Жоба түбірінен қадам қалтасына өтіп, бағдарламаны іске қосыңыз:

cd course/kazakh-ai/step-22
python3 splits.py

Windows жүйесінде соңғы пәрменнің орнына py splits.py деп жазыңыз.

import json

with open("examples.json", encoding="utf-8") as file:
    rows = json.load(file)
counts = {"train": 0, "tune": 0, "test": 0}
seen = []
valid = True
for row in rows:
    if row["text"] in seen:
        print("Қайталанған сұрақ:", row["text"])
        valid = False
    seen.append(row["text"])
    split = row["split"]
    if split in counts:
        counts[split] += 1
    else:
        print("Қате бөлік:", split)
        valid = False
print("Оқыту:", counts["train"])
print("Баптау:", counts["tune"])
print("Бақылау:", counts["test"])
print("Жинақ жарамды:", valid)

Қадам файлдары.

Код қалай жұмыс істейді?

Бағдарлама әуелі осы мәтін бұрын кездесті ме деп қарайды. seen.append оны тексеруден кейін тізімге қосады. Кейін тиісті конверттің санағын арттырады. Бейтаныс бөлік атауы не қайталау болса, valid = False болады. Мәтіндер дәлме-дәл салыстырылады: бас әріптің не тыныс белгісінің өзгеруі қайталауды жасыруы мүмкін; бұл — жаттығудың шегі. 25-сабаққа дейін бақылау белгілерін ережені таңдау үшін қолданбаймыз.

Тірек сызба

13 ашық карточка → train 8 / tune 5 / test 0; тағы 6 бақылау сұрағы әзірге жабық → қайталануды тексеру → кейінгі әділ бақылау.

Еске түсіріп, тексеріңіз

Кодты жауып, үш конверттің қызметін айтыңыз. Бір сұрақ жолын файл соңына көшіріңіз. Көмек: seen тізімінде ол мәтін бар. Үлгі нәтиже: Қайталанған сұрақ: және Жинақ жарамды: False; санақтардың қосындысы 14 болады. Содан кейін файлды бастапқы қалпына келтіріңіз. Жиі қате: бақылау жауаптарын көрген соң ережені өзгертіп, бақылауды тәуелсіз деп есептеу.

Мәтінде қате не теру қатесі кездессе, бізге айтыңыз

Пікірлер (0)

Әзірге пікір жоқ. Бірінші болыңыз.