Newsgroup: it.comp.ia
Titolo: Che fine hanno fatto i progetti di questo ng?

De-Lurking engaged...
Salve Ragazzi
Seguivo questo ng anni fa' quando ero ancora un teenager...
Ora, un po' per studio un po' per interesse personale ho ricominciato.
Ma rispetto ad anni fa' mancano i progetti collettivi, quei bei
progetti nati da qualcuno che si svegliava una mattina sentendosi
particolarmente creativo e proponeva colossal del tipo "programma in
VB che impari a dominare il mondo" o qualcosa di simile...
Proviamo a far partire qualche progetto di questo genere:
irrealizzabile, o quasi, ma in fondo quello che importa e' il viaggio,
non il fine!
Prendete ad esempio il premio IgNobel:
cito dal sito (
http://www.improb.com/ig/ig-top.html
):
"Every Ig Nobel Prize winner has done something that first makes
people LAUGH, then makes them THINK."
Facciamo partire un progetto cosi'! 
Magari e' quello che serve a svegliare le menti nel NG!
ByEZ!
---   ---   ---   ---   ---   ---   ---   ---   ---   ---   ---   ---
A computer terminal is not some clunky old television with a
typewriter in front of it. It is an interface where the mind and body
can connect with the universe and move bits of it about. 
- Douglas Adams, Mostly Harmless-

Magari e' quello che serve a svegliare le menti nel NG!
E' un po' che stavo pensando la stessa cosa, da quando e' riiniziata
questa discussione sui chatterbot. Pensavo all'ottima idea di Augusto
Pucci (a proposito, che fine ha fatto?) degli esserini che imparano
evolvendosi. Idea da cui sono nati parecchi programmi, e anche uno mio
(ne approfitto per farmi pubblicita':
http://digilander.libero.it/darwinbots
, fra poco dovrei riuscire a
mettere online una versione molto migliore).
Tornando ai chatterbot, pensavo che sarebbe stata una buona idea
proporre una traccia chiara da seguire per costruirne uno. Una specie
di sfida lanciata al ng, insomma, come quella di Pucci.
Allora, la traccia e' questa. Scrivere un programma che sia in grado
di dialogare su un argomento specifico. Pero' non un argomento
statico, come una base di conoscenza o un insieme di relazioni fisse,
preprogrammate, su degli elementi. Piuttosto, dovrebbe essere in grado
di  parlare di qualche piccolo universo dal quale si possano ricavare
dei dati, senza un'indicazione specifica su quali debbano essere.
Ad esempio, se l'universo fosse un testo, dovrebbe essere in grado di
ricavare da se' gli elementi notevoli di esso: ad esempio, il fatto
che dopo un punto le lettere sono maiuscole, che ad ogni virgola segue
uno spazio, che e' formato da sequenze di caratteri separate da uno
spazio. Si dovrebbe poi poter insegnare al programma attraverso il
linguaggio che certi elementi ricorrenti hanno un nome. Ad esempio,
una volta stabilito che e' notevole il fatto che le sequenze di
caratteri siano separate da uno spazio (chiaramente qui lo spazio va
distinto _a priori_ dagli altri caratteri...) bisogna poter insegnare
che queste sequenze si chiamano 'parole'. Ecc. ecc.
Ok, questo del testo e' solo un esempio. Ad esempio preferirei, al
posto del testo, avere un piccolo universo in movimento, tipo una
simulazione di particelle fisiche con la gravita' e le collisioni,
oppure l'attivita' di lettura scrittura del SO sull'hd. Ma immagino
che sia piuttosto difficile anche solo riuscire ad ottenere un
risultato come quello che ho descritto.
La valutazione del chatterbot (che ormai sarebbe meglio chiamare AI
:)) dovrebbe essere fatta, all'opposto di quella del Loebner prize,
insistendo in profondita' su quell'unico argomento, magari
sottoponendo al programma dei problemi specifici, delle variazioni nei
dati di partenza (nell'universo, nel testo, ecc..) e chiedendo di
descriverle, o di impararne i nomi.
E' orribilmente complicato, lo so. Pero' a me pare un'idea decente, in
qualche misura fattibile. Deliro?
Ciao,
Anders

(ne approfitto per farmi pubblicita':
Eccomi qua... dopo qualche anno di assenza ho reinstallato di nuovo
Forte Frre Agent :-)
Diciamo che ho avuto una buona serie di giornate piene :-)
Augusto Pucci
http://www.neuraldaemon.com/pucci

 :))
In effetti hai proposto un tema molto ampio, ma molto bello. In particolare
vorrei sottolineare come uno dei nuclei fondamentali da analizzare sia
trovare ed implementare una base di conoscenze di potenza espressiva
adeguata, che possa al contempo essere usata da un motore inferenziale e da
un motore che costruisca risposte e dialoghi.
In buona sostanza, la tua  proposta fa entrare un attimo nell'ombra la
conversione tra base dei fatti e lingua umana, e si focalizza sul problema
di cui si stava dibattendo (un po' animosamente) qualche thread fa: qual e'
il rapporto tra i vantaggi derivanti da una forte struttura logica e di
ragionamento sulla base dei dati, rispetto al vantaggio dato da una analisi
forte delle componenti di comunicazione in linguaggio naturale ?
Ovviamente i due aspetti sono complementari, ma nella tua proposta vengono
disaccoppiati molto bene. Bravo :)
Stefano

 ha scritto nel messaggio
news:3df126c4...@news.virgilio.it...


 dei dati, senza un'indicazione specifica su quali debbano essere.
Shrdlu? 
http://hci.stanford.edu/~winograd/shrdlu/
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun

disaccoppiati molto bene. Bravo :)
Beh, se vuoi arruolarti anche tu... :))
La mia idea in realta' e' piu' precisa di come l'ho esposta, ma non
volevo stringere troppo la traccia (altrimenti, chiedo a qualcuno di
sviluppare la mia idea, e festa finita). Il fatto e' che io non
distinguerei tanto tra le due cose, struttura logica (ma preferirei
evitare il terimne "logica" che imho, quando si parla di intelligenza,
e' parecchio fuorviante) e comunicazione in linguaggio naturale.
Se io dico che un sasso cade, sto traducendo un evento in linguaggio;
se invece mi dicono che un sasso cade, per "capire" (o _nel_ capire)
traduco il linguaggio nella rappresentazione di un evento. Ho
l'impressione che fra questi due processi ci sia una simmetria, non
credi? 
Ciao,
Anders

Diciamo che ho avuto una buona serie di giornate piene :-)
Bentornato! Spero che tornerai a contribuire a questo ng che senza di
te era un po' smorto :) Hai abbandonato i chatterbot? Non ne vedo
menzione sul tuo sito... 
Ciao,
Anders

 credi?
Assolutamente si'. Anzi, stanno direi nello stesso "livello": quello di
rappresentazioni del mondo fisico, una rappresentazione interna (idea) e una
rappresentazione esterna. Il problema e' che nel passaggio si aggiunge un
po' di nebulosita', di solito :)
Ste

Shrdlu? 
http://hci.stanford.edu/~winograd/shrdlu/
Lo conosco (e l'ho anche scaricato qualche tempo fa, ma
l'implementazione Java e' come al solito una schifezza.. :)).
Stando ad Hofstadter, comunque, nessuno e' mai riuscito a riapplicare
SHRDLU ad altri universi. Se non sbaglio la conoscenza dell'universo
e' strettamente codificata nel programma, quindi cambiare contesto
significherebbe riscrivere il programma da capo.
Comunque si', l'idea e' quella. Solo che vorrei che l'ambiente fosse
intercambiabile, almeno in linea teorica (cioe' non dico che i
programmi partecipanti al'epica tenzone che ho indetto debbano
prevedere esplicitamente la possibilita', ma se nel programma c'e' la
sub CercaPiramide(...) mi pare che questa possibilita' si escluda.. :)
Ho riletto adesso le pagine di Hofstadter su SHRDLU, e soprattutto il
dialogo di esempio. Devo dire che non lo ricordavo cosi'
straordinariamente comlesso (la versione scaricabile dal sito e'
lentissima, si pianta, non riconosce molte parole, o forse e' il mio
inglese ad essere irriconoscibile...).
Comunque, sono alla ricerca di un risultato _di quel tipo_ (non allo
stesso livello) su una generalita' di ambienti, possibilmente meno
statici del mondo dei blocchi.
Ciao,
Anders

 significherebbe riscrivere il programma da capo.
Tende ad essere il problema di quel tipo di approcci.
"delimita il dominio" e' facile a dirsi, ma all'atto pratico o le 
delimitazioni sono strettissime - tali da rendere il dominio del tutto 
banale - o la complessita' sale molto velocemente. 
Winograd riusci' a costruire un mondo ragionevolmente complesso (ma appunto 
comunque estremamente semplice) a patto di fare hard-coding di regole. Se 
vuoi usare un approccio semantico, e magari aggiungere metacapacita' come 
l'apprendimento (o la pluggabilita' del dominio), ti trovi a dover definire 
("bene", nel senso di operazionalmente utile) come definire il dominio, che 
non e' cosi' immediato. E - oltre a questo - quasi sempre ti serve 
metaconoscenza sul linguaggio, e uno dei problemi e che non si sa bene 
quale sia la forma espressiva (o anche la teoria) migliore per _quel_ tipo 
di genericita' applicativa. 
L'unica cosa che appare evidente cinque minuti dopo aver cominciato a 
provare e' che le grammatiche servono a poco, e che la metaconoscenza sul 
linguaggi tende ad essere non poco ingarbugliata con quella sul dominio che 
il linguaggio vuole denotare. 
Non che non sia divertente provare, intendiamoci. :)
Per esempio, una bella pensata andrebbe fatta su quali siano le modalita' 
di accesso e gli entry point di una knowledge base - e probabilmente ne 
servono piu' d'uno. Cio', a sua volta, dipende fortemente da come sono 
modellate idee e relazioni, e dalla non banale constatazione che anche 
"relazione" *e'* un'idea. Ho la sensazione che - grattando grattando - qui 
si potrebbe trovare qualcosa - un meccanismo che permettesse la 
rappresentazione omogenea (e magari pure efficiente ;-) o la conversione 
istantanea tra i due punti di vista sarebbe terribilmente utile. Magari 
esiste gia', e non lo so: ahime', non mi occupo piu' di 'ste cose da anni.
Tutto questo, volendo usare un approccio reticolare - alla fine della fiera 
e' la vecchia promessa delle "ontologie". Il solito Cyc mi pare il 
tentativo piu' grosso fatto finora in quella direzione.
L'altro approccio, ovviamente, e' quello "soft" - in cui la 
rappresentazione e' sostanzialmente irrilevante ed automaticamente 
stabilita dal sistema sopra un'infrastruttura meta-rappresentativa e come 
risultato di un processo. Non sono sufficientemente aggiornato sui 
progressi in machine learning indipendente dal contesto con tecniche "soft" 
per dire qualcosa di sensato in proposito. Ho la vaga impressione che possa 
servire un misto delle due cose per avere implementazioni sufficientemente 
efficienti.
Lascerei perdere le tecniche di analisi superficiale, il meglio che si puo' 
fare con quelle mi pare abbondantemente gia' fatto, come dimostrano le 
centinaia di chatterbot tutti uguali che ci sono in giro.


menzione sul tuo sito... 
Bhe non mi sono occupato molto di chatter-bot ultimamente... mi sono
maggiormente interessato all'applicazione di tecniche (alcune tipiche
dell'IA altre no) al campo dell'information retrieval e più in
generale alla gestione di grandi basi dati non-strutturate, in
particolare ho dedicato gli ultimi mesi al problema della detection di
duplicati e semi-duplicati in ampie basi documentali di pagine web.
Augusto Pucci
http://www.neuraldaemon.com/pucci

risultato di un processo.
E' la mia idea.
Ciao,
Anders