PDA

Visualizza versione completa : ieri notte ho partorito IRIS...


EcHo2K
13-06-2001, 11.02.32
qualke giorno fa c'era stato un post sul forum generale che parlava di intelligenza artificiale, e piu' precisamente di un software chiamato Eloisa.

Bene, credo di aver realizzato una cazzata del genere pure io, solo per divertimento:

http://www.hor-net.com/iris/

come funziona?

beh, attualmente e' molto scemo :D non e' un'intelligenza artificiale molto raffinata, per ora...

si appoggia su un database MySQL, il databse contiente 5 campi, ma solo 2 sono attualmente importanti:

ID
domanda (importante)
risposta (importante)
peso
valore

l'utente immette una domanda nella casella di input, tipo:

"ciao, come ti chaimi?"

la stringa viene elaborata, viene tolta tutta la punteggiatura e divisa parola per parola, in modo da avere delle "keywords". A questo punto viene fatta una ricerca per keywords nel database sul campo "domanda", il record che contiene il maggior numero di occorrenze e' probabilmente molto simile alla domanda che l'utente ha fatto al sistema, quindi possiamo dare con tranquilita' la risposta associata a quella domanda.
Ovviamente e' facile capire che il giochino funziona sempre meglio tanto piu' grande e' il dtabase, per questo motivo e' presente un campo in cui aggiungere coppie "domanda/risposta" se si ritiene che la risposta data da IRIS sia spagliata o insoddiffacente.

Se funziona bene in questa configurazione prevedo di far entrare in gioco anche il campo peso, che appunto da un "peso" diverso ad ogni coppia domanda/risposta e che va ad influire nel processo decisionale.

Il campo valore lo ho previsto per dare una sorta di "morale" al programma inserendo ad esempio 1 0 -1 possiamo esprimere tre valori tipo "positivo" "neutrale" o "negativo" quindi possiamo fare scegliere delle risposte che noi riteniamo positive e far sembrare IRIS + "ottimista" :)

comunque, per ora cerco di allrgare la sua base di conoscenza, poi la affineremo...

provate a farci 2 chiacchiere, ed aggiungete informazioni al db.

le informazioni si aggiungono nella forma: domanda senza il punto interrogativo - risposta cosi' come apparira' a video.

ps.
ci sono dei comandi speciali che riportano informazioni di sistema, ma ve li lascio scoprire :D povate a chiedere che ora e' ad esempio :D

Etabeta
13-06-2001, 14.21.35
quanto occupi?
che ore sono?
quanti anni hai? :D :D

molto bello....potrei avere i sorgenti? :)

EcHo2K
13-06-2001, 14.47.40
mi vergogno un po' perche' sono molto sporchi, pieni di righe di debug ed il software e' stato partorito dalle 18:30 alle 20, quindi non contiene tutti i controlli decisionali che vorrei (ed infatti spara una marea di cazzate...) mi dai un po' di tempo per affinarlo? poi ti do anche i sorgenti

BiOS
13-06-2001, 16.59.32
Molto carino :)

Rendimi partecipe di tutte le evoluzioni, che ste cose mi piacciono da morire! :p:)

LeleB
14-06-2001, 07.22.19
Mi renderesti partecipe anche a me del sorgente?
Fa quasi tenerezza!! :):)

Approposito, l'hai scritto in PHP?

EcHo2K
14-06-2001, 10.10.16
yes PHP

adesso funziona tipo "fuzzy logic" pero' non e' pienamente fuzzy, vedro' di rivederlo...poi pormetto che vi metto un link ai sorgenti (comunque il concetto non e' complicato...)

Etabeta
14-06-2001, 17.50.27
tnx, se mi fai avere i sorgenti te ne sarei molto grato.....magari insieme riusciamo a farla diventare ancora più...intelligente :D :D

EcHo2K
15-06-2001, 15.11.43
allora ora e' completamente fuzzy...

se la volete scaricare:

www.hor-net.com/iris/iris.tar.gz

tenete presente che NON ci sono help, il codice e' pieno di istruzioni di debug commentato poco e commentato male.

se ci capite bene altrimenti provate a scrivermi una linea...(traduzione libera da "drop me a line" :D)

buon hacking!

quipo.it
15-06-2001, 15.58.04
Ehi, questo thread mi era sfuggito...

Che figata! :cool:

Etabeta
15-06-2001, 19.12.29
bellina...più semplice del previsto ;)

LeleB
15-06-2001, 22.07.01
Sai, devo dire la verità, ho guardato il codice solo per vedere se ci capivo qualcosa, e mi rendo conto che di PHP non ne so veramente nulla!! :) (A parte ovviamente le solite istruzioni "stansard di programmazione")
Mi piacerebbe impararlo però....anche se ora ho troppe cose da studiare! :(
Bè, forse un giorno....

EcHo2K
15-06-2001, 23.48.10
bisognerebbe migliorare il parsing delle sentenze, dare piu' peso alloe parole che pesano di piu', come verbi, e soggetti...come posso fare? mi date una mano?

quipo.it
16-06-2001, 10.21.35
Mah... concettualmente penso che basti aggiungere un campo "ranking" al db, associato a ciascuna PAROLA (ma forse l'hai già fatto, non ho controllato i sorgenti...), e quindi scandire la frase secondo certi algoritmi che valutino la posizione e il tipo di parola. E' chiaro che la faccenda si fa più complicata perché devi creare un dizionario, e confrontare ogni volta la frase con il dizionario, però ora come ora non mi viene in mente nulla di più intelligente. Non mancherò di dirtelo se mi salterà nella cucuzza qualcosa di meglio... :)

PS: Complimenti per il nome del progetto: è davvero bellissimo!!! :D :D

Etabeta
16-06-2001, 10.29.25
hummm....c'è un problema.....molte frasi le considera come parole uniche...argh...aspè...mi spiego....ecco:
se in una frase c'è "qual'è" si incasina e non sa cosa rispondere...bisognerebbe impostare in modo che alcune parole non vengano considerate, ma solo la frase o nella sua interezza, o nell'ordine delle parole presentate ( es. qual'è il tuo creatore? -> "qual'è" scartato -> "il" scartato "tuo cratore" considerato, ma in rapporto al qual'è. se invece c'era come si chiama il tuo creatore, "tuo creatore" considerato in rapporto a "come si chiama" )
spero di essermi spiegato :)

quipo.it
16-06-2001, 11.18.02
Eta.... qual è si scrive SENZA apostrofo...!!! :D :D:D
Cmq sono d'accordo sul fatto che occorrano dei filtri ben fatti...

Etabeta
17-06-2001, 15.20.48
miiiiiiiinchia che gaffe!!!!! :D :D :D

Etabeta
17-06-2001, 15.23.00
haemm...suppongo echo che hai modificato qualcosa.....ma...come dire...male :D ;)
guarda:

> qual è il tuo cantante preferito
20 14 1.428571428571420 15 1.33333333333338 4 227 16 1.687529 21 1.380952380952427 16 1.687525 19 1.31578947368426 4 1.552 23 2.260869565217419 13 1.461538461538515 9 1.666666666666721 12 1.7517 12 1.416666666666721 14 1.522 16 1.37511 9 1.222222222222227 15 1.812 13 0.9230769230769225 22 1.136363636363614 12 1.166666666666717 10 1.718 10 1.838 24 1.583333333333336 20 1.826 14 1.857142857142945 26 1.730769230769229 18 1.611111111111126 13 219 7 2.714285714285747 30 1.566666666666749 25 1.9634 25 1.3669 49 1.408163265306119 10 1.944 31 1.419354838709722 19 1.157894736842122 19 1.157894736842122 19 1.157894736842163 51 1.23529411764718 5 1.621 16 1.312523 16 1.43759 10 0.914 9 1.555555555555636 24 1.556 36 1.555555555555635 22 1.590909090909169 48 1.437557 37 1.540540540540522 14 1.571428571428661 39 1.564102564102670 41 1.707317073170718 12 1.527 17 1.588235294117615 17 0.8823529411764754 31 1.74193548387119 10 1.925 27 0.9259259259259332 32 125 19 1.315789473684214 7 238 33 1.151515151515242 28 1.58 7 1.142857142857154 37 1.459459459459559 35 1.685714285714374 45 1.64444444444448 4 213 5 2.631 19 1.631578947368423 14 1.642857142857167 44 1.522727272727327 15 1.868 37 1.837837837837816 13 1.230769230769218 13 1.384615384615429 23 1.260869565217431 20 1.5524 21 1.142857142857125 17 1.470588235294130 22 1.363636363636410 6 1.666666666666741 21 1.95238095238156 34 1.647058823529435 23 1.521739130434814 8 1.758 6 1.333333333333322 13 1.692307692307720 15 1.333333333333310 12 0.8333333333333312 13 0.9230769230769227 22 1.227272727272731 18 1.722222222222240 26 1.538461538461536 21 1.714285714285722 11 225 19 1.315789473684210 7 1.428571428571426 14 1.857142857142942 28 1.516 9 1.777777777777825 15 1.666666666666763 32 1.9687563 32 1.9687531 19 1.631578947368428 17 1.647058823529422 19 1.157894736842122 19 1.157894736842122 19 1.15789473684219 7 1.285714285714312 7 1.714285714285719 12 1.583333333333312 9 1.333333333333331 21 1.476190476190547 28 1.678571428571422 14 1.571428571428634 16 2.1257 8 0.87519 11 1.727272727272741 32 1.2812516 9 1.777777777777841 24 1.708333333333316 10 1.619 11 1.727272727272722 12 1.833333333333314 11 1.272727272727310 7 1.428571428571427 19 1.421052631578934 20 1.727 19 1.421052631578927 19 1.421052631578911 5 2.210 7 1.428571428571420 8 2.524 22 1.090909090909111 6 1.833333333333311 9 1.222222222222227 19 1.42105263157899 11 0.818181818181827 4 1.7540 23 1.739130434782613 9 1.444444444444440 26 1.538461538461549 30 1.633333333333321 13 1.615384615384616 12 1.333333333333340 26 1.538461538461525 18 1.388888888888918 10 1.87 6 1.166666666666720 14 1.428571428571431 23 1.347826086956510 9 1.111111111111136 20 1.818 13 1.384615384615411 8 1.37518 14 1.285714285714343 29 1.482758620689738 22 1.727272727272744 27 1.629629629629613 9 1.444444444444456 38 1.473684210526318 10 1.819 11 1.727272727272711 8 1.37532 21 1.523809523809517 16 1.062560 40 1.540 30 1.333333333333335 26 1.346153846153824 11 2.181818181818226 19 1.3684210526316Array ( [139] => 1.2011244339814 [137] => 1.1708049129649 [63] => 1.148698354997 [108] => 1.1450860244618 [109] => 1.1450860244618 [130] => 1.1288813207302 [141] => 1.1288813207302 [126] => 1.1219551454462 [145] => 1.1184269147201 [146] => 1.1170340997937 [129] => 1.1155067001405 [116] => 1.1138241786029 [127] => 1.1130496130561 [134] => 1.1119615859386 [59] => 1.1081551679405 [111] => 1.1049479537965 [110] => 1.1028631314785 [128] => 1.0985605433061 [176] => 1.0981413039244 [117] => 1.096262279353 [58] => 1.0928615098679 [148] => 1.0899769870483 [99] => 1.0867348625261 [33] => 1.0841034551449 [119] => 1.0810069343078 [36] => 1.0800663412584 [71] => 1.0794384104845 [42] => 1.0781003753043 [104] => 1.0771134214327 [147] => 1.0763169225148 [132] => 1.0739409237858 [138] => 1.0739409237858 [46] => 1.0732519449906 [154] => 1.0730814825716 [159] => 1.0730814825716 [133] => 1.0728080721876 [135] => 1.0728080721876 [136] => 1.0728080721876 [143] => 1.0728080721876 [89] => 1.0694600495864 [96] => 1.0674086125363 [47] => 1.0670250160844 [98] => 1.0668171401596 [91] => 1.0651665495703 [87] => 1.0617080083238 [149] => 1.0606423869336 [44] => 1.0597837511796 [150] => 1.0592369279896 [118] => 1.0592238410488 [37] => 1.0576319385153 [70] => 1.0570180405614 [102] => 1.056421622299 [31] => 1.0553516473406 [86] => 1.0549822797257 [97] => 1.0530534061228 [152] => 1.0530534061228 [88] => 1.0516732439601 [115] => 1.0515474967973 [125] => 1.0508162391379 [76] => 1.0498918757622 [131] => 1.0494145228446 [75] => 1.0481460461387 [168] => 1.0481460461387 [164] => 1.0446934535627 [169] => 1.0446934535627 [43] => 1.0444698065139 [103] => 1.0437301648571 [156] => 1.0437301648571 [68] => 1.0426600109069 [35] => 1.0419295646887 [85] => 1.0417125586995 [142] => 1.0409503969693 [69] => 1.0405945247941 [73] => 1.0405141343037 [153] => 1.0402077866333 [72] => 1.039940872348 [165] => 1.0398414207023 [160] => 1.0398231889264 [161] => 1.0389540103241 [177] => 1.0383562220774 [34] => 1.0375873516809 [157] => 1.0364683931742 [175] => 1.0363139959562 [80] => 1.0356822563965 [90] => 1.0351246442509 [94] => 1.0351246442509 [151] => 1.0351246442509 [174] => 1.0351246442509 [41] => 1.0343874905709 [171] => 1.0342712549316 [74] => 1.0342124703118 [101] => 1.0334806957899 [173] => 1.0329690295863 [163] => 1.0320141135192 [167] => 1.0315074154302 [83] => 1.0313338850785 [162] => 1.0306170818024 [122] => 1.0306100125163 [166] => 1.0298549657856 [112] => 1.0297547785704 [113] => 1.0297547785704 [114] => 1.0297547785704 [78] => 1.0263756312085 [170] => 1.0258035928877 [84] => 1.0251227835692 [95] => 1.0248797918997 [38] => 1.0237338245559 [39] => 1.0237338245559 [40] => 1.0237338245559 [106] => 1.0232814443476 [64] => 1.0228292640427 [124] => 1.022102467252 [54] => 1.0216274827149 [120] => 1.0209338254975 [107] => 1.0206432083248 [49] => 1.0187457607377 [79] => 1.0187171392732 [56] => 1.0186772183169 [155] => 1.0186702309296 [52] => 1.0182438267797 [121] => 1.0182438267797 [53] => 1.0180535182708 [48] => 1.0178304071463 [140] => 1.0175545771756 [100] => 1.0174355900895 [77] => 1.0167498814236 [55] => 1.0163508398119 [65] => 1.0163508398119 [105] => 1.0163508398119 [67] => 1.0152375711546 [50] => 1.0146220917321 [158] => 1.0127235258237 [82] => 1.0107397731531 [66] => 1.005355545642 [172] => 1.0048617498853 [2] => 1 [3] => 1 [4] => 1 [5] => 1 [6] => 1 [12] => 1 [8] => 1 [9] => 1 [10] => 1 [11] => 1 [13] => 1 [14] => 1 [15] => 1 [16] => 1 [17] => 1 [18] => 1 [19] => 1 [20] => 1 [21] => 1 [22] => 1 [23] => 1 [24] => 1 [25] => 1 [26] => 1 [27] => 1 [28] => 1 [29] => 1 [32] => 1 [30] => 1 [61] => 1 [57] => 0.99500598604286 [123] => 0.99467298343836 [92] => 0.99044085695324 [60] => 0.98776173761051 [45] => 0.98328361313798 [93] => 0.97835901352406 [144] => 0.96066056837244 ) IRIS > yessssssss

che dici? :D

quipo.it
17-06-2001, 15.31.59
Propongo di lanciare un progetto tipo SETI@Home per captare i messaggi delle AI come IRIS... magari cerca di parlarci in un linguaggio tutto suo, siamo noi gli ignorantoni che non riusciamo a capirla... :D :D :D

Etabeta
18-06-2001, 09.22.38
:D :D :D

EcHo2K
18-06-2001, 17.03.49
eheh ci sto lavorando...ci sono tutte le righr di debug abilitate :D

comunque e' sotto pesante riscrittura, al solito i sorgenti ve li potete scaricare, li mettero' online appena avro' riscritto in maniera + leggibile e razionale il codice

EcHo2K
28-06-2001, 17.08.09
ritiro su il post per vedere se qualkuno ha qualke idea...

allora la vecchia IRIS era una falsissimamintelligenza artificiale in quanto l'unica cosa che faceva era un pattern match su due sentenze a cui aveva una risposta collegata che sputava fuori incoscientemente. questa non e' un AI, e' solo un ottimo motore di ricerca.

Io sto lavorando ad una nuova versione che dovrebbe funzionare piu' o meno in questo modo:

leggo una frase e creo un database di questo tipo:

frase= li gatto miagola

db=

parola | link | forza
il gatto 1
il miagola 0.5
gatto il -1
gatto miagola -1
miagola il -0.5
miagola gatto -1

cosi io insegno all'AI che gatto e miagola hanno un forte legame tra di loro, il si lega fortemente con gatto e miagola meno forte con il..etc...

se in teoria importo un testo lunghissimo io posso con buona approssimazione farlgi capire dei concetti.

il problema a questo punto sta nel ricercare le parole chiave, nonso se mi spiego, io chiedo :

cosa fa il gatto?

IRIS deve capire che la parola chiave e' gatto scartando "cosa fa il", un aiuto l'ho avuto da un'altra AI che si chiama MegaHal che utilizza un contatore delle parole ricorrenti per escluderle, cosa, come,il, lo ,la etc. sono tutte parole che ricorrono spesso in un testo, se io individuo queste parole e le metto in una lista di esclusione posso isolare le parole chiave sulle quali fare la ricerca per concetti.

Un altro problema sta nel fargli capire quali sono le parole su cui deve fare lo swap, ad esempio se dico:

il mio gatto e' nero

iris non deve capire questo, ma deve rispondere che

il tuo gatto e' nero

non so se mi sono spiegato...un metodo sarebbe quello di creare una lista di swap (esattamente come MegaHal) pero' non mi piace perche' non e' in grado di apprendere da sola quali sono queste parole...

insomma, io ho buttato le mie idee, se qualkuno ha proposte...

ralfone
30-06-2001, 01.31.03
Provate a guardare sto sito: http://www.spaceports.com/~sjlaven/
Ci sono vari programmi tipo iris, molti con il sorgente. Magari potete prendere qualche spunto... ;)