Ho scritto un programma di conversazione automatica...

Moderators: gabrielilardi, forart, Davy Bartoloni

User avatar
Davy Bartoloni
Posts: 1483
Joined: Wed Jan 04, 2006 11:31 pm
Location: Cuneo
Contact:

Ho scritto un programma di conversazione automatica...

Post by Davy Bartoloni »

volevo diventasse un applicazione standard di Reactos (naturalmente puo' essere istruito in qualsiasi lingua.. anche inventata, o numerica...) ,

fornendo il sorgente naturalmente, ma provando su 3 o 4 macchine non sono riuscito ad avviare nulla...

Uno screen nuovo.. ,
[ external image ]

se cmq qualcuno volesse provare a fare un progetto parallelo, sono a disposizione per qualsiasi cosa. :)

le uniche cose richieste dal linguaggio di programmazione,
e la possibilita' di gestire ARRAY e PUNTATORI.. altro non serve..

cmq, per chi ne volesse provare una version eun po' piu' vecchia su reactos... ecco il link.. .

http://www.wcn.it/programma di intelligenza artificiale.zip

ha degli spazi, quindi incollatelo nel Browser...

SIID - SImulatore IDee - Programma di IA che sfrutta reti neurali multiple gestite da puntatori e sub-strati , gestite in maniera dinamica.

User avatar
Davy Bartoloni
Posts: 1483
Joined: Wed Jan 04, 2006 11:31 pm
Location: Cuneo
Contact:

Post by Davy Bartoloni »

perfetto, elenco qua'0 di seguito il sistema che ho utilizzato, cosi' saltiamo un po di passaggi di presentazione, e se qualcuno volesse discuterne...

Siid, non e' legato ad una lingua particolare (se lo si volesse istruire con una lingua)

ci si possono buttare dentro informazioni anche puramente tecniche.. numeri, formule.. boh... qualcunque cosa...

per riuscire finalmente a combianare qualcosa,.. e smettere di inseguire strani percorsi tortuosi nei finti-neuroni, ho pensato, di creare per prima cosa un "IDEA".. ovvero, immaginate, una rete neurale piatta , contenente tutte el connessioni...

creando un altipiano, in cui vengono raggruppate le informazioni che servono... .. una volta "viste" queste informazioni, sopra quest'altipiano, vengono cerate delle sub_reti, (dinamiche, !!! quindi, possono cambiare forma durante l'elaborazione)..
ne viene creata una per ogni concetto (ritenuto fondamentale ai termini dell'elebaorazione) ..

quando le reti sono completate, vengono interconnessi i nodi, che hanno piu' similarita'.... creando una struttura tridimensionale... .

dopodiche ' vengono "potate" le parti piu' estreme di questo "CUBO"...

i vari percorsi creati in questa rete 3D, vengono confrontati con la rete piatta iniziale (quella piu' vasta, la pianura + altipiano per intenderci)..

e a questo punto, attraverso, qualche regola (per esempio in SIID, utilizzo qualcosa di simile alla grammatica italiana)... il risultato viene ulteriormente raffinato...

e... alla fine .. combacia con quello previsto....

posto uno screenshot, del giorno in cui ho insegnato le tabelline...
Last edited by Davy Bartoloni on Sat Jul 22, 2006 9:55 am, edited 1 time in total.

User avatar
Davy Bartoloni
Posts: 1483
Joined: Wed Jan 04, 2006 11:31 pm
Location: Cuneo
Contact:

Post by Davy Bartoloni »


User avatar
Davy Bartoloni
Posts: 1483
Joined: Wed Jan 04, 2006 11:31 pm
Location: Cuneo
Contact:

Post by Davy Bartoloni »


ekerazha
Posts: 11
Joined: Sun Jul 23, 2006 12:55 pm
Contact:

Post by ekerazha »

Sembrerà paradossale ma mi sono registrato a questo forum solo per questo tuo thread ;)

Il "progettino" mi sembra molto affascinante, se mi lasci via messaggio privato la tua email mi piacerebbe parlare con te di questo tuo programma.

Vedo che usi una virgola (,) per fare capire al programma che ti stai riferendo alla "parola chiave" della sua frase... per rendere il tutto più naturale secondo te non sarebbe più carino se il programma riconoscesse automaticamente i vari riferimenti (senza doverli esplicitare con la virgola)?

ekerazha
Posts: 11
Joined: Sun Jul 23, 2006 12:55 pm
Contact:

Post by ekerazha »

Volevo provare su Windows la versione che hai linkato ma quando avvio il programma, si freeza, comincia ad occupare un casino di memoria (circa 175 MB) e poi dopo qualche minuto va in crash :(

ekerazha
Posts: 11
Joined: Sun Jul 23, 2006 12:55 pm
Contact:

Post by ekerazha »

ekerazha wrote:Volevo provare su Windows la versione che hai linkato ma quando avvio il programma, si freeza, comincia ad occupare un casino di memoria (circa 175 MB) e poi dopo qualche minuto va in crash :(
Risolto il problema del crash (non copiavo la cartella in C: :wink: ).

Ho provato a giocare un po' col programma... secondo me anzichè chiedere troppo spesso all'utente di formulare frasi contenenti le varie parole, dovresti integrare un piccolo parser HTML ed interfacciarlo ad esempio con Google: così quando il programma ha bisogno di "apprendere" lo può fare in modo quasi autonomo... diciamo che Google sarebbe la "vita sociale" del programma (piccolo consiglio... non iniziare a parsare dalle prime voci perchè spesso cotengono solo marchi, nomi di aziende o roba simile... devi cercare di mirare a cose "discorsive"), non so se hai capito ;)

Magari quando si interagisce con lui puoi fare in modo che faccia una ricerca limitata (in modo che non impieghi troppo tempo) e poi a tempo perso puoi mandarlo "a spasso" in modo che cerchi maggiori informazioni sui vari termini... proprio una sorta di emulazione di vita sociale diciamo.

ekerazha
Posts: 11
Joined: Sun Jul 23, 2006 12:55 pm
Contact:

Post by ekerazha »

ekerazha wrote: Ho provato a giocare un po' col programma... secondo me anzichè chiedere troppo spesso all'utente di formulare frasi contenenti le varie parole, dovresti integrare un piccolo parser HTML ed interfacciarlo ad esempio con Google: così quando il programma ha bisogno di "apprendere" lo può fare in modo quasi autonomo... diciamo che Google sarebbe la "vita sociale" del programma (piccolo consiglio... non iniziare a parsare dalle prime voci perchè spesso cotengono solo marchi, nomi di aziende o roba simile... devi cercare di mirare a cose "discorsive"), non so se hai capito ;)
Anzichè Google potresti provare con http://www.demauroparavia.it il dizionario online

User avatar
Davy Bartoloni
Posts: 1483
Joined: Wed Jan 04, 2006 11:31 pm
Location: Cuneo
Contact:

Post by Davy Bartoloni »

Ciao Davy,
ho risposto al tuo thread (
http://www.reactos.org/forum/viewtopic.php?t=2536 ) e ti ho anche
inviato un messaggio privato.

Breve presentazione... mi chiamo Manuel ho 20 anni e sono studente
(anche se lo studente dovrebbe studiare eh eh) di Ing. Informatica.
Programmo da quando avevo 13 anni, me la cavo abbastanza bene con
Pascal/Delphi e C, mastico Assembly e C# e ho qualche base di Java e
Visual Basic.

Oltre alle cose che ti ho già detto nel thread volevo chiederti se i
sorgenti del tuo programma erano liberamente disponibili, perchè sono
molto affascinato dal tuo progetto e mi piacerebbe collaborare solo che
non conosco molto di AI e quindi iniziare un progetto da 0 sarebbe per
me abbastanza difficile. Avendo a disposizione i sorgenti convertirei
probabilmente il programma in linguaggio C# (che poi con Mono gira anche
su Linux, Solaris, Mac etc.), che mi piace molto come linguaggio. Dovrei
però vedere se fosse tecnicamente fattibile una tale conversione:
probabilmente oltre ad una mera conversione proverei ad utilizzare
strutture diverse che mi vengono fornite dal linguaggio di
programmazione... ad esempio invece di puntatori di puntatori di
puntatori etc. si potrebbero avere hash-table di struct contenenti a
loro volta informazioni più altre hash-table, poi l'utilizzo della
programmazione ad oggetti potrebbe dare un po' di "ordine" alla
struttura del codice e probabilmente utilizzarei anche il
multi-threading per rendere il programma più fluido (es. ho visto che
quando "pensa" l'interfaccia si freeza etc. questi ed altri problemi
potrebbero essere risolti attraverso l'utilizzo del multi-threading).

Fammi sapere... ciao :-)




Ciao, ti ho mandato una versione un po piu' recente di SIID per mail..
il fattoi e' che l'interfaccia grafica, non appena il rpogramma funzionera' decentemnte, verra' tolta, il risultato finale e' di certo gestito solo con la voce... la sintesi vocale e' gia' ultimata, per il riconoscimento vocale, invece sono, guiai, anche utilizzando programmi in vendita che costano un capitale i risultati sono penosi, il riconsocimento con microfoni ambientali e' una catastrofe!....

in ogni caso le verisoni precedenti di questi programmi, non avevano parser, e neppure intrfaccia grafica, per quanto riguard il linguaggi odi programmazione,

basta che possa utilizzare ARRAy e PUNTATORI (tutti quindi)... il codice, lo sto' preparando ripultio.. , i comandi piu' utilkizzati

sono IF - e FOR... per il resto , sono solo abbellimenti..
ti ringrazio tantissimo, per la tua mail ne sto ricevendo tante in questo periodo, e sto facendo un sacco di passi avanti..

per quanto riguarda , ricompilare siid, diciamo, che sarebbe megli scriverne una nuova versione. ._:) e' molto piu' utile..

Ciao e ' buon lavoro.

ekerazha
Posts: 11
Joined: Sun Jul 23, 2006 12:55 pm
Contact:

Post by ekerazha »

Davy Bartoloni wrote:il codice, lo sto' preparando ripultio.. , i comandi piu' utilkizzati

sono IF - e FOR... per il resto , sono solo abbellimenti..
ti ringrazio tantissimo, per la tua mail ne sto ricevendo tante in questo periodo, e sto facendo un sacco di passi avanti..

per quanto riguarda , ricompilare siid, diciamo, che sarebbe megli scriverne una nuova versione. ._:) e' molto piu' utile..

Ciao e ' buon lavoro.
Ma quindi una volta "ripulito il codice" sarà disponibile pubblicamente (il codice)? Per vedere come funziona.

User avatar
Davy Bartoloni
Posts: 1483
Joined: Wed Jan 04, 2006 11:31 pm
Location: Cuneo
Contact:

Post by Davy Bartoloni »

si, ma e' una follia cmq, partire dalla base di un programma, e' tempo perso... considera che SIID e' di circa 1500 linee... neppure io, ho piu' boglia, di rileggere alcune parti del codice... mi affido ad un quaderno degli appunti... se perdesso quel quaderno, al posto di fare un Upgrade di SIID, lo riscriverei.... (e sicuramente uscirebbe meglio. :) )

per esempio, una funzione, che ho aggiunto nell'ultimo mese, e' il motore di risoluzione sinonimi, che sembra una mega cazzata, ma ha portato le risposte piu' attendibili a q uasi il doppio.. (rallentando di 4 volte la velocita' del programm purtroppo..)

ekerazha
Posts: 11
Joined: Sun Jul 23, 2006 12:55 pm
Contact:

Post by ekerazha »

Davy Bartoloni wrote:si, ma e' una follia cmq, partire dalla base di un programma, e' tempo perso... considera che SIID e' di circa 1500 linee... neppure io, ho piu' boglia, di rileggere alcune parti del codice... mi affido ad un quaderno degli appunti... se perdesso quel quaderno, al posto di fare un Upgrade di SIID, lo riscriverei.... (e sicuramente uscirebbe meglio. :) )

per esempio, una funzione, che ho aggiunto nell'ultimo mese, e' il motore di risoluzione sinonimi, che sembra una mega cazzata, ma ha portato le risposte piu' attendibili a q uasi il doppio.. (rallentando di 4 volte la velocita' del programm purtroppo..)
Si si ho capito... sarebbe per avere un'idea di come hai gestito determinate cose... ad esempio come fargli apprendere la sintassi del linguaggio naturale in modo che le risposte abbiano senso compiuto.

User avatar
Davy Bartoloni
Posts: 1483
Joined: Wed Jan 04, 2006 11:31 pm
Location: Cuneo
Contact:

Post by Davy Bartoloni »

ecco il punto!, e sei il primo che fa questa domanda...( il topic di SIID e' aperto di 5 forum legati alal programmazione)

io, non ho insegnato la grammatica a SIID... e per quello che le cose le puoi scrivere in inglese, turko (???) , albanese o Veneto...

la grammatica, SIID la prende dalle affermazioni fatte dalle persone, quindi riscontri di parole inglese , vuol dire attingere a frasi Inglesi...

con questo sistema, la risposta contiene degli argomenti fondamentali (le risposte) piu' degli argomenti irrilevanti (la particelle, verbi ausiliari, articoli...)

che e' vero che possono far cambiare il senso alla frase, ma e' altrettanto vero, che se uno fa una domanda "mongoletta", tipo il modo di parlare del medio evo... e' giusto che la risposta sia altrettanto "mongoletta"

in ogni caso, la riposta reale del programma (senza grammatica) e' quella scritta in piccolo, e quella attingendo la grammatica e' quella in grande (quella che viene riprodotta dalla sintesi, se attiva)

ekerazha
Posts: 11
Joined: Sun Jul 23, 2006 12:55 pm
Contact:

Post by ekerazha »

Ma quindi come gestisci il significato delle varie parole?

Mi spiego... se io gli dico:

LA FRAGOLA E' ROSSA

Lui mi dice

DIMMI UNA FRASE CON <FRAGOLA>

io rispondo

OGGI HO MANGIATO UNA FRAGOLA

poi mi chiede

MI PUOI DIRE COSA E' FRAGOLA

io rispondo

, UN FRUTTO

A questo punto può capire (e se si come) che "fragola" era l'oggetto del discorso e non altro? Cioè... se io gli dico "LA FRAGOLA E' ROSSA" lui come fa a sapere che ROSSA è "FRAGOLA" e non "LA" o "E'"? Non so se hai capito...

User avatar
Davy Bartoloni
Posts: 1483
Joined: Wed Jan 04, 2006 11:31 pm
Location: Cuneo
Contact:

Post by Davy Bartoloni »

Quello e' il compito del "risolutore sinonimi",
questa parte del programma, cerca di identificare le categorie a cui appartengono le parole (senza pero' comprenderne il significato)

le uniche eccezioni, che ho dovuto scrivere a mano (anche se sarebbe cmq possibile farle isnerire dall'utente) sono i VERBI AUSILIARI, che in italiano sono i piu' diversi, dalla lunghezza, e dalle lettere molto variabili.. per questi non ho trovato una soluzione migliore.




per ricevere il sorgente di SIID 0-7-5: siid@3nt.net
per ricevere SIID 0-7-8: siid@3nt.net (non mail di Gmail)

per qualcunque domanda, sulla versioen del 2008 sono a disposizione. :)

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest