Shanraq.org Shanraq.org
Модельге нені сеніп тапсыруға болмайды: факт, қорытынды, себеп
IT

Python: деректен өз есебіңізге дейін 52-сабақ (барлығы 56)

Модельге нені сеніп тапсыруға болмайды: факт, қорытынды, себеп

Python курсының елу бірінші сабағы. Бақылауды, есептелген қорытындыны және себеп туралы түсіндірмені бөлеміз. Код санды тексеріп, есепті қайталай алады, ал сенімді естілетін себеп дербес дәлел мен адам тексеруінсіз тек болжам болып қалады.

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

50-сабақта модель санды ауыстыра алмады: бағдарлама оны source_id арқылы салыстырды. Бірақ дұрыс санға қате әңгіме қосу оңай:

Инфляция 11,4 % болды, себебі ақша массасы өсті.

Бірінші бөлік кестеде болуы мүмкін. «Себебі» сөзі бір жол дәлелдемейтін себептік байланысты қосады. Модель нанымды түсіндірме құра алады, бірақ нанымдылық дәлел емес.

Үш түрлі тұжырымды ажыратамыз:

  • бақылау — мән дереккөзде тікелей бар;
  • есептелген қорытынды — айырма сияқты қайталанатын код нәтижесі;
  • себеп — өзгерістің неліктен болғанын түсіндіреді және бөлек дәлелді қажет етеді.

Бірден толығымен

trust.py файлы өткізу ережесін қолданады. Модель сөйлемнің түрін ұсынуы мүмкін, соңғы шешімді код қабылдайды.

"""51-сабақ: себеп туралы әңгіме бақылау ретінде өтпейді."""

EVIDENCE = {"inflation-kz-2025", "inflation-kz-2024"}


def decide(candidate):
    """Әдемі мәтіннің растығын болжаудың орнына оны бағыттау."""
    missing = set(candidate["evidence_ids"]) - EVIDENCE
    if missing:
        return "reject", "белгісіз дереккөз"
    if candidate["claim_type"] == "cause":
        return "review", "себепке дербес дәлел керек"
    if candidate["claim_type"] == "calculation":
        return "review", "қайталанатын формула керек"
    if candidate["claim_type"] == "observation":
        return "accept", "мәнді дереккөзбен салыстыруға болады"
    return "reject", "белгісіз тұжырым түрі"


candidates = [
    {
        "text": "Қазақстан инфляциясының жарияланған мәні бар.",
        "claim_type": "observation",
        "evidence_ids": ["inflation-kz-2025"],
    },
    {
        "text": "Инфляция ақша массасынан өсті.",
        "claim_type": "cause",
        "evidence_ids": ["inflation-kz-2025"],
    },
]

for candidate in candidates:
    decision, reason = decide(candidate)
    print(candidate["claim_type"], "->", decision, "—", reason)

Шығыс:

observation -> accept — мәнді дереккөзбен салыстыруға болады
cause -> review — себепке дербес дәлел керек

Тұжырым түрі де дерек

claim_type өрісін схемада шектеңіз:

"claim_type": {
    "type": "string",
    "enum": ["observation", "calculation", "cause"],
}

Модель себепті бақылау деп қате белгілеуі мүмкін. Сондықтан оның белгісі бағыттауға көмектеседі, бірақ дәлел болмайды. Автоматты жариялауда тексерілген өрістерден код құраған тар бақылау үлгісін пайдаланыңыз. Еркін мәтінді адамға жіберіңіз.

Корреляция «неге?» дегенге жауап бермейді

Екі қатар тікелей ықпалдан, кері ықпалдан, үшінші фактордан, ортақ трендтен немесе кездейсоқтықтан бірге қозғалуы мүмкін. Жоғары корреляция да осы нұсқаның бірін таңдамайды.

Эксперимент, табиғи эксперимент, дұрыс себептік зерттеу немесе сенімді пәндік дереккөз себепті қолдай алады. Бір диаграмма мен бір тілдік модель қолдай алмайды.

себебі, туғызды, әкелді, арқасында сөздері редакторға ескерту бола алады, бірақ сөздер тізімі қорғаныс емес. Қауіпсіз шекара — еркін себептік мәтінді автоматты жарияламау.

Белгісіздік — жеке күй

Жүйеде кемінде үш шешім болсын:

  • accept — тар бақылауды код тексерілген деректен құрады;
  • review — тұжырым пайдалы болуы мүмкін, бірақ адам не басқа дереккөз керек;
  • reject — құрылым, түр немесе дереккөз сілтемесі қате.

review жасырын мақұлдау емес. Адам шешкенше мәтін жарияланбайды.

Модельден өзін тексеруді сұрамаңыз

«Өзіңіз бірдеңе ойдан шығармадыңыз ба?» деген екінші сұраныс кейбір қатені табуы мүмкін, бірақ ол да модель жауабы. Оны қосымша белгі ретінде қолданыңыз, дербес тексеру ретінде емес.

Дербес тексеру басқа негізге сүйенеді: бастапқы жазба, орындалатын есеп, сыртқы құжат немесе жауапты адам.

Сабақ картасы

Сабақ картасы: бақылау, есеп, себеп және шешім

Опорлық сигналды қалпына келтіріңіз: бақылау → дереккөз; есеп → формула; себеп → дербес дәлел және адам.

Өз сөзіңізбен айтыңыз

  1. Дұрыс сан оның себебін неге дұрыс етпейді?
  2. Есептелген қорытынды бақылаудан несімен бөлек?
  3. Модель қойған claim_type белгісіне неге толық сенбейміз?
  4. review шешімі жарияланым үшін нені білдіреді?

Жаттығу

1. Болжаңыз. «Мән сұраныс себебінен өсті» дегеннің түрі қандай?

text = "мән сұраныс себебінен өсті"
print("cause" if "себебінен" in text else "observation")

2. Бос орынды толтырыңыз. Тек үш белгілі түрге рұқсат беріңіз.

schema = {"type": "string", ...: ["observation", "calculation", "cause"]}

3. Жөндеңіз. Себеп қазір автоматты жарияланады.

if candidate["evidence_ids"]:
    publish(candidate["text"])

Тапсырма

Міндетті. route(candidates, known_ids) функциясын жазыңыз. Белгілі дереккөзі бар бақылауға accept, себепке review, formula_id жоқ есепке review, белгісіз дереккөзге не түрге reject беріңіз. Шешімдерді санаңыз.

accept: 1
review: 2
reject: 2
жарияланады: ['obs-1']

Өз дерегіңізбен. Жиынтық туралы бір бақылау, бір есептелген қорытынды және бір себептік болжам жазыңыз. Әрқайсысына қандай дәлел керегін атаңыз.

Қалауыңызша. Қолмен тексеру кезегін қосыңыз: мәтінді, бағыттау себебін, дереккөз идентификаторын және редактор шешімін сақтаңыз. review күйіндегі жазбаны жарияламаңыз.

Бұл жобаға қайда кіреді

ИИ модулі аяқталды: сұраныс қайталанады, JSON тексеріледі, сандар салыстырылады, ал себептік мәтін автоматты өтпейді. 52-сабақ инженерлік сенімділік модулін бастап, осы ережелерді pytest тестеріне жинайды.

Жауаптар

Жауаптарды көрсету
  1. Сан бақылауды растайды, оған әкелген механизмді растамайды.
  2. Бақылау дереккөзде бар, ал қорытынды аталған формуламен қайталануы керек.
  3. Жіктеу де модельдің тексерілмеген жауабы.
  4. Жеке шешім шыққанша мәтін жарияланбайды.
cause
  1. Кілт — "enum".
schema = {"type": "string", "enum": ["observation", "calculation", "cause"]}
print("cause" in schema["enum"])
True
  1. Себепті тексеруге жіберіңіз.
candidate = {"claim_type": "cause", "text": "Сұраныс өсімді туғызды."}
decision = "review" if candidate["claim_type"] == "cause" else "accept"
print(decision)
review

Дереккөздер

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

Тапсырманы тексеру

Алдымен VS Code-та шешіп, іске қосыңыз — редактор қатені сол жерде көрсетеді. Дайын шешімді осында қойыңыз. Тексеретін — модель: ол қатені атап көрсетеді, бірақ дайын жауапты бермейді.

Тексеру үшін кіру керек. Кіру

Пікірлер (0)

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