On 21 Lug, 15:26, "Ciccio" <flent...@eloisa.it> wrote:
> "Vend" <ven...@virgilio.it> ha scritto nel
messaggionews:0b0c3de7-72d5-4bd0-9005-790b551b2727@j1g2000prb.googlegroups.com...
> On 18 Lug, 11:15, "Ciccio" <flent...@eloisa.it> wrote:
>
> >Scritta a mano e inserita in un database di risposte.
>
> L'esistenza di un data-base di risposte (pre-impostate) è la principale
> obiezione che viene mossa ai programmi di conversazione in linguaggio
> naturale, volendo con ciò intendere che una "vera" intelligenza dovrebbe
> fare a meno di qualsiasi tipo di data-base. Si ritiene forse che una "vera"
> intelligenza dovrebbe creare dal nulla le proprie risposte, e si suppone che
> un essere umano (impegnato in una conversazione) faccia proprio così.
> Spero di aver riassunto correttamente la tua obiezione, in modo da poter
> dire che è affetta da due limitazioni: 1) è superata; 2) è inconsistente. Ho
> comunque l'opportunità di chiarire questa faccenda, spero in modo
> definitivo.
No.
Un programma funzionalmente intelligente potrebbe teoricamente essere
scritto come un database di risposte pre-impostate, ma praticamente
ciò non è possibile poichè il database dovrebbe essere troppo grande.
Io faccio notare che il tuo programma funziona con risposte pre-
impostate quando devo spiegarlo a qualcuno o quando tu cerchi di
affermare che una risposta palesemente sbagliata è stata generata in
maniera intelligente secondo qualche non ben precisato meccanismo.
> 1) L'obiezione del data-base è superata poichè risale al periodo storico in
> cui non esisteva una definizione soddisfacente di intelligenza.
Che ancora non c'è.
> In effetti,
> questa e altre obiezioni si basano sull'ignoranza di fondo di non sapere che
> cos'è l'intelligenza. Chi scrive programmi di ia ha ormai un'idea abbastanza
> chiara,
Davvero? Riferimenti?
> e cioè: ***intelligenza è la capacità di risolvere un determinato
> problema in modo autonomo.***
E prendere una risposta pre-impostata sarebbe un modo autonomo?
> 2) Ammettiamo che il problema sia quello di trovare un record all'interno di
> un file, detto data-base perchè i record sono organizzati in un certo modo.
> Un DBMS non può essere definito intelligente poichè la procedura di ricerca
> è codificata "a priori" (tramite le istruzioni di programma) e agisce su un
> insieme di dati di cui si conosce la struttura.
> Vi sono però situazioni in cui la codifica a priori non funziona e un caso
> tipico è l'elaborazione del linguaggio naturale. Ammettiamo che il problema
> sia l'estrazione di una stringa da una lista di stringhe più o meno simili
> (sarebbero le risposte pre-impostate). Poichè non può esistere un insieme
> infinito di coppie domanda/risposta, non può esistere una procedura di
> ricerca codificata a priori. Inoltre non si conosce la struttura dei dati
> (basti pensare alle differenze tra italiano, inglese, etc). Occorre allora
> una procedura di tipo generale, un algoritmo capace di decidere "a
> posteriori". Un tale algoritmo risolve il problema dell'estrazione - lo
> risolve in modo autonomo - e può essere definito intelligente.
Non ho idea di cosa tu stia cercando di dire in questo paragrafo.
> >Non se l'ipotesi è formulata a caso.
>
> Dunque il punto non è l'esistenza o meno di un data-base, e qui, dire che le
> ipotesi sono formulate a caso, è ancora più inconsistente. Ammettiamo per un
> istante che lo siano. Sarebbe ancora un comportamento intelligente, in
> quanto ampiamente riscontrabile negli esseri umani: si chiama "tirare a
> indovinare".
Si, un comportamento ampiamente riscontrabile anche nei dadi e nelle
monete, oggetti notoriamente intelligenti.
> Tuttavia Eloisa non adotta questa strategia, ma
questahttp://www.intellibook.net/semanticbrowsing, consistente nella ricerca del
> significato.
Il link non dice nulla.
> >In questo caso ad imbrogliare è Eloisa, o meglio il suo programmatore,
> >che fa in modo che quando nel database non si trova nulla che
> >corrisponda all'input dell'utente venga data una risposta evasiva
> >(anche essa pre-impostata).
>
> L'argomento del "programmatore imbroglione" (sia pure attraverso il suo
> programma) è un classico dell'insinuazione e andrebbe evitato. Oltretutto è
> un'insinuazione buffa: il test di Turing funziona come una specie di
> imbroglio, non il programma(tore) che tenta di superarlo (dicendo la
> verità).
L'imbroglio è cercare di far passare semplici trucchetti per
intelligenza.
> >Basterebbe probabilmente uno script di A.L.I.C.E.
> >Sarebbe piuttosto lungo poichè dovrebbe contenere un mare di risposte
> >pre-impostate, ma la logica sarebbe semplicissima.
> >Infatti A.L.I.C.E. con gli script standard mi sembra migliore di
> >Eloisa:
>
> Nell'impossibilità di citare un lavoro o un programma proprio,
Certo, io mica vado in giro a dire di aver creato un programma in
grado di passare il test di Turing.
> si cita
> sempre il programma Alice del prof. R. Wallace. Purtroppo, il programma
> Alice del prof. R. Wallace non è dotato di "vera" intelligenza: lo dice il
> suo stesso autore ed è uno dei capisaldi del progetto.
Questo perchè lui è onesto e tu no.
> >Utente: My name is Ciccio.
> >A.L.I.C.E.: I am very pleased to meet you Ciccio.
> >Utente: What is my name?
> >A.L.I.C.E.: Your name is Ciccio, seeker.
>
> Siamo fermi sull'ia del 1950 (Eliza, Parry, Alice...) è torniamo ancora una
> volta sugli script. Abbiamo detto, in una discussione precedente, che alcune
> banali prestazioni, come ripetere il nome dell'utente, si basano su questo
> principio. Ma tutti possono vedere che Eloisa funziona meglio di Alice anche
> in questa circostanza:
>
> >Utente: Il mio nome è Ciccio.
> >Eloisa: ...Bene, se vuoi dirmi il tuo NOME digitalo ora (senza
> >aggiungere altro), altrimenti digita No...
> >Utente: No.
> >Eloisa: ...Amen e così sia. Se vuoi fare una ricerca, digita 'cerca
> >con google' o qualcosa del genere...
> >Utente: Qual'è il mio nome?
> >Eloisa: QUAL'E' ...Mi sfugge il significato di questo termine...
>
> Eloisa funziona meglio di Alice perchè ti fa notare che hai commesso un
> errore di grammatica.
Non è un errore, sia "qual'è" che "qual è" sono forme sono
ammissibili.
Comunque non vedo il motivo di questa tua affermazione, visto che con
A.L.I.C.E. non avevo commesso "errori" di grammatica.
> >Utente: Qual è il mio nome?
> >Eloisa: ...Bene, se vuoi dirmi il tuo NOME digitalo ora (senza
> >aggiungere altro), altrimenti digita No...
> >Utente: indovina
> >Eloisa: ...Ok, adesso conosco il tuo nome... INDOVINA.
> >Utente: Qual è il mio nome?
> >Eloisa: Hai detto di chiamarti... INDOVINA.
>
> Certo il paragone con Alice non è corretto, perchè Eloisa analizza le frasi
> a livello semantico (grazie ahttp://www.intellibook.net/semanticbrowsing)..
E con questa sua raffinata analisi semantica non capisce che "Il mio
nome è Ciccio" vuol dire che l'utente si chiama "Ciccio".
> L'aspetto interessante di questo esempio è che Eloisa accetta INDOVINA come
> nome dell'utente. Ciò significa che Eloisa non possiede una tabella di
> look-up del tipo INDOVINA=voce-del-verbo-indovinare o una lista dei nomi
> propri.
Il che la dice lunga sulla sua capacità di analizzare sematicamente le
frasi.
> Se la possedesse, risponderebbe "INDOVINA non è un nome" o qualcosa
> del genere,
Che un umano direbbe. O meglio, un umano avrebbe già capito il nome
alla prima frase, cosa che anche A.L.I.C.E. che umano non è, riesce a
fare.
> ma questa sarebbe codifica a priori e, come tale, non potrebbe
> essere definita "vera" intelligenza. Il che non toglie che una tabella di
> questo tipo potrebbe essere aggiunta.
Quindi se io ti chiedo come ti chiami, tu mi rispondi "indovina" e io
ti dico che indovina non è un nome, è un segno che non sono veramente
intelligente?
Piccola spiegazione per i non addetti ai lavori:
A.L.I.C.E. è un pattern matcher con unificazione.
Questo significa che i pattern nelle regole possono contenere
variabili da associare a parti dell'input del utente.
Ad esempio una regola del tipo:
"Il mio nome è <X>" ->
ricorda(NomeUtente := X);
rispondi("Piacere di conoscerti, <X>.");
matcha con input del tipo "Il mio nome è Ciccio", "Il mio nome è
Giovanni", "Il mio nome è Maria" assegnando alla variabile locale X
rispettivamente il valore "Ciccio", "Giovanni" o "Maria". Tale
variabile può poi essere utilizzata all'interno nel corpo della
regola, in questo caso per assegnarla alla variabile di sessione
NomeUtente e per formulare la risposta: rispettivamente "Piacere di
conoscerti, Ciccio.", "Piacere di conoscerti, Giovanni." o "Piacere di
conoscerti, Maria."
Il pattern matcher di Eloisa mi sembra di capire che invece non abbia
l'unificazione, ovvero i pattern delle regole possono soltanto essere
formati da costanti. Per fare in modo che il programma possa
memorizzare qualche informazione occorre usare delle subroutine
speciali.
Ad esempio:
"Il mio nome è " ->
RispostaUtente := domanda("...Bene, se vuoi dirmi il tuo NOME
digitalo ora (senza aggiungere altro), altrimenti digita No...");
se (RispostaUtente diverso_da "No") allora {
ricorda(NomeUtente := RispostaUtente);
rispondi(concatena("...Ok, adesso conosco il tuo nome... ",
RispostaUtente));
}
> >Più che altro è divertente come ti arrampichi sugli specchi per
> >cercare di giustificare le risposte palesemente stupide del tuo
> >programma.
>
> A questo punto credo che le risposte di Eloisa non siano affatto stupide.
> Forse lo possono sembrare, ma è difficile stabilire chi sia lo stupido, tra
> due interlocutori.
Non direi.
> Tra un essere umano e un software, secondo me lo stupido è l'essere umano.
> Lui arriva lì dopo qualche milione di anni di evoluzione, il software dopo
> qualche anno di programmazione. Eppure, lui si affanna a dire che le
> risposte del software sono stupide. Secondo me lo stupido è lui (l'essere
> umano), ma chi assiste allo spettacolo è libero di pensarla come crede.
A volte sembri rispondere come il tuo programma. E non è un
complimento per il programma.