Newsgroup: it.comp.ia
Titolo: BABBEA

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

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

 ha scritto nel messaggio
news:cf978c1a127450b6cea...@mygate.mailgate.org...


Scusate, sono un pirla dal click facile ;)
Ehm...
dicevo!
Mitico sto programmino ;))

 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