Chatterbot on ohjelma, joka keskustelee käyttäjän kanssa. Tyypillisesti se sisältää jonkinlaista tekoälyä. Erotukseksi vakavasti otettavasta kieliteknologiasta, joka pyrkii tosissaan ymmärtämään käyttäjän kommentit (conversational AI, GOFAI-teknologiaa), niitä kutsutaan "tekohöpötykseksi": niiden tarkoitus on vain antaa vaikutelma käyttäjän kanssa keskustelemisesta.
Chatterbottien menestystä lisäävät monet tekijät. IRC:ssa ja erilaisissa messenger-medioissa niiden apuna on tekstin välityksellä tapahtuva kommunikaatio ja se, ettei ihminen näe, kun toinen kirjoittaa (jolloin keskustelutilanteessa ihmismäisen vaikutelman aikaansaamiseksi riittää viive, joka on suhteessa sanottavan pituuteen). Toinen yleismaailmallinen tekijä on se, että ihmisillä on uskomaton kyky keksiä, miten toisen kommentti mukamas liittyy hänen sanomaansa asiaan. Esimerkiksi jos ihminen sanoo "Hei, aion nyt hypätä ikkunasta" ja kone vastaa "niin mutta tarvitseeko minun?", ihminen sujuvasti olettaa, että kone tarkoittaa ikkunasta hyppäämistä.
Kolmas, mielenkiintoinen chatterbottien tekemistä helpottava tekijä on se, että kieli tarjoaa keinoja vastauksiin, jotka sopivat tilanteeseen kuin tilanteeseen. Esimerkiksi "ei pidä paikkaansa!" on hyvä vastaus huomattavan moneen repliikkiin. Yleisesti ottaen vastaukset sopivat sitä useampaan tilanteeseen, mitä yleisemmällä (ylevämmällä?) tasolla ne liikkuvat ja hiukan yllättäen mitä hyökkäävämpiä ne ovat. Jälkemmäinen johtuu ainakin siitä, että kaikki kommunikaatio on jonkinlaista keskinäisten sopimusten täyttämistä, ja jos joku tekee selväksi, ettei pidä toisesta, kommunikaatiosopimusten rikkomista (joka oikeasti johtuu ymmärtämättömyydestä) ei niin paljon ihmetellä. Esimerkiksi jos ihminen sanoo "Tiedätkö mitään hyvää bändiä?" ja kone vastaa "ei kiinnosta sori vaan", ihminen lukee vastauksen viittaavan bändeihin.
Chatterbotit ylipäänsä kertovat pohjimmiltaan paljon enemmän ihmisistä kuin tietokoneista. Jabberwackyn (http://www.jabberwacky.com/) sivuilla olevat, käyttäjien innostuneet kommentit kertovat karua tarinaansa siitä, kuinka ihmiset pitävät älykkään oloisena ohjelmaa, joka ei osaa (ainakaan minulla) yhteenkään kysymykseen vastata siten, että olisi syytä olettaa, että ohjelma ymmärsi, mitä kysyin. MegaHAL:n (http://megahal.alioth.debian.org/) sivut ja FRED:n lyhyt historiikki (http://homepage.mac.com/rgarner1/Studio/fredhist.html) kertovat omaa tarinaansa siitä, mitä ihmiset odottavat chatterbotilta: esim. www:n kautta käytettävän chatterbotin syötteestä vähintään puolet on roskaa (tyhjänpäiväistä, merkityksetöntä haukkumista jne.); jäljelle jäävästä keskustelusta suuri osa on "kilpailevaa" keskustelua, jossa käyttäjä pyrkii tavalla tai toisella osoittamaan botille tämän paikan maailmassa, sekä "empaattista" keskustelua, jossa ihminen osoittaa yhteisyyttä ja myötätuntoa botille muttei välitä, onko keskustelu tämän kanssa oikeastaan mielekästä; loppuosassa on nähtävissä jotain osoitusta siitä, että ihminen oikeasti välittää, mitä botti sanoo.
Chatterbottien heikoimpia alueita on muisti. Koska chatterbotit eivät yleensä tiedä, mistä puhuvat, niiden on vaikea pysyä aiheessa.
Minun chatterbottini psyk on oppivaa laatua. Se oppii kaiken sille sanotun ja muistaa, millaisessa tilanteessa (so. minkälaisten repliikkien seurauksena) se on sille sanottu. Kehittääkseen itse vastauksia se vertaa keskustelun tämänhetkistä tilannetta, kontekstia, kaikkiin oppimiinsa ja valitsee sen vastauksen, jolla on parhaiten sopiva konteksti. Varsinainen logiikka, jolla konteksteja vertaillaan ja pisteytetään, lienee parhaiten luettavissa lähdekoodista: http://sange.fi/~atehwa/psyk/psyk.ss (n. 300 riviä, kohta "context matching")
Tällä hetkellä psyk on IRCnetissä handlella psyk, ja sen kanssa voi keskustella yksityisesti queryssa tai sitten sen voi kutsua jollekin kanavalle ihan tavallisella /invite:llä.
Psykistä tuli myös teos: höpötin.
kategoria: ohjelmointi kategoria: kieli kategoria: projektit
Mahnaz: Voisiko psyk:n kanssa keskustella joskus? :)
atehwa: Viritin sen ammeelle. Kokeile siellä.