Gambas-it

Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: Will32 - 14 Febbraio 2010, 19:30:49

Titolo: [RISOLTO] Chatterbot ALICE
Inserito da: Will32 - 14 Febbraio 2010, 19:30:49
Ciao.

Ho scritto questo :
Codice: [Seleziona]
  DIM utente AS String
  DIM alice AS String
  DIM hfile AS File
  
  utente = TextBox1.text
  
  hfile = OPEN User.Home &/ "Memoria.txt" FOR CREATE
  
  IF utente = "ciao" THEN
  TextBox2.text = "Ciao anche a te !"
  alice = TextBox2.Text
  hfile.Save(User.Home &/ "Memoria.txt", utente & "  " & alice)
  END IF

In pratica, se l'utente scrive ciao nella textbox1, nella textbox2 il programma scrive Ciao anche a te e salva le due stringhe in un file di testo.

Ecco il problema => se io, la prossima volta che apro il programma e scrivo ciao, esso va a cercare nel file la risposta di ciao ( che è Ciao anche a te ) e non me la scrive più sul file.
Così si crea una specie di dizionario di frasi.

Un aiutino, grazie !  ;D
Titolo: Re: Chatterbot ALICE
Inserito da: Ceskho - 14 Febbraio 2010, 19:33:03
In pratica vuoi che il programma cerchi nel file la prima parola e come risposta dia la seconda?

[Mi risulta sempre pi difficile capirti.... :P]
Titolo: Re: Chatterbot ALICE
Inserito da: Will32 - 14 Febbraio 2010, 20:30:51
Ti faccio un esempio :


>> io scrivo ciao ed il programma, nel file, scrive una risposta per ciao
>> scrivo sono will32 e il programma scrive, nel file , una risposta per sono will32
>> chiudo il programma
<< lo riapro
<< scrivo ancora  ciao e, il programma, va a vedere nel file la risposta a ciao e la scrive nella textbox2
<< scrivo ancora sono will32 e, il programma, va a cercare la rispaosta a sono will32 e la scrive nella textbox2


Capito ?  ;D

Così, si forma un dizionario di frasi con domanda e risposta !
Titolo: Re: Chatterbot ALICE
Inserito da: Ceskho - 14 Febbraio 2010, 20:34:36
Capito ?  ;D

No. Se il programma fa questa cosa la prima volta può farla benissimo sempre....cioè se crea una risposta a ciao, lo farà in qualche modo e quel modo lo può usare sempre. Non capisco la cosa di salvare in un file.
Titolo: Re: Chatterbot ALICE
Inserito da: Picavbg - 14 Febbraio 2010, 23:53:48
A proposito, ciao. :D
Vediamo se ho capito:
Tu vorresti fornire la risposta attraverso il tuo dizionario memorizzato in un file. Il file però non esiste; lo vai creando mana mano che che da utente fornisci per la prima volta la risposta ad una parola che hai scritto prima.
Cioè:
scrivi "ciao" in TexBox1.text   »» il programma cerca nel file e non trova il termine
--> in questo caso ti dovrebbe fornire una ripsosta del tipo " termine non trovato - inserisci risposta da memorizzare"
scrivi allora in TextBox2.Text  »» "Ciao anche a te"
---> il programma rileva la risposta e la conserva nel file

poi scrivi di nuovo: "ciao" in TexBox1.text   »» il programma cerca nel file e questa volta la trova
---> n questo caso ti fornisce la ripsosta:  "Ciao anche a te"
e così via di seguito.

Ho capito bene?
Ciao
Titolo: Re: Chatterbot ALICE
Inserito da: Will32 - 15 Febbraio 2010, 14:27:49
Esatto Picavbg !  ;D

Ceskho, mi deludi un po' !  :P
Titolo: Re: Chatterbot ALICE
Inserito da: Will32 - 15 Febbraio 2010, 14:38:55
Se riesco a risolvere il  problema, lascio i sorgenti in Progetti in cerca d'aiuto, così mi date una mano a scrivere il dizionario !  ;D

Però prima, mi aiutate con il codice !
Grazie, ciao .

P.S

Sono ben accette numerosi aiuti !  ;D
Titolo: Re: Chatterbot ALICE
Inserito da: Ceskho - 15 Febbraio 2010, 15:17:51
Secondo me questo sistema è sbagliato....io opterei per due software distinti: uno che crea il dizionario ed uno che funge da chat...

Il primo verrebbe corredato già di un dizionario pieno, all'utente spetta solo il compito di aggiungere e personalizzare...
Titolo: Re: Chatterbot ALICE
Inserito da: Will32 - 15 Febbraio 2010, 15:45:05
Si puo fare così, ma come ??  ;D

Il problema è sul software che funge da chat.
Per l'altro, non dovrei avere problemi !
Titolo: Re: Chatterbot ALICE
Inserito da: fsurfing - 15 Febbraio 2010, 16:40:21
@will32

ti sei scordato di mettere il link al tuo sito nella firma :D
Titolo: Re: Chatterbot ALICE
Inserito da: Ceskho - 15 Febbraio 2010, 16:46:32
Si puo fare così, ma come ??  ;D

Il problema è sul software che funge da chat.
Per l'altro, non dovrei avere problemi !

Il primo software è semplicemente un form di editor del testo più o meno...hai due textbox, una che salva la frase dell'utente e l'altra che salva la risposta

Il form della chat deve semplicemente cercare nel file il testo che viene scritto e restituire la risposta.
Titolo: Re: Chatterbot ALICE
Inserito da: Will32 - 15 Febbraio 2010, 19:22:05
Proverò e vi farò sapere !
 ;D

P.S

L'ho fatto apposta a non mettere il link, penso che stia meglio.
Comunque @electro, se lo vuoi vedere è questo il link : sites.google.com/site/alinachatterbot  (http://sites.google.com/site/alinachatterbot)
Ciao  :D
Titolo: Re: Chatterbot ALICE
Inserito da: fsurfing - 15 Febbraio 2010, 19:25:51
ma quindi un chatterbot lo hai già realizzato o sbaglio?

se si ti basta fare un porting del codice
Titolo: Re: Chatterbot ALICE
Inserito da: Will32 - 15 Febbraio 2010, 19:30:13
Sì, ne ho gia fatto uno ma ..., quando ero agli inizi.
E' un codice banale e totalmente diverso !!
 ;D
Titolo: Re: Chatterbot ALICE
Inserito da: Will32 - 15 Febbraio 2010, 21:05:19
Ecco il codice per il primo programma ( editor di domanda e risposta ) :

Codice: [Seleziona]
  DIM memoria AS File
  DIM domanda AS String
  DIM risposta AS String
 
  risposta = TextBox1.Text
  domanda = TextBox2.Text
 
  memoria = OPEN User.home &/ "Memoria.txt" FOR CREATE
  memoria.Save(User.home &/ "Memoria.txt", domanda & " " & risposta)

Ecco l'esempio di cosa scrive sul file :

Codice: [Seleziona]
ciao Ciao anche a te !

Adesso, devo fare in modo che , se nel programma della chat scrivo ciao, esso va a cercare la stringa ciao e trova la risposta .
Non so che codice posso usare !
Aiutino  ;D
Titolo: Re: Chatterbot ALICE
Inserito da: fsurfing - 15 Febbraio 2010, 21:22:36
ma non sarebbe meglio utilizzare un database per memorizzare le domande e risposte?
Titolo: Re: Chatterbot ALICE
Inserito da: fsurfing - 15 Febbraio 2010, 22:11:54
ti lascio in allegato il mio chatterbot realizzato con un database sql3
Titolo: Re: Chatterbot ALICE
Inserito da: Picavbg - 16 Febbraio 2010, 00:27:34
Scusate la mia modesta intromissione, ma il risultato cercacto da Will32 mi pare di semplice soluzione e sinceramente non credo che sia necessario un secondo programma, nè che ci sia la necessità si scomodare un DB.
É vero che tutte le soluzioni che producano lo stesso risultato sono buone, ma analizzando la tematica dell'argomento e considerando inoltre anche lo scopo esercitativo che serve a Will32,  io, al suo posto,  utiluzzerei un semplice file sequenziale che potrei aprire con l'opzione FOR READ per svolgere la ricerca del terminine contenuto nella TextBox1.text, mentre lo aprirei con  l'opzione FOR APPEND per registrare gli accodamenti dei nuovi termini che di volta in volta troverei nella TextBox2.text. Organizzerei perciò il file con record, ciascunio contenente due campi:
Codice: [Seleziona]
DIM  Path_Dizionario as String
DIM  Dizionario AS File
DIM  RecDizio AS String[2]
DIM bEsitoas boolean
Path_Dizionario= /home/percorso
 Dizionario = OPEN Path_Dizionario FOR READ
FOR EACH RecDizio
 if TextBox1.text=RecDizio[0]
      TextBox2.text=RecDizio[1]
       Esito=TRUE
      BREAK
 endif
next
if Esito=FALSE
 Message.Info("Termine sconosciuto")

Invece per accodare il nuovo termine:
 
Codice: [Seleziona]
Dizionario = OPEN Path_Dizionario FOR APPEND
 RecDizio[0]=TextBox1.text
 RecDizio[1]=TextBox2.text
 WRITE # Dizionario
Il codice, scritto di getto è da verificare e correggere, ma contiene tutto il concetto
@ Will32:
Scusa se non ho risposto prima, ma la home del sito al quale ho acceduto più volte oggi, mi dava sempre come ultima rispo alla discussione, la mia, quindi non mi sono accorto se non a tarda ora che la discussione è andata avanti. Spero di non essere arrivato tropppo tardi. Se ti piace la mia soluzione, ti consiglio di prendere il codice scritto qui sopra  come spunto per uno studio prima di inserirlo nel tuo programma. Così potrai farlo tuo e continuare costruttivamente la tua esercitazione :D :D
Ciao a tutti.

Titolo: Re: Chatterbot ALICE
Inserito da: Will32 - 16 Febbraio 2010, 18:35:28
Sono tutti ottimi consigli.
Scrivo il programma e vi faccio sapere !  ;D
Titolo: Re: Chatterbot ALICE
Inserito da: Will32 - 16 Febbraio 2010, 21:11:43
Ecco il link dove potete scaricare il pacchetto d'installazione di A.L.I ( gli ho cambiato nome ! ) : http://sites.google.com/site/alinachatterbot/a-l-i (http://sites.google.com/site/alinachatterbot/a-l-i)

Artificial Linguistic Intelligent =>A.L.I

Titolo: Re: Chatterbot ALICE
Inserito da: fsurfing - 16 Febbraio 2010, 21:25:31
vedo che hai usato il mio codice  :P
Titolo: Re: Chatterbot ALICE
Inserito da: Will32 - 17 Febbraio 2010, 15:23:16
Sì, fa ne faccio anche un'altra versione con il codice di  Picavbg .

Quando ho finito tutte e due le versioni, lascio il programma in Progetti in cerca d'aiuto , così mi aiutate a scrivere il dizionario !  ;D

Discussione RISOLTA
Titolo: Re: Chatterbot ALICE
Inserito da: Ceskho - 17 Febbraio 2010, 15:30:10
Come già detto le soluzioni ad un problema possono essere diverse e variegate.

Sta a te scegliere quella che più ti piace, ti sembra facile, ti sembra veloce o qualsiasi altra cosa....
Ti consiglio di sceglierne una di soluzione e svilupparla al meglio...in questo modo imparerai di più focalizzandoti su un solo argomento... ;)
Titolo: Re: Chatterbot ALICE
Inserito da: Will32 - 17 Febbraio 2010, 15:42:39
Come codice mi sempra migliore quello di fsurfing !
Infatti, ho scelto il suo .

Anche quello di Picavg potrebbe andare bene , tuttavia non è adatto a cio che voglio fare !
 ;D
Titolo: Re: [RISOLTO] Chatterbot ALICE
Inserito da: Ceskho - 17 Febbraio 2010, 16:05:09
Perfetto

EDIT: Ho inserito RISOLTO nel titolo del pimo post...la prossima volta lo farai tu ok?
Titolo: Re: [RISOLTO] Chatterbot ALICE
Inserito da: Will32 - 17 Febbraio 2010, 17:18:46
Ok, ciao !  ;D