Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

BABBEA

47 views
Skip to first unread message

Anonimo Lentino

unread,
Oct 25, 2001, 5:19:10 AM10/25/01
to
Ecco a voi Babbea!
Si può eseguire semplicemente con il QBASIC di serie con WIN/DOS
Dategli in pasto i file frasi.txt e eva.txt che arrivano da Eloicosa e
verificate quanto similmente funzionano!
Spero che la formattazione regga sono meno di 130 righe effettive

Salutammo!

' ///////////////////////
'
' B A B B E A
'
' ///////////////////////

'
' //// E' IMPORTANTE CHE SIANO PRESENTI I DUE FILES... PARDON, LA BASE DI
' CONOSCENZA E TUTTE LE CONNESSIONI SINAPTOQUANTICOPAPPARDELLICHE
'
' OVVERO: FRASI.TXT E EVA.TXT

DECLARE FUNCTION CONTROLLAPAROLE& (PAROLEA$(), CNTA&, PAROLEB$(), CNTB&)
DECLARE FUNCTION ESTRAIPAROLE& (X$, PAROLIST$())
DECLARE SUB INIT ()

DEFLNG A-Z

RANDOMIZE TIMER

CONST TRUE = -1, FALSE = 0

'
' //// ATTIVARE IL DEBUGMODE PER INTERESSANTI SCOPERTE SCIENTIFICHE
' NEL MONDO DELL'I.A.!!!
'
DEBUGMODE = FALSE


DIM PAROUTEN$(50), PAROCOMP$(50)

COLCOMP = 7
COLUTENTE = 3

LOCATE , , 0
COLOR 7, 0
CLS

CALL INIT

COLOR COLCOMP
PRINT
PRINT "Ciao sono Babbea! :-)"
PRINT "Sono un Pastrocchio Virtuale, è sto per"
PRINT "interpretare la parte prevista dal copione!"
PRINT

'
' //// APRO IL COPIONE, APPUNTO
'
FILEFRASI = FREEFILE
OPEN "I", FILEFRASI, "FRASI.TXT"

'
' //// APRE IL FILE CON LE RISPOSTE EVASIVE. CERCAVO UN METODO MOLTO STUPIDO
' PER GESTIRLE, E HO PENSATO A QUESTO. FACCIO IN MODO CHE NEL FILE CI
' SIA SCRITTO QUANTE RISPOSTE CI SONO, DIMENSIONO UN ARRAY E LE CARICO!
' OH, SI. E' VERAMENTE UN SISTEMA STUPIDO! ANDRà BENISSIMO...
'
FILEEVA = FREEFILE
OPEN "I", FILEEVA, "EVA.TXT"
INPUT #FILEEVA, NUMEVA
DIM FRASIEVA$(NUMEVA)
FOR I = 1 TO NUMEVA
LINE INPUT #FILEEVA, FRASIEVA$(I)
NEXT I
CLOSE FILEEVA


LOCATE , 1
PRINT "Cominciamo pure..."

DO
COLOR COLUTENTE
PRINT "> ";
LOCATE , , 1
LINE INPUT TESTO$
LOCATE , , 0
TESTO$ = LTRIM$(RTRIM$(UCASE$(TESTO$)))
COLOR COLCOMP

'
' //// CORAGGIO... DIAMO UNA GUARDATA A COSA CAVOLO DI SCRIVONO...
'
IF TESTO$ = "" THEN
'
' //// SE NON SI SCRIVE NIENTE, FINIAMOLA QUI
' FACCIAMOLO CON UNA FRASE DA DURO, ALLA TERMINATOR! :D
'
PRINT "Hasta la vista, Baby!"
EXIT DO

ELSE
'
' //// COMINCIAMO COL FARE A PEZZI LA FRASE
'
PAROLEC = ESTRAIPAROLE(TESTO$, PAROUTEN$())
'
' //// QUI CI STAREBBE BENE IL CONTROLLO PER IL TURPILOQUIO.
' MA è TALMENTE BANALE CHE ANCHE UNO PSEUDO-SEDICENTE-GURU
' HA DETTO CHE HA POCO A CHE FARE CON L'IA, QUINDI PASSIAMO
' OLTRE SENZA ULTERIORE INDUGIO! :D
'
'
' //// CONTROLLA LA BASE DI CONOSCENZA PER TROVARE LA FRASE CHE
' PIù CORRISPONDE
'
MAXMATCH = 0
MATCHCHIAVE = 0
SEEK FILEFRASI, 1
DO WHILE NOT EOF(FILEFRASI)
CHIAVEPOS = SEEK(FILEFRASI)
LINE INPUT #FILEFRASI, TEXT$
IF TEXT$ = UCASE$(TEXT$) THEN
PAROLEN = ESTRAIPAROLE(TEXT$, PAROCOMP$())
PUNTI = CONTROLLAPAROLE(PAROUTEN$(), PAROLEC, PAROCOMP$(),
PAROLEN)
IF PUNTI > MAXMATCH THEN
MAXMATCH = PUNTI
MATCHCHIAVE = CHIAVEPOS
'
' //// I PRINT DI DEBUG SONO INTERESSANTI PER AVERE
UN'IDEA DI COSA FANNO
' IN PRATICA I PRODIGIOSI PROCESSI COGNITIVI DI
BABBEA!!!
'
IF DEBUGMODE THEN PRINT PUNTI; "***", TEXT$
END IF
IF DEBUGMODE THEN IF PUNTI > PAROLEC * 3 THEN PRINT PUNTI,
TEXT$
END IF
LOOP

IF (MATCHCHIAVE = 0) OR (MAXMATCH < 1) THEN
'
' //// RISPOSTE EVASIVE! NE SCELGO UNA A CASO...
'
E = INT(RND(1) * NUMEVA) + 1
PRINT FRASIEVA$(E)
ELSE
'
' //// SELEZIONA RISPOSTA!
' QUI SALTO DIRETTAMENTE ALLA RISPOSTA RAGIONATA, LEGGASI
' PAPPARDELLA PRECONFEZIONATA. VOLENDO FARE I RICERCATORI
' VERAMENTE FIGHI :) POTREI IN CASO DI DUBBIO (VALUTANDOLO
' AD ESEMPIO PER SIMILITUDINE DI PUNTEGGIO TRA VARIE FRASI
' CHIAVE, OPPURE IN CASO DI MANCANZA DI ADEGUATO NUMERO
' DI PARTICELLE TIPO IL UN DI CHE, ECCETERA) PRENDERE LA
' PRIMA RISPOSTA (CHE SIMULA UN ROVESCIAMENTO DELLA DOMANDA)
' PREMETTERE UNA COSA TIPO "INTENDI FORSE DIRE..." E POI
' AGGIUNGERE "ALLORA DIGITA" E METTERE LA FRASE CHIAVE.
' MA MI SEMBRA TALMENTE UN'OFFESA ALL'INTELLIGENZA CHE NON
' LO FACCIO NEMMENO... :D
'
'
SEEK #FILEFRASI, MATCHCHIAVE
FOR I = 1 TO 3
LINE INPUT #FILEFRASI, TEXT$
NEXT I
PRINT TEXT$
END IF
END IF
LOOP

COLOR 7, 0

END

FUNCTION CONTROLLAPAROLE (PAROLEA$(), CNTA, PAROLEB$(), CNTB)

'
' /// QUESTA è UNA VERSIONE ULTRA BANALE E PRIMITIVA PER UN SISTEMA
' DI PATTERN MATCHING. SI POTREBBERO SPERIMENTARE UN'INFINITà
' DI CORRETTIVI. MA IL BELLO è CHE GIà COSI HA UNA PARVENZA
' DI FUNZIONAMENTO...
' QUESTO MI AUTORIZZEREBBE FORSE A PARLARE DI IA.... ?!!?? :D
'

FOR A = 1 TO CNTA
IF LEN(PAROLEA$(A)) > 2 THEN
FOR B = 1 TO CNTB
IF PAROLEA$(A) = PAROLEB$(B) THEN
PUNTI = PUNTI + LEN(PAROLEA$(A))
MATCH = MATCH + 1
ELSEIF PAROLEA$(A) = LEFT$(PAROLEB$(B), LEN(PAROLEB$(B)) - 1)
THEN
PUNTI = PUNTI + LEN(PAROLEB$(B)) - 1
END IF
NEXT B
END IF
NEXT A

'
' //// QUESTO DOVREBBE DARE PRIORITà ALLE FRASI CHIAVE PIù BREVI
'
D = CNTB - MATCH
IF D < 1 THEN D = 1
PUNTI = PUNTI / D

CONTROLLAPAROLE = PUNTI

END FUNCTION

FUNCTION ESTRAIPAROLE (X$, PAROLIST$())

SEPARATORI$ = " ,.:;'?!></\-+*" + CHR$(34) + CHR$(9)
PAROMINLUNG = 1

FOR I = 1 TO LEN(X$)
C$ = MID$(X$, I, 1)
IF INSTR(SEPARATORI$, C$) > 0 THEN
TEXT$ = TEXT$ + " "
ELSE
TEXT$ = TEXT$ + C$
END IF
NEXT I

TEXT$ = TEXT$ + " "
DO
P = INSTR(TEXT$, " ")
IF P > PAROMINLUNG THEN
CONTAPARO = CONTAPARO + 1
PAROLIST$(CONTAPARO) = LEFT$(TEXT$, P - 1)
END IF
TEXT$ = LTRIM$(MID$(TEXT$, P))
IF TEXT$ = "" THEN EXIT DO
LOOP

ESTRAIPAROLE = CONTAPARO


END FUNCTION

SUB INIT

COLOR 0, 7
PRINT "BABBEA (Un Programma vagamente ironico) "
COLOR 7, 0
PRINT "Ogni ravvisabile riferimento a cose, persone, "
PRINT "personaggi virtuali, baggianate varie, eccetera "
PRINT "è da considerarsi assolutamente casuale! :D "
PRINT "------------------------------------------------"

END SUB

--
Posted from 64.124.150.140.safeweb.com [64.124.150.140]
via Mailgate.ORG Server - http://www.Mailgate.ORG

Sandro Pons

unread,
Oct 25, 2001, 5:37:16 AM10/25/01
to
On Thu, 25 Oct 2001 09:19:10 +0000 (UTC), "Anonimo Lentino"
<anonimo...@yahoo.it> wrote:

>Ecco a voi Babbea!


NOOO!!!! ma sei un mito!!! :-)

ma tutti questi mitici anonimi...che imperversano nel newsgroup!! noo!!! :-)

Quale Eloiso, le chiedo se sarebbe possibile usare Babbea come mascotte per il
Francesco Lentini fans club.
Sarebbe disposto a cedere gratuitamente i diritti del sorgente agli Eloisi ?
( i quali licenzieranno il software sotto GPL )

Inoltre grati del suo lavoro, la inciteremmo a diventare un Eloiso.

--
sandro pons

"Gli amici dei miei utenti possono diventare miei utenti".
Lo dice ELOISA, il bot che "chatta".
da: Virgolette di punto-informatico.it

[D0M3]

unread,
Oct 25, 2001, 6:32:18 AM10/25/01
to

"Anonimo Lentino" <anonimo...@yahoo.it> ha scritto nel messaggio
news:cf978c1a127450b6cea...@mygate.mailgate.org...

[D0M3]

unread,
Oct 25, 2001, 6:32:57 AM10/25/01
to
Scusate, sono un pirla dal click facile ;)
Ehm...
dicevo!
Mitico sto programmino ;))

Francesco Lentini

unread,
Oct 25, 2001, 10:11:48 AM10/25/01
to
"Sandro Pons" <po...@mindless.com> ha scritto nel messaggio
news:3bd7dbf2...@News.CIS.DFN.DE...

> On Thu, 25 Oct 2001 09:19:10 +0000 (UTC), "Anonimo Lentino"
> <anonimo...@yahoo.it> wrote:
>
> >Ecco a voi Babbea!
>
>
> NOOO!!!! ma sei un mito!!! :-)
>
> ma tutti questi mitici anonimi...che imperversano nel newsgroup!! noo!!!
:-)

Hai ragione. Anche se, purtroppo, credo sia sempre e soltanto lui... :-(
il LADRO Rocco Papaleo, alias Draco Roboter, alias Uno dei tanti.

Ma fa piacere lo stesso (non è da tutti avere dei fans, anche se fasulli).


--
Cibernetica-mente,

Francesco Lentini
http://www.eloisa.it - Eloisa® Official Web Site

0 new messages