Žiaci 8. B prišli s nápadom, rozvinúť dialóg s programom tak, aby to neboli len otázky počítača človeku, ale aby aj človek mohol klásť otázky počítaču a aby to vyzeralo, ako skutočný dialóg medzi dvoma ľuďmi. Spomenul som si na program Eliza, ktorý bol pravdepodobne inšpirovaný Turingovým testom umelej inteligencie – program bude mať vlastnosti umelej inteligencie, keď človek pri dialógu s programom alebo s človekom nerozozná, či je na druhom konci človek alebo počítač.
Nultá verzia nášho programu vyzerala takto:
print ("Ahoj, volám sa Eliza.\n Som umelá inteligencia, napísaná v programovacom jazyku Python.") meno=input("Ako sa voláš?\n") print("Ahoj"+meno+". Môžeme sa porozprávať ?") odpoved=input("Ako sa máš? ") if odpoved in ("dobre","vynikajúco","výborne"): print("To som rada, že sa máš",odpoved) else: if odpoved in ("zle","mizerne","nedobre"): print ("Je mi ľúto, že sa máš",odpoved) print (meno,"prečo sa máš",odpoved)
Poznámka: Dvojica znakov \n spôsobí prechod na nový riadok.
Na tejto adrese nájdete Elizu po drobných úpravách.
Čo je to umelá inteligencia?
Jeden zo žiakov odpovedal: „Je to inteligencia, ktorá je umelá“ 🙂 Túto odpoveď som označil ako tautológiu. Bol to pravdivý výrok, ale nič nové sme sa z neho nedozvedeli.
Tak som otázku zjednodušil(?). Čo je to inteligencia?
Ďalší žiak na to povedal: „Inteligentná bytosť je taká, ktorá vie riešiť problémy“. S touto odpoveďou som síce takmer úplne súhlasil, ale keď sme na jednej z hodín naprogramovali funkciu faktoriál, tak hoci program vedel vyriešiť problém výpočtu faktoriálu, asi nebudeme tvrdiť, že sme vyvinuli umelú inteligenciu, ani keby program vedel riešiť väčšinu kombinatorických úloh.
Pri komunikácii s nultou Elizou sme zistili, že hoci vie, ako pokračovať pri odpovedi dobre, nereagovala na odpoveď Dobre. Podobne by to bolo, ak by sme odpovedali Vynikajúco, vynikajuco, vinikajúco. Človek by všetkým týmto tvarom odpovedí rozumel, slovenčinár by sa možno nad niektorými rozčúlil. Ošetrime zatiaľ malé a veľké písmená, v budúcnosti vyriešime aj problémy s diakritikou, s preklepmi, s mäkkým a tvrdým i , …
Chceme, aby Elize bolo jedno, či použijeme v odpovedi malé alebo veľké písmená. Potrebujeme metódu, ktorá buď všetky písmená zmení na malé alebo veľké.
V Pythone sú to metódy r.upper() a r.lower(). Metóda upper vráti všetky písmená veľké a lower vráti všetky písmená malé. Použime metódu lower.
Riadok odpoved=input(„Ako sa máš? „) zmeníme na odpoved=input(„Ako sa máš? „).lower().
Zrazu Eliza pokračuje v dialógu rovnako, či sme použili malé alebo veľké písmená.
Nové príkazy v nultej Elite
Podmienený príkaz if … else
Podmienený príkaz má tvar:
if podmienka: 1. blok príkazov else: 2. blok príkazov
Ak platí podmienka, vykoná sa 1. blok príkazov, ak podmienka neplatí, vykoná sa 2. blok príkazov. Blok príkazov je sada príkazov, ktoré sú rovnako odsadené, sú odsadené viac než riadky z if a else a blok obsahuje aspoň jeden príkaz.
Podmienky
- – test, či sú hodnoty rovnaké
- – test, či sú hodnoty rôzne
- – Test či hodnota je väčšia, menšia, menšia alebo rovná, väčšia alebo rovná, než .
- – test, či sa hodnota nachádza medzi hodnotami až .
Odkazy
- Vyplňte prosím formulár, v ktorom navrhnite dialóg medzi Elizou a človekom. Navrhnite ho tak, aby prebiehal podobne, ako by komunikovali dvaja ľudia.
- Zoznam doteraz zaznamenaných dialógov.
- Program Eliza komunikujúci anglicky