IQ Pokyd [verze 0.1]  

Vítejte u pokusu o popsání chování člověka počítačovými algoritmy!

Naprogramoval Aleš Janda Copyright © KÝBLSoft 1999-2004










Co je to vlastně IQ Pokyd? K čemu "to" slouží?
Licenční ujednání aneb co se ještě smí a co už nikoliv
Minimální hardwarové a systémové požadavky
Distribuce programu: co se má vlastně distribuovat?

Jaké mám v programu vůbec zadávat věty?
Na jakém principu IQ Pokyd vlastně funguje?
Co se to proboha děje při prvním spuštění za "rozskloňování"?

Jak je to s verzí IQ Pokydu, co mu předcházelo a co bude následovat v příštích verzích?
Bude IQ Pokyd v příštích verzích umět funkce, které měl původní Pokyd (vtipy, pluginy atd.) ?

Bude IQ Pokyd mluvit i jinými jazyky než je čeština?
Dokáže někdy IQ Pokyd rozumět mluvené řeči a sám "mluvit" hlasovým výstupem?

Řešení problémů s programem

V čem je napsán zdrojový kód IQ Pokydu a jak je dlouhý?
Proč se IQ Pokyd jmenuje IQ Pokyd a jak přišel ke svému jménu jeho výrobce KÝBLSoft?
Líbí se Vám program? Prosím podpořte vývoj!

Kontakt a kde stáhnout novou verzi


Toto je 1. verze programu IQ Pokyd. Omluvte tedy proto jeho částečnou inteligenční nedokonalost. Spousta plánovaných věcí zde ještě není zahrnuta a s dalšími verzemi se bude inteligence stále zvyšovat.


---> Co je to vlastně IQ Pokyd? K čemu "to" slouží?
IQ Pokyd je program, se kterým si můžete popovídat. Prostě mu píšete cokoliv, co máte na srdci a on na to sám reaguje. Samozřejmě jeho schopnosti se nemůžou rovnat těm opravdovým lidským, nicméně dosti situacím "porozumí". Jak moc, to už doporučuji raději vyzkoušet.


---> Licenční ujednání aneb co se ještě smí a co už nikoliv
Tento program je freeware. Program je tedy možno libovolně šířit a užívat. Program je možno šířit se soubory "iqpokyd.exe", "slovnik.iqp", "iqpokyd.iqp" a "cti_me.htm". Ostatní soubory (včetně 17megového "slovnik.tmp") nemusí být šířeny, na novém počítači se vytvoří znova. Program sám nebude šířen za jakékoli poplatky či výhodu poskytovateli. Výjimkou je distribuce např. na CD nebo DVD, na kterém je IQ Pokyd také umístěn, za toto CD či DVD je možno požadovat úhradu, ta však musí být obvyklá - tedy v podstatě stejná jako bez tohoto programu. Mimo to bych byl rád, kdybyste mi takový krok oznámili, minimálně mě potěšíte :-)
Poskytovat IQ Pokyd na svých stránkách je samozřejmě možné bez omezení, pouze je vhodné přidat i adresu zdroje (http://kyblsoft.borec.cz) z důvodu častých aktualizací (které v případě takového programu rozhodně nejsou zbytečné).


---> Minimální hardwarové a systémové požadavky
Minimální nároky programu. V závorce jsou uvedeny optimální hodnoty.
Operační systém:Microsoft Windows 95/98/ME/NT/2000/XP
Procesor:90 MHz (500 MHz)
Velikost paměti:32 MB (128 MB)
Velikost místa na disku:18 MB


---> Distribuce programu: co se má vlastně distribuovat?
K distribuci (šíření) IQ Pokydu není třeba kopírovat veškeré soubory, dokonce to někdy není ani žádoucí. Takže které ano a které ne (seřazeno podle abecedy):
Název souboruDistribucePopis souboru
cti_me.htm Ano Tato nápověda.
iqpokyd.cfg Nemusí Textový soubor s nastavením. Pokud chybí, vytvoří se sám se standardními hodnotami.
iqpokyd.exe Ano Hlavní program; to, co se vlastně spouští.
iqpokyd.iqp Ano Soubor s inteligencí - nutný pro chod programu.
kydy.txt Ne Textový soubor se záznamy proběhlých hovorů. Netřeba šířit.
noveinfo.iqp Ne Soubor s údaji o neznámých tvarech, gramatických stavbách vět atd. Tento soubor je žádoucí odeslat ve formuláři na http://kyblsoft.borec.cz, jinak se však šířit vůbec nemusí.
profil.iqp Ne Soubor s údaji, jak se počítač posledně zachoval atd. Pokud je šířen, nevadí, ale prakticky nemá vliv jeho počáteční absence.
slovnik.iqp Ano Soubor s malou databází slov - nutný pro chod programu.
slovnik.tmp Nemusí Soubor s velkou databází slov. Pokud chybí, vytvoří se sám. Protože tento soubor je zdaleka největší (cca 17 MB), je výhodné ho nekopírovat.
tuknuti.wav Ano Zvuk "ťuknutí" klávesy.


---> Jaké mám v programu vůbec zadávat věty?
Věty se zadávají v políčku k tomu určeném v dolní části obrazovky.

A jak by se tedy mělo psát:
1)   Pište s diakritikou - tj. s háčky a čárkami. To je bezpodmínečně třeba, protože při nedodržení tohoto pravidla nebude program vůbec rozumět.
2)   Za otázkou pište otazník - zní to jako samozřejmost, ale mnoho lidí to přesto nedělá. Většinou nelze podle ničeho jiného poznat, jde-li o otázku (i stavba věty je většinou stejná).
3)   Pište co nejjednodušší věty - tj. nejlépe věty jednoduché, s vyjádřeným předmětem (je-li). Souvětí může pochopit špatně.
4)   Pište spisovně. Program sice většinou porozumí i nespisovnému slovu (typicky špatné tvary slov - "s krásnejma městama"), ale některým nespisovným slovům (zejména jde-li o slovo místní) prostě rozumět nemůže.


---> Na jakém principu IQ Pokyd vlastně funguje?
Zjednodušeně řečeno, existují 3 způsoby, podle čeho má stroj "odpovědět" na větu. Daly by se rozdělit na 1., 2. a 3. generaci. IQ Pokyd má nyní v sobě zabudované 2 tyto způsoby, a sice 1. a 2. generaci. A co to vlastně znamená:

1. generace (mechanismus "starého Pokydu") je lehce modifikovaný způsob odpovídání, který byl použit v předchozích verzích programu. Jedná se o předem téměř přesně definované odpovědi jako reakce na určitá slova nebo jednoduché situace. Tento jediný způsob odpovídání v současné době používají všechny (mně známé) podobné programy. Je to relativně jednoduchý, produktivní a snadno udržovatelný mechanismus, který však nelze zdokonalit za určitou hranicí. IQ Pokyd ho používá zčásti jako doplněk k odpovídání dle 2. generace, kterou dosud nemá na takové úrovni, aby byla plně samostatná.

2. generace (mechanismus "IQ Pokydu") je způsob odpovídání, při kterém je na schémata situací odpovídáno zase jen podle schématu odpovědi; tedy konkrétní věta je generována podle předchozích vazeb v hovoru. Využití tohoto způsobu předpokládá alespoň základní znalost gramatiky a slovní zásoby daného jazyka. IQ Pokyd tento princip zatím používá souběžně s 1. generací, postupně by ho však měl tento způsob zcela nahradit. Není mi znám žádný jiný podobný program, který by využíval tohoto mechanismu.

3. generace (mechanismus "chytré neuronové sítě") je princip, při kterém nejsou předem definovány ani reakce, ani odpovědi, a ty jsou potom generovány na základě znalostí zákonitostí jazyka a okolního světa. Zatímco emoce lze v 1. a 2. generaci pouze nasimulovat, zde jsou nedílnou součástí mechanismu. Je to způsob středně složitý na vyrobení, ale velice složitý na naučení a na udržování a zdokonalování (i při jemném zásahu se změní spousta věcí). Takový "virtuální člověk" je však téměř ideálně přizpůsobivý. V současné době (podle mých informací) neexistuje podobný program, který by využíval tohoto principu; ani IQ Pokyd.

Lidský mozek pracuje na principu vyšší než 3. generace; má totiž v sobě celou řadu možností, o kterých věda ještě zdaleka nic neví. Pokud si tedy pokecáte se sousedem od vedle, bude to hovor na vysoce inteligentní úrovni :-)


---> Co se to proboha děje při prvním spuštění za "rozskloňování"?
Program používá různé databáze s daty. Dvě z nich obsahují i slovní zásobu jazyka - malá databáze a velká (nebo základní a úplná) databáze. "Malá" databáze obsahuje pouze slova v základním tvaru a informace o nich. Ta by však sama o sobě nestačila, každé slovo lze totiž uvést v mnoha tvarech, nejen v tom základním. Jedná se o tvary typu nesu/neseš/nese/nést/nesení/nesený/-náší atd, každé slovo lze v průměru rozskloňovat do 30 různých tvarů, z nichž některé vyjadřují i více tvarů zároveň.
A právě všechny tyto tvary jsou uloženy ve "velké" databázi. Ta se však nemusí šířit, protože se může vytvořit z malé databáze, a protože je veliká 17 MB, její "nešíření" je výhodné. A proto je třeba tu chvilku při prvním spuštění počkat.


---> Jak je to s verzí IQ Pokydu, co mu předcházelo a co bude následovat v příštích verzích?
Tento program "IQ Pokyd" je přímým následníkem původního programu "Pokyd" (poslední verze 7.0). Ten sloužil ke stejnému účelu jako nynější IQ Pokyd, ale již neumožňoval přílišné vylepšení. Proto byl celý program postaven úplně jinak a vzniknul z toho právě tento "IQ Pokyd".
Tato verze IQ Pokydu (verze 0.1) je první verzí vůbec tohoto nového projektu a zatím zdaleka nevyužívá všech možností, kterých využívat může a které zkvalitní hovor s počítačem. Další vylepšení, kterých je poměrně dost, budou obsaženy v příštích verzích. Zatím proto prosím buďte shovívaví.

Co nejspíš bude v dalších verzích:
verze 0.2   - "učení se" novým věcem
- podpora slovenštiny
- podpora zvratných zájmen se a si
- porozumění novým slovům a číslovkám
verze 0.3   - hlasový výstup
- podpora velkých písmen (např. ve jménech)
verze 0.4   - neuronová síť (systém myšlení)
verze 1.0   - obrazový výstup


---> Bude IQ Pokyd v příštích verzích umět funkce, které měl původní Pokyd (vtipy, pluginy atd.) ?
Do budoucna předpokládám mluvení počítače, i když člověk nic neříká, zabudování vtipů a kecání dvou počítačů mezi sebou, možná pak zábavnou předpověď počasí. Pluginy se už určitě neobjeví, protože příliš nesouvisí s programem a jejich opětovné naprogramování by mě stálo spoustu času, který radši vložím do zlepšování samotné inteligence programu.


---> Bude IQ Pokyd mluvit i jinými jazyky než je čeština?
IQ Pokyd je na češtinu přímo vázán, slovní zásoba, definice gramatiky i odpovědí vychází právě z češtiny, takže jiné jazyky mimo češtiny a slovenštiny by byly přílišným zásahem do programu.
Nicméně v budoucnu (ideálně v příští verzi) počítám s podporou slovenštiny. Co to znamená? Program bude nadále mluvit česky, ale bude umět (volitelně) slovenské skloňování, gramatiku, zásobu slov. Je to proto, že slovenština je velice podobná češtině a byla by škoda ji tedy nezahrnout (je dokonce o dost pravidelnější a tedy lehčí na naprogramování). Nicméně bude se jednat pouze o podporu, na kompletní překlad prostě nemám lidi :-)


---> Dokáže někdy IQ Pokyd rozumět mluvené řeči a sám "mluvit" hlasovým výstupem?
Porozumění mluvené řeči je jedna z nejnáročnějších disciplín počítačových systémů a v současné době o tom neuvažuji.
IQ Pokyd však sám bude mluvit a později zde bude i obrazový výstup. Na syntéze (produkování) mluveného slova pracujeme již nyní, kompletní zpracování bude však ještě nějakou dobu trvat.


---> Řešení problémů s programem
Co dělat v případě nesnází:
ProblémMožné řešení
Políčko pro zadávání textu má žlutý text na bílém pozadí nebo pozadí okna je jen změť barev Tato chyba se na některých grafických kartách / systémech projevuje, zatím jsem nezjistil přesně, na kterých a co s tím. Řešením je zobrazování pozadí zakázat - spusťte program s parametrem "-bezpozadi", tedy "IQPokyd.exe -bezpozadi" (z příkazového řádku). To nastaví černou barvu pozadí okna, bílou barvu a černý text v políčku pro zadávání věty.
Na disk s IQ Pokydem nelze zapisovat Program si zapisuje na disk poměrně dost věcí - záznamy rozhovoru, profil člověka, nové významy, na začátku seznam slov atd. Pokud nelze zapisovat, může to být způsobeno:
a) Na disk obecně nelze zapisovat (např. na CD nebo DVD)
b) Na disku není dostatek místa
c) Program nemá dostatečná práva na zápis
V případě problémů stačí přesunout celý program na jiný disk. Pokud byste chtěli pouštět IQ Pokyd např. z CD či DVD, spusťte ho z příkazového řádku s parametrem "-readonly", tedy "IQPokyd.exe -readonly". Program se pak ani nepokusí cokoli zapsat. Počítejte ovšem s tím, že nebudete moci natrvalo měnit nastavení atd. a pokud nebude přítomen soubor "SLOVNIK.TMP", tedy "velký slovník", bude se vytvářet při každém spuštění znova.
Program hlásí "Bohužel, udělalo se mi zle a nemůžu dál pokračovat..." V tom případě mi prosím pošlete informace, které hlásí společně s tím (tj. soubor a řádek v souboru, kde nastala chyba), a co jste udělali (nebo napsali) těsně před tím, než chyba nastala. Pokusím se ji do příští verze opravit.
Program při skončení hlásí "neuvolněné paměťové bloky..." Platí totéž co v předchozím případě, pošlete mi prosím o ní zprávu. Tato chyba se sice už hledá hůř, tohle upozornění je spíš "s křížkem po funuse", ale přesto bych byl rád, kdyby jste mě o ní informovali.
Mám jiný problém... Napište mi na e-mail (kontakt na konci stránky) a pokusíme se ho vyřešit.


---> V čem je napsán zdrojový kód IQ Pokydu a jak je dlouhý?
Jádro programu je napsáno v čistém C++, uživatelské rozhraní pomocí API a MFC funkcí a celý program je přeložen v Microsoft Visual C++ 6.0.
Samotný zdrojový kód bez slovníků, pomocných prográmků a "automatického" kódu má velikost 690 kB, je ve 49 souborech a má 17.286 řádků.
Včetně slovníků a pomocných prográmků potřebných k naprogramování má potom 85 souborů, zabírá 1,16 MB a obsahuje 35.121 řádků.


---> Proč se IQ Pokyd jmenuje IQ Pokyd a jak přišel ke svému jménu jeho výrobce KÝBLSoft?
Název IQ Pokyd: Původně to měl být program jmenující se něco jako "Pokec". Jenže program s názvem Pokec už v té době existoval, navíc by se takové jméno pletlo se spoustou internetových chatů. A jako je "pokec" od slova "kecat", "pokyd" je od slova "kydat" - tedy tlachat, plácat nesmysly (někdo si pod tím slovem představí také sedláka v gumákách s vidlemi u hnoje). Opravdu, zpočátku nebyly s Pokydem žádné velké plány, měl to být hlavně program umožňující každému zdarma si vyzkoušet pokecat s počítačem. Z toho vzniknul tedy program s názvem Pokyd. Ten také dlouho existoval, ale právě proto, že s původním Pokydem nebyly do budoucna žádné velké plány, bylo jádro programu velice slabé. Proto jsem se jednoho (krásného) dne rozhodl, že přepracuji Pokyd od základů, aby mohl být inteligentnější. Přepracování trvalo plné 2 roky a také si vyžádalo mírnou změnu názvu - proto to vsunutí přívlastku "IQ" před "Pokyd". Nyní je to tedy IQ Pokyd.
Název KÝBLSoft: Tam je historie trochu starší. Předem bych však chtěl říct, že KÝBLSoft je pouze označení, pod kterým se prezentuji (prezentujeme), tedy žádná "oficiální" společnost. Slovo "kýblsoft" jasně vzniklo ze slov "kýbl" a "soft". "Soft" znamená software a je to běžné tvoření názvů softwarových vývojářů. A proč "kýbl"? Kdysi dávno nás (jako malé) zachvátilo šílenství s tímto slovem. Je to prostě na první pohled komické slovo vyjadřující celkem běžnou věc. A toto šílenství se projevilo (když nepočítám například náhlé vyprodání veškerých kýblů v obchodě partou kluků) i pojmenováváním "kýbl" všeho, co právě chtělo pojmenovat. A tak vzniknul KÝBLSoft. Dnes už samozřejmě žádné šílenství (moc) nepokračuje, nicméně je to název, který na první pohled zaujme a lidé si ho zkrátka lehce pamatují. A proč je slovo "kýbl" psáno velkými písmeny? Nebyl to právě šťastný krok, ale v té době se mi velká písmena líbila. Je to však nestandardní, proto je klidně přípustné i např. "Kýblsoft" nebo "KýblSoft".


---> Líbí se Vám program? Prosím podpořte vývoj!
IQ Pokyd je sice freeware, ale jeho vývoj mě samozřejmě i přesto stojí dost času a úsilí. V současné době navíc studuji, takže peněz ani času nazbyt nemám. Pokud se Vám tedy program IQ Pokyd líbí, pošlete mi prosím jakoukoli částku na účet číslo 000000-1547755153/0800 (Česká spořitelna), složenkou na adresu Aleš Janda, Sídl. U Cukrovaru 1069, 278 01 Kralupy nad Vltavou nebo jakoukoli částkou dobijte kredit telefonu 604 775 475.
K čemu bude příspěvek použit? Nic konkrétního slíbit nemůžu, ale budu vědět, že má snaha není zbytečná a taky si budu moci dovolit více se věnovat vývoji IQ Pokydu místo často nicneříkajících, ale nutných brigád. Navíc budete něco jako VIP - privilegovaný uživatel.
IQ Pokyd čeká ještě dlouhý vývoj a rád bych ho chtěl i do budoucna zpřístupnit všem, tedy zdarma.
Za Váš příspěvek děkuji.


---> Kontakt a kde stáhnout novou verzi
Kontakt na autora:
Aleš Janda
E-mail:   ales.janda@centrum.cz
WWW (zdarma aktualizace):   http://kyblsoft.borec.cz
Telefon:   777 641 869
Adresa:   Sídl. U Cukrovaru 1069
Kralupy nad Vltavou
278 01

Aleš Janda, autor programu