Үлкен тілдік үлгісіз ЖИ: өз үлгімізді жасаймыз 24-сабақ (барлығы 30)
24-сабақ. Жеткілікті негіз ережесі
Кезекші хаттан «қашан» мен «қайда» деген екі сөзді көреді. «Қашан» екі рет кездессе де, ол хат иесінің орнына бір сұрақты таңдай алмайды. Алдыңғы сабақтағы санақ дәл осындай қате жіберді.
Мәтін ИИ көмегімен аударылды.
Бұл не үшін керек?
Кезекші хаттан «қашан» мен «қайда» деген екі сөзді көреді. «Қашан» екі рет кездессе де, ол хат иесінің орнына бір сұрақты таңдай алмайды. Алдыңғы сабақтағы санақ дәл осындай қате жіберді.
Бағдарламаға дейін
Үйренген санақтарды қалдырып, түрді таңдаудан бұрын сұрақты тексереміз. time_cue уақытты білдіретін анық сөз барын, place_cue орын сөзінің барын көрсетеді. Мұнда тек бұрын қаралған қашан, уақыты, қайда, орны түрлеріне рұқсат береміз. or — екі шарттың кемінде бірі, and — екеуі де, not — «иә» мәнін «жоққа» ауыстырады. Ереже: өз түрінің анық нышаны бар, басқа түрдің нышаны жоқ және санағы үлкен болса ғана таңдаймыз. Екі түр қатар келсе немесе анық нышан болмаса, бас тартамыз.
examples.json файлын бағдарламамен бір қалтаға көшіріңіз. 13 карточканы қайта басудың қажеті жоқ: пішімі 22-сабақта түсіндірілген.
Жоба түбірінен қадам қалтасына өтіп, бағдарламаны іске қосыңыз:
cd course/kazakh-ai/step-24
python3 gate.py
Windows жүйесінде соңғы пәрменнің орнына py gate.py деп жазыңыз.
import json
with open("examples.json", encoding="utf-8") as file:
rows = json.load(file)
weights = {}
for row in rows:
if row["split"] == "train":
words = row["text"].lower().replace("?", "").replace(",", "").split()
for word in words:
for feature in [word, word[:4]]:
if feature not in weights:
weights[feature] = {"уақыт": 0, "орын": 0}
weights[feature][row["label"]] += 1
for row in rows:
if row["split"] == "tune":
scores = {"уақыт": 0, "орын": 0}
words = row["text"].lower().replace("?", "").replace(",", "").split()
for word in words:
for feature in [word, word[:4]]:
if feature in weights:
scores["уақыт"] += weights[feature]["уақыт"]
scores["орын"] += weights[feature]["орын"]
time_cue = "қашан" in words or "уақыты" in words
place_cue = "қайда" in words or "орны" in words
if time_cue and not place_cue and scores["уақыт"] > scores["орын"]:
prediction = "уақыт"
elif place_cue and not time_cue and scores["орын"] > scores["уақыт"]:
prediction = "орын"
else:
prediction = "білмеймін"
print(row["text"], "→", prediction)
Код қалай жұмыс істейді?
Баптау бөлігінің соңғы сұрағына енді білмеймін шығады, уақыт санағы үлкен болса да: place_cue де дұрыс. Шахмат нешеде? сұрағы да жауапсыз қалады — ол түр әлі мысалмен де, ережемен де қамтылған жоқ. Бұл шектеуді кейін оқу жиынын кеңейтіп, жаңа бақылаумен тексеруге болады. Сұрақ түрін таңдауға жеткілікті негіз үйірме кестесіне жауап беруге жеткілікті негіз емес: ол үшін 16–20-сабақтағы нақты карточка, дереккөз және мерзім қажет.
Тірек сызба
Үйренген санақ + бір түрдің анық белгісі + басқа түр нышанының жоқтығы → түр; әйтпесе → бас тарту. Нақты дерек бөлек тексеріледі.
Еске түсіріп, тексеріңіз
Кодты жауып, уақыт түрін таңдау үшін қажет үш шартты айтыңыз. Бес баптау сұрағын жүргізіңіз. Үлгі нәтиже: уақыт, орын, содан соң үш рет білмеймін. Көмек: соңғы сұрақта time_cue де, place_cue де дұрыс; not place_cue таңдауды тоқтатады. Жиі қате: уақыт санағы жоғары деп, екінші нышанды тексермеу. Сонда 23-сабақтағы қате қайталанады.
Пікірлер (0)
Пікір қалдыру үшін кіріңіз →
Әзірге пікір жоқ. Бірінші болыңыз.