Newsgroup: it.comp.ia
Titolo: [lungo]chatterbot e database

chatterbots e database
indico qui alcune considerazioni su tale argomento :
perchè IMHO è importante, con un chatterbot come alicebot, avere un
database molto esteso?
perchè utilizza sostanzialmente il pattern matching unito al principio del
riduzionismo (molte frasi hanno lo stesso significato, se il chatterbot
riesce ad accorgersene usando keywords per ciascuna frase equivalente può
infine restituire lo stesso output, riuscendo a rispondere in modo
corretto a formulazioni diverse dello stesso concetto: es.  "sei
italiano?/sei nato in italia?/la tua nazionalità è italiana?/è vero che
sei italiano?" ecc.  risposta (ev. più di una, per evitare monotonia)
:"si, sono italiano" o qualunque altra risposta ad hoc)
dato un argomento ristretto (es. le biciclette) , quante possono essere le
domande o affermazioni statisticamente più frequenti sull'agomento, senza
contare le formulazioni equivalenti di tali domande/affermazioni ?  1000?
10.000? 100.000 ?
e mediamente quante possono essere le formulazioni equivalenti per ciascun
input? 5, 10 ?
con la tecnologia attuale un database di 1 milione di records non è poi
così incredibile.
un chatterbot che sia in grado di rispondere coerentemente sull'argomento
"biciclette" , diciamo, il 98% delle volte ( e dare risposte di default
"sincere": es. <<non so/ prova a riformulare la domanda/uh?>> ) IMHO
sarebbe  un ottimo risultato. Voi che ne dite?
nel caso del gioco degli scacchi, è possibile realizzare programmi di
tanti tipi diversi in grado di giocare. 
uno di questi approcci , correggetemi se sbaglio, è semplicemente
sfruttare la "forza bruta" di un calcolatore per valutare tutte le
possibili mosse ( fino ad un certo limitato numero di mosse future) per
poi con algoritmi relativamente facili scegliere la mossa da fare. Può
essere poco creativo,e  poco soddisfacente per un programmatore, ma è
comunque un metodo che funziona abbastanza bene.  
Non ho la minima idea di come funzionino gli algoritmi di gioco di Deep
Blue, ma temo anche nel suo caso  non ci sia moltissimo in più rispetto a
questa logica di base, non credo per es. che usi enormi reti neurali,
ovvimanete posso sbagliarmi  :-)
nel caso di un chatterbot, si può cercare di applicare (o inventare)
qualche teoria semantico/linguistica in forma di algoritmo nel tentativo
di capire il significato dell'input ( l'algoritmo che conosce ed applica
le regole per la comprensione del linguaggio umano) , e una volta "capito"
ciò che l'utente chiede/sostiene  reagire di conseguenza, magari
rispondendo senza usare frasi precostiruite, ma avvalendosi di una
perfetta padronanza di grammatica/semantica naturale elaborare una
risposta sul momento, più o meno come -probabilmente- fa qualunque essere
umano.
Purtroppo,  per adesso non mi risulta che esistano chatterbots in grado di
fare tutto questo (se li conoscete fatemelo sapere!).
spero che qualcuno ci riesca, per adesso io preferirei  realizzare
qualcosa con le tecnologie già collaudate. 
Alicebot IMHO è attualmente il chatterbot più promettente ed efficace pur
basandosi sostanzialmente sulla "forza bruta"  (AIML + pattern matching) 
e questo sulla base dei parametri di valutazione classici sull'argomento (
giudizio medio degli utenti umani ).
Se fosse possibile (come lo è ) programmare un clone di Alice in grado di
contenere keywords/risposte  dedicate ad un unico argomento è verosimile
(non lo posso dimostrare matematicamente, dovrei mettermi a fare test
statistici, e collaudi con campioni di utenti statisticamente rilevanti) 
che riesca di conseguenza a reagire in modo coerente alla maggiorparte
degli input correlati a tale argomento. Il tutto mediante la "forza bruta"
computazionale. Infatti l'universo delle frasi poste ad un chatterbot
(persino quelli generici) pare che sia ragionevolmente limitato, nulla a
che vedere con problemi NP.
se tutto ciò vi sembra ragionevole in futuro paserò a definire meglio
l'idea che ho in mente e i problemi che ci sono sulla sua implementazione.
tempo permettendo ovv.
ciao
MX                   
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 che vedere con problemi NP.
A parte che non capisco l'accenno alla NP-complessita', gia' provare a
dimostrare o mostrare che l'universo di tali frasi sia ragionevolmente
limitato non sarebbe una cattiva ricerca :-)
Per esempio sono sicuro che esistano dei log di cio' che gli utenti chiedono
ad alice via web.
Stefano


No, oltre che pessimo è anche impossibile per le capacità di calcolo dei
calcolatori moderni.
O meglio, impiegherebbe centinaia e centinaia di anni per provare tutte le
mosse o soluzioni disponibili!!

 mosse o soluzioni disponibili!!
Gia', l'unica soluzione e' limitare le porzioni di spazio delle soluzione
esplorate a quelle piu' promettenti, come dicevo :P
Ste


Quindi utilizzare regole euristiche che permettono di limitare le soluzioni.
Sarebbe meglio dire, invece che "limitare le soluzioni possibili", "provare
le soluzioni (o mosse) più promettenti".

ad alice via web.
certo, e non solo i suoi.
scusa, ma adesso non trovo la fonte esatta  [non ho tempo per
scartabellare più di tanto :-(  ] ma sono state fatte delle osservazioni
proprio in base a log di chatterbots ed è stato notato che sono 9 gli
argomenti più trattati dagli utenti chattatori... (  se ricordo bene, sono
le cose che abitualmente si chiedono o di cui si parla in una
conversazione casuale con qualcuno di appena conosciuto)
Bye


 argomenti più trattati dagli utenti chattatori...
Ottimo. Sono sicuro che se si procedesse ad una analisi sintattica si
scoprirebbe, tra le altre cose, che a prescindere dall'argomento ed
eliminando lo slang la struttura delle frasi e' sempre la stessa. Se andate
a fare un giro su IRCnet ve ne rendete conto da soli :P
Questo potrebbe essere un approccio per ridurre il problema del
polimorfismo, senza provare a  mettere ogni possibile chiave per ogni
risposta.
Ste


che č esattamente quello che il GPS non č in grado di fare.
sorpresa!
sei arrivato all'uscita del labirinto. ;)
ciao

sta chiedendo ma in base alla verosimiglianza della conversazione. Ok.
scusa se cito me stesso: "personalmente (per i chatterbot) mi accontento
della percezione personale.... o volendo estendere il concetto sulla
percezione media di eventuali chattatori umani (la statistica)."
.e anche Turing del resto.....
ciao


 della percezione personale....
E' sul "cosa" debbano percepire questi umani che hai cambiato idea :)
Stefano

E' sul "cosa" debbano percepire questi umani che hai cambiato idea :)
veramente? dove? quando?
se un chatterbot risponde a tono (es. "che ore sono?" "sono le ....". 
"Come ti chiami?" "mi chiamo...") è di norma percepito come più credibile
come interlocutore.
nel mio primo post avevo citato alcuni metodi usati dai chaterbots più
comuni, per es. i "creativi" di solito sfornano frasi poco credibili ("che
ore sono?" " la polenta sogna i prati" ). queste risposte prive di senso
comune potrebbero essere anche volutamente inserite in un DB per
patternmatching, ma solitamente un programmatore tende a inserire risposte
che abbiano un senso. Nel caso quindi di un "pattern matching chatterbot"
la percentuale di keywords riconosciute aumenta la percentuale di risposte
previste dal programmatore ( che normalmente cercherà di inserire frasi
credibili)  che quindi portano l'interlocutore umano a percepire come più
"verosimile" la risposta e quindi la conversazione.
alla lunga,  un problema che subentra (con tutti i tipi di chatterbots) è
la coerenza di un intero dialogo (non del semplice botta e risposta) , e
sono stati presentati vari metodi per diminuire questo difetto.
una soluzione veramente efficace a questo ultimo problema , temo potrà
essere trovata solo dopo aver creato un chatterbot della prossima
generazione (quelli che proponi tu) ....per adesso però......
ciao
MX
p.s.  intanto alla domanda : "Secondo te è migliore Alicebots rispetto a
ELIZA?" non vuoi ancora rispondere :-P 


 ELIZA?" non vuoi ancora rispondere :-P
Non ho risposto ? Soggettivamente direi di si', per il metodo oggettivo...
c'e' nella classifica del premio che hai citato ? ;-)
Stefano