Newsgroup: it.comp.ia
Titolo: [lungo] riflessioni oziose sui chatterbots

prima di tornare ai miei impegni pubblico alcune opinioni personali sui
chatterbots...perdonatemi se rischio di dire sciocchezze.
esistono diverse strategie per i chatterbots, tempo fa ho realizzato un
metodo di classificazione dei chatterbots ma ve lo risparmio per adesso,
alcuni metodi li elenco di seguito (le terminologie sono personali):
1) stile Eliza:  semplice effetto specchio, si risponde con una
rielaborazione dell'input spesso in forma di domanda.
 es. Utente: "ho fame" 
Bot:"davvero, HAI FAME? 
2) stile Parry/Hex : si "distrae" l'utente con affermazioni che
incuriosiscono spingendo l'interlocurore a fare domande sulla
personalità/vita/opinioni/problemi  virtuali del chatterbot, evitando
quindi altri argomenti.
 es. Utente:"Di che squadra di calcio sei?" 
Bot:"Non parlarmi di calcio! L'ultima volta che sono andato allo stadio mi
hanno picchiato" 
Utente:"chi è stato?" ecc..
3) stile MegaHal: chatterbots in grado di essere "creativi", cioè di
formulare nuove frasi, basandosi spesso su meccanismi complessi. Il
risultato però IMHO è di solito deludente, a meno che l'idea non sia
quella di simulare uno psicopatico in fase allucinatoria.
frasi del tipo: "le galline motorizzate apprezzano l'aroma della filosofia
di rame" sono coerenti con la grammatica umana ma poco credibili. (la
frase è mia, non di megahal)
4) stile Spock: beh, cito Spock, creatura di un nostro compagno di NG, per
rappresentare tutti i chatterbots pesantemente rivolti all'apprendimento.
(Spock è in realtà un po' diverso dai "normali" chatterbots, prima di
tutto perchè tenta REALMENTE di capire il significato dell'input)....forse
potevo citare il chatterbot Jabberwock.
   direi che l'apprendimento è importante per la mia idea di chatterbot,
ma solitamente gli esempi che ho incontrato sono forse troppo concentrati
su questo problema per soddisfare le altre "esigenze" di una applicazione
utile praticamente.
inoltre un chatterbot totalmente basato sull'apprendimento ( meccanismi
rudimentali ma efficaci per implementare l'apprendimento sono talmente
semplici che evito di menzionarli) forse è eccessivo per usi pratici.
le principali possibilità sono : 
a) addestrare scrupolosamente un tale programma per anni (!!!)
b) permettere l'apprendimento "selvaggio" tramite chat aperta al pubblico
( ...e in poche ore si ottiene un chatterbot in grado di bestemmiare in 12
lingue diverse e di fare affermazioni a favore della pedofilia e/o il
cannibalismo! ^__^)
------
Come autori ben più preparati e seri di me hanno affermato, il Loebner
prize così come è organizzato, serve a poco per lo sviluppo dei
chatterbots (e della vera AI), per me questo è dovuto a vari motivi, uno
dei quali è che forse la premessa è allo stesso tempo troppo ambiziosa
(Turing parlava di vera AI) e troppo limitata (un paio di minuti a
chattare con interlocutori non particolarmente esperti).
ecco perchè IMHO spesso vengono proposti progetti limitati ma realizzati
ad hoc per il Loebner...questo IMHO è vero per la maggior parte dei
chatterbot ad esclusione di Alicebot e pochissimi altri.
---------
Uso dei chatterbot:
D: ma a che diavolo serve un chatterbot????
R: come per molte cose, dipende dal punto di vista.
utilizzi ce ne sono molti, dal semplice gioco, alle intefacce web (io
terrei d'occhio una ditta tedesca che sta lavorando forse più duramente di
altre a questo scopo, ha un buon chatterbot e si sta espandendo, ve ne
sono altre in USA che iniziano a lavorare in modo deciso sull'argomento
con FLASH) ecc. ecc.
la mia idea?
io sono interessato alla possibilità di creare un bot di base in grado di
fare tutto quello che fa Alicebot, ma con maggiori capacità di
apprendimento (gestione e modifica del proprio brainfile automatizzata),
con maggiore facilità di inserimento di package di personalità differenti,
con la possibilità di essere non solo un chatterbot standard (che,
diciamocelo, di solito si limita a tergiversare nella speranza che
l'utente smetta di chattare ^___-) ma possa essere "attaccato" ad altre
applicazioni ( es. una base di conoscenza, sistemi esperti, un bel DBMS
ecc.. tutti integrati con un "superchatterbot" in grado di smistare le
domande che richiedono l'uso di tali applicazioni e quelle che riceveranno
solo risposte da chatterbot Alice-like).    
mio approccio: a prescindere dal fatto che ho poco tempo per queste cose
[purtroppo!] e che l'argomento sembra esulare dalla ricerca "seria", la
mia opinione sui chatterbots (opinione ovviamente anche non condivisibile)
è che spesso si è tentato con un approccio errato e del tutto simile a
quello che ha (forse) rallentato lo sviluppo dei robots (qui sono quasi
totalmente ignorante, scusatemi) ovvero di pretendere di sviluppare dei
robot in grado di eseguire tutti i movimenti in forma deduttiva (comprendo
il problema, decido di eseguire un certo movimento, aziono tutti i
meccanismi necessari per il movimento ecc.) ....poi sono venuti fuori i
minirobot insettoidi , quasi completamente stupidi e che basano i propri
movimenti su sistemi decentralizzati (ogni zampa si occupa di se stessa)
molto più rudimentali, ma efficaci.
può essere una stupidaggine colossale, ma IMHO anche in molti studi sulla
AI (in particolare su quanto poco è stato fatto sui chatterbot) c'è questo
limite: dal momento che non siamo in grado (ancora) di realizzare una vera
AI, non possiamo nemmeno avere programmi in grado di interagire con gli
utenti in linguaggio naturale, e se questo accade....beh sono solo
giochetti da nerds.
La mia opinione è: se riusciamo a tirare fuori un bot in grado di
sostenere senza trucchetti grossolani una conversazione (magari solo su
pochi argomenti, questo non è un problema), fosse anche usando un semplice
pattern matching applicato però in modo efficace ed esteso, potremmo poi
unirlo ad altri programmi di diversa natura, coordinati da un programma
arbitro. Forse il risultato sarebbe interessante e sorprendente.
adesso ci si limita spesso a semplici cloni di Eliza oppure a bot
interessanti forse teoricamente ma che di solito puntano ad essere
qualcosa di più..senza riuscirci.  
---------------
Concludo con un paio di osservazioni: non ho la minima idea di come ( e
se) verrà mai realizzato un programma di vera AI in grado di conversare e
superare senza "barare" il Turing test, sebbene sia fiducioso.
in attesa del genio che riuscirà a farlo, mi limito a notare una cosa...
IMHO Alicebot ha iniziato una strada che può produrre risultati
interessanti, ha realizzato un linguaggio che permette di migliorare il
funzionamento del tanto bistrattato pattern matching.
per adesso sembra che un buon brain file (sostanzialmente il database dei
patterns) molto esteso e realizzato in AIML dia risultati migliori
rispetto agli altri bots in giro.
( la vincitrice dell'ultimo loebner prize, ELLA, non mi ha assolutamente
colpito, non è un open source..ma temo che abbia vinto perchè, rispetto ad
Alice, aveva una personalità virtuale più marcata ma un brainfile non
certamente superiore a quello di alice) 
una considerazione amara: Temo che dovrò attendere qualche annetto,
aspettare che (in USA) vengano creati e sviluppati chatterbots con
interfacce spettacolose ( ci sono già i primi timidi esempi in FLASH) .Tra
le altre cose mi sono sempre chiesto perchè non esiste ancora un bel
chatterbot con interfaccia video composta da porzioni di video di persona
reale...mah forse costa troppo.
Quando e se questo verrà fatto, probabilmente farà scalpore (Eliza ha già
dimostrato che la "gente comune" riesce ad attribuire piena credibilità a
macchine in grado di dimostrare capacità sorprendentemente "umane") e
allora arriveranno (sempre in USA) soldi che potranno spingere la ricerca
tecnologica in questo settore.
e poi film come "Simone" ( questo è il titolo?) su una "persona virtuale"
saranno superati.
Tutto ciò senza necessariamente fare passi in avanti verso la "vera" AI
^__-
tornando al caro Turing, si può non essere d'accordo, però l'idea che se A
si comporta esattamente come B allora A=B , può essere problematica da un
punto di vista filosofico.
io arrivo (per adesso) addirittura a contentarmi di un: se A si comporta
in modo abbastanza simile a B allora per adesso può andare bene.
Sarò poco ambizioso, non vincerò mai il Nobel ^___^....ma dedicandomi ai
chatterbots per hobby e con obbiettivi decisamente pratici, non ci soffo.
ciao
MX         
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

solo risposte da chatterbot Alice-like).    
Senti, ma perche' non seguire invece (che mi pare piu' sensato)
l'approccio contrario? Cioe':
1) Creare un universo semplice e di cui abbia senso parlare
2) Creare un'interfaccia che converta i dati provenienti da questo
universo in un formato indipendente dalle caratteristiche
dell'universo stesso
3) Creare un programma che interpreti questi dati e sappia interagire
con l'universo modello e parlarne con un interlocutore
So che detta cosi' sta a mezzo fra la fantascienza e SHRDLU.
Il punto e' che secondo me c'e' un errore di fondo nei chatterbot.
Prima si pretende che imparino a parlare del mondo (dato che il nostro
linguaggio parla del mondo) solo attraverso il linguaggio - cioe'
attraverso il suo uso comune- oppure attraverso delle reti di
connessioni che non possono essere che tremendamente incomplete nel
momento in cui si avventurano nel mare sconfinato dell'esperienza
(gatto->felino->mammifero->animale-> ecc...).
Poi si pretende che non parlino di qualche cosa, ma chiacchierino, del
piu' e del meno. Il che significa rischiare di sfiorare un po'
qualsiasi argomento, il che ovviamente non e' possibile dato che una
rete di relazioni come quella descritta sopra, posto che ci sia, non
puo' che coprire un punto infinitesimo rispetto allo spazio delle
relazioni possibili che un essere umano conosce.
Quindi, sempre IMHO, non si puo' insegnare un linguaggio senza farlo
entrare in relazione con qualche altra cosa, diversa dal linguaggio
stesso.
Il significato delle cose, che forse non e' altro che la comprensione
di come le cose sono indipendentemente dalle parole e frasi che usiamo
per descriverle, non puo' che stare fuori dal linguaggio. E' vero che
il linguaggio, nelle sue espressioni piu' frequenti,  si  porta con
se' un po' di questo significato. Pero' sperare di attingerlo *tutto*
da quel che ne resta nel linguaggio e' assurdo.
Quindi l'idea e' questa: un software in grado di apprendere l'uso di
un linguaggio *in relazione con* qualcosa di non linguistico.
Insegnare il linguaggio come una costruzione parallela -quindi in un
certo senso funzionale alla descrizione- di un mondo con delle regole
piuttosto semplici che possano a loro volta essere apprese
spontaneamente.
Se si potesse ottenere questo, si potrebbe poi magari sfruttare
l'interfaccia di cui al punto 2) per connettere lo stesso sistema ad
altri universi ... ad esempio, un sistema operativo.
Ciao,
Anders 

 con l'universo modello e parlarne con un interlocutore
Molto piu' realistico, IMHO. Questo e' il secondo approccio di cui parlavo.
Concordo con le altre osservazioni.
Stefano

Il punto e' che secondo me c'e' un errore di fondo nei chatterbot.
[cut]
Il tuo è (credo) l'approccio "tipico" a questo argomento:
1) prima facciamo una AI che comprenda in modo deduttivo grammatica e
semantica
2) poi realizziamo un' interfaccia che risponda.
come dire: 
1)prima realizziamo un cervello per robot in grado di coordinare in modo
centralizzato il movimento
2) poi costruiamo il robot
bada bene, non dico che sia necessariamente sbagliato (anzi è molto
ragionevole) e abitualmente anche io seguo questo sistema.
ma ci sono alcune cose su cui credo valga la pena di riflettere:
partendo dal presupposto che io voglio un "superchatterbot" ADESSO non
quando verrà realizzata una vera AI, ci sono alcune cose da considerare:
1) a parte pochissimi esempi (es. Alicebot) i chatterbots rimangono
piccoli esperimenti di singoli che o sono interessati a seguire una
determinata linea di progettazione indipendentemente dai risultati, oppure
si "accontentano" di realizzare un chatterbot come Eliza o per partecipare
ad un concorso.
2) non mi sembra che si siano ottenuti per adesso risultati stupefacenti
nella creazione di software in grado di comprendere e gestire realmente
linguaggi umani in modo "intelligente".
3) spesso il dibattito verte sui meccanismi di base più che sui risultati
dei chatterbots. (sistema formalmente ineccepibile, ma che non ha portato
dopo quasi 40 anni a nulla di particolarmente utile)
4) un noto principio dice: "se una tattica fallisce, cambiala", con questo
non suggerisco di fermare la ricerca nè affermo di aver trovato soluzioni. 
Mi limito ad osservare IMHO che OGGI stesso si potrebbe già realizzare
qualcosa in grado di sostenere una discussione in modo abbastanza
verosimile, di farlo in forma di dialogo verbale e con una corrispondente
immagine video praticamente indistinguibile da un reale persona in
videoconferenza, con tanto di feedback emozionale.
Potrebbe essere tranquillamente criticata e "snobbata" dai puristi, ma
basterebbe che venisse finanziata e un team di informatici sarebbe in
grado di produrre questa "cosa" in breve tempo. Probabilmente dovremo
aspettare che qualcuno in USA lo faccia (IMHO è questione di pochissimi
anni, probabilmente MESI ) e tutto con tecnologie esistenti e metodi
"banali".
5) a rischio di essere "eretico", ripeto che per adesso mi interesso di
risultati e non di filosofia dei chatterbot, mi limito ad osservare la
situazione. Non nascondo però che esiste effettivamente la possibilità che
l'approccio "tradizionale" alla AI possa essere quello meno promettente.
In fondo non sappiamo realmente cosa sia la mente e la coscienza, parliamo
di cose ancora poco chiare...anche se sono abbastanza sicuro che
riusciremo prima o poi a capirci qualcosa :-)
Nel frattempo possiamo pure divertirci con i chatterbots, no? Che male c'è
nel voler sperimentare realmente i limiti di questi sistemi? siamo poi
veramente certi che sia una perdita di tempo? 
6) come si comporterebbe Alicebot con un brain file di...6 milioni di
patterns al posto degli attuali 40.000 ? ammesso ovviamente un programma e
un computer  in grado di gestire il tutto. 
Il problema principale sarebbe la creazione di un tale brain file, ecco
che diventerebbe importante implementare un efficace sistema di modifica e
accrescimento del suo database.
integrando il tutto con altri programmi il risultato potrebbe essere
notevole...ammesso che qualcuno ci provi e abbia i soldi per farlo ^____^ 

[segue da mex precedente]


 patterns al posto degli attuali 40.000 ?
Pensare che la dimensione del database cambi qualcosa nelle prestazioni di
un algoritmo di NLP (specie se rudimentale) e' una affermazione un po'
azzardata.
Stefano

azzardata.
se scopro che intendi prestazioni di tipo "intelligente" mi metto a
piangere sulla tastiera :-)
l'idea è semplice (e non è nemmeno mia) : le discussioni che una persona
fa sono molto meno complesse di quanto non si creda, gli argomenti e le
domande che vengono poste sono molto ridondanti, spesso il problema sono
semplicemente i moltissimi modi diversi che una lingua offre per porre le
stesse domande ( da cui l'approccio "riduzionista" di alicebot) , inoltre
(come tu accennavi precedentemente) l'idea di restringere l'argomento di
discussione è originato dal fatto di poter ridurre il numero di possibili
frasi/risposte significative (per evitare i non sequitur che rimangono
come default) . In entrambi i casi un brain file più grande potrebbe
migliorare la qualità delle risposte del chatterbot.  


 
Mi inserisco anche io nel discorso, qualche tempo fa' avevo provato 
(poi abbandonato) a fare anche io un chatterbot "stile Spock" cioe' 
orientato sull'apprendimento, anzi, il mio obbiettivo temporaneo era solo 
quello. Riprendendo i vostri post, IMHO per fare un chatterbot che 
sostenga una conversazione decente cioe' che risponda alle domande invece 
che cercare di sfuggire ma che non sia "freddo" nelle risposte, e' 
necessario separare la fase di apprendimento (o gestione delle 
conoscenze) dalla creazione della risposta. Nella prima usare i metodi 
alla "spock" cioe' un DB di conoscenze e la suddivisione dei vari 
concetti.. ( se ritrovo i miei disegnini vi dico come lo avevo pensato ) 
mentre nella risposta si dovrebbe unire le conoscenze e le eventuali 
deduzioni ad un sistema che generi frasi piu' "colloquiali", simulando 
eventualmente personalita'/stati d'animo differenti. 

 migliorare la qualità delle risposte del chatterbot.
Da pratico, i "potrebbe" mi piacciono poco. C'e' un metodo semplice per
verificarlo:  prendi un bot del tipo che dici tu, restringi di TANTISSIMO il
campo di cui deve parlare, e mettici dentro una BORDATA di conoscenze.
Dopodiche' se veramente la qualita' della sua conversazione migliora (ma
devi ancora definirmi in base a che metrica :-) scrivici sopra un articolo e
mandalo a una rivista scientifica / mettilo su web.
Quella e' "ricerca". Ipotesi, metodo, esperimento, risultato, deduzione.
Scrivere codice a muzzo sperando che venga fuori l'oracolo di usenet e' da
baggiani :P
Stefano

baggiani :P
io non voglio fare ricerca, e nemmeno fare a gara con te .
Chiariamo un punto: non ho intenzione di perdere tempo a litigare.
la mia intenzione era di conversare con persone interessate alla
realizzazione di chatterbot e a discutere sulle caratteristiche dei vari
chatterbot esistenti per discutere su quali strategie fino ad ora si sono
rivelate più afficaci e quali meno, e magari a scambiare codici o esempi
pratici ; Non era aprire una discussione sul fatto che i chatterbot siano
scientificamente rigorosi o meno, o se soddisfino la tua idea di come
dovrebbero essere realizzati (senza però averli presumibilmente mai
creati).
Se proprio non ti interessa l'argomento non sei obbligato a seguire questo
thread ( non credo tu sia fortemente interessato ai chatterbot nè che tu
crei programmi del genere).   
Non voglio essere scortese, semplicemente è una questione di gestione del
poco tempo a disposizione.
Posso anche condividere parte di quanto tu sostieni, penso che sarebbe un
interessante argomento per un altro thread. Non sono attualmente
interessato a polemiche sulla validità scientifica dei chatterbots, non
posseggo ancora un idea chiara di cosa tu ritieni sia o debba essere un
chatterbot (attendo eventualmente un tuo articolo su una rivista
scientifica e sul web) e attualmente ho pochissimo tempo da dedicare all
NG. Preferirei sfruttare tale tempo in modo più utile di una sterile
polemica con te su una questione (la scientificità/validità dei
chatterbot) che ho da sempre dichiarato di pochissimo interesse per me.
se invece hai del codice/ esempi pratici / MODELLI / suggerimenti tecnici 
pubblicali per favore.
ciao
MX  
p.s. evidentemente il mio tentativo di far partecipare molte persone ad
una discussione in questo NG ha avuto poco successo, spero che altri ci
riescano. :-) 


 ha scritto nel messaggio
news:MPG.1849c498f...@News.CIS.DFN.DE...


 chatterbot) che ho da sempre dichiarato di pochissimo interesse per me.
Probabilmente il problema e' che stai discutendo con me di una cosa di cui
io NON sto discutendo con te.
Sono dieci post che ti pongo una domanda semplice: COME - SI - MISURA -
L'EFFICACIA - DI - UN - CHATTERBOT.
Alternativamente: COSA - DEVE - FARE - UN - CHATTERBOT.
Ammetterai che finche' la tua risposta a queste domande e' "Non mi interessa
una discussione sulla validita' scientifica della ricerca dei chatterbot",
mi stai dando una risposta esattamente equivalente al seguente scambio di
battute:
"Che ore sono ?"
"Verde a pois gialli."
Stefano

 
Mi sa' che sei tu che devi dare dei consigli a me.. i miei risultati 
erano decisamente piu' scarsi di SAM. Quello che ho scritto e' quello che 
secondo me si potrebbe fare.. non quello che ho fatto.

 Alternativamente: COSA - DEVE - FARE - UN - CHATTERBOT.
Deve poter apprendere dall'utente e mantenere una conversazione non
fuorviante, ovvero fornire ad esso ciò che chiede.
Di certo un chatterbot "psicologo" (era la prima versione di Eliza per caso?
Ora ho un vuoto di memoria) che "rigira" l'input dell'utente non è un
chatterbot intelligente: non aggiunge nessun elemento a ciò che l'utente ha
detto.
In soldoni, il giorno che un chatterbot saprà rispondere almeno decentemente
alla maggioranza delle richieste dell'utente, non necessariamente partendo
da un enorme database.. beh, allora sarà il giorno che esce la nuova
versione di PCBrain... ehm no... ^_^ volevo dire: beh! allora quello sarà il
giorno in cui qualcuno avrà scritto qualcosa di un briciolo intelligente.
Imho

"Verde a pois gialli."
LOL
vediamo se ho capito, dialoghi del genere:
"parliamo di chatterbots..."
"non può funzionare..."
:-P
ciao
MX


 conversazione.
Scientificamente, il tuo praticamente e' accettabilissimo. Basta che tu
definisca efficacia. Efficacia, suppongo, significhera' significativita'
della conversazione, ovvero capacita' di trovare delle risposte a delle
domande, oppure di fornire le informazioni pertinenti all'argomento.
E' questo il tipo di definizione operativa che ho impiegato, solo, una
decina di post a farti tirare fuori. Yahu :-)
Adesso che (scientificamente) siamo arrivati a stabilire che il criterio su
cui basi la tua definizione di efficacia di chatterbot e' l'efficacia
percepita dall'utente della conversazione, ti propongo il quesito
successivo: cosa ti fa pensare che l'utilizzo di un DB di risposte _uguale_
con un maggior numero di CHIAVI per ogni risposta si traduca in una maggiore
efficacia percepita ?
Stefano

efficacia percepita ?
vedi altro messaggio  
ciao.
ti ringrazio per l'attenzione, anche se temo che il costo delle operazioni
di ricostruzione testicolare mi costeranno una fortuna ^_____^


 perchè ?
Perche' cosi' detta la grammatica italiana.
Ste