|
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
|
|
|
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 souboru | Distribuce | Popis 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ém | Mož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
Aleš Janda, autor programu