Domanda Creare una piccola intelligenza artificiale? E' possibile?

Stato
Discussione chiusa ad ulteriori risposte.

DavidRT49

Utente Electrum
22 Luglio 2015
351
18
77
142
Ultima modifica:
Yo Inforge è da un pò di tempo che mi frulla in testa questa cosa, è possibile creare una piccola intelligenza artificiale magari che riconosca la voce tramite microfono e risponda scrivendo? Pensavo a una cosa non troppo complicata perchè già immagino quanto possa essere difficile programmare una cosa del genere... Le funzioni principali dovrebbero essere quelle di rispondere alle domande tipo questa:

Domanda: Chi è il fondatore della Apple?
Risposta: Steve Jobs

Il programma dovrebbe fare una specie di ricerca sul web "per conto suo" senza aprire schede o browser e poi fornire la risposta, inoltre dovrebbe imparare tutto quello che gli viene detto come una specie di memoria virtuale.

Ho cercato di spiegare come potevo data la mia scarsa esperienza, potreste spiegarmi se è una cosa fattibile o meno oppure dove è fattibile e dove no? Se avete qualche idea scrivetela. Yo

Jessie
 
Ultima modifica da un moderatore:
Si: hai appena descritto Wolfram Alpha!
No: non la puo' realizzare una persona inesperta, ma serve un pool di competenze decisamente piu' importante

Ma hai un'alternativa decisamente piu' semplice: usare i servizi di Google (o Bing, e, ovviamente, Apple) usati per fare le stesse operazioni che fai con Google Talk, Siri, Cortana, ecc.

=
 
Si: hai appena descritto Wolfram Alpha!
No: non la puo' realizzare una persona inesperta, ma serve un pool di competenze decisamente piu' importante
Conosco bene Wolfram Alpha, sono anche iscritto alla versione Pro. Grazie comunque per la dritta.


Inviato dal mio iPhone 6 tramite TapaTalk
 
In pratica vorresti creare un bot che ti risponda in modo autonomo alle domande che gli poni?
Si è possibile, ma non è affatto semplice, ti servono molte competenze in ambito di programmazione.
 
In pratica vorresti creare un bot che ti risponda in modo autonomo alle domande che gli poni?
Si è possibile, ma non è affatto semplice, ti servono molte competenze in ambito di programmazione.
Si diciamo di si, magari con anche qualche altra funzione.
 
Hai qualche conoscenza nel campo della programmazione ?
No, mi sono informato un po' sui linguaggi di programmazione che andrebbero usati (Prolog & Lisp) ma non ho nessuna conoscenza. Mi piacerebbe iniziare e spero di farlo il prima possibile.


Inviato dal mio iPhone 6 tramite TapaTalk
 
vedo che sei motivato, non posso fare altro che dirti di iniziare a studiare qualche linguaggio e augurarti buona fortuna col progetto;)
 
vedo che sei motivato, non posso fare altro che dirti di iniziare a studiare qualche linguaggio e augurarti buona fortuna col progetto;)
Finché c'è la la voglia e la passione si può arrivare dovunque magari non domani non tra una settimana o un mese ma niente è impossibile.


Inviato dal mio iPhone 6 tramite TapaTalk
 
Sebbene niente sia impossibile, questo ne rasenta il limite.

Ci sono 2 problemi fondamentali:

1. Il riconoscimento della voce è possibile certo: ma non per domande casuali. Esistono tanti dispositivi attivabili a voce, ma sulla base di un set di suoni ben definiti e di comandi preimpostati, il fatto che tu voglia fare domande casuali complica la cosa e non di poco.

2. Il dover trovare la risposta alle domande su internet è anche più difficile del primo task, infatti posto che sia facile fare ricerche con google, interpretarne i risultati sarebbe un'operazione molto complicata in quanto non si conoscono tante variabili, tra cui la lingua utilizzata, la correttezza dei vocaboli usati e, soprattutto, l'interpretazione della grammatica che porti a dedurre la risposta giusta all domanda in un testo di media lunghezza.

e.s
domanda: "Chi ha inventato il telefono"
primo risultato della ricerca con google: http://www.focusjunior.it/imparo/fj-risponde/chi-ha-inventato-il-telefono

Diciamo che normalmente la risposta si potrebbe cercare nelle prime 10 righe e poi si cambia risultato:
eccole:
"Chi ha inventato il telefono?
La paternità di questa grande invenzione è stata disputata per anni tra due italiani, Meucci e Manzetti e un americano, Bell. Ma chi è il vero inventore del telefono?

A scuola lo insegnano e spesso ce lo dicono gli adulti: l'inventore del telefono è stato il fiorentino Antonio Meucci (lo vedete nella foto piccola rotonda, qui sopra). Il fatto è che non non la pensano tutti così perché il telefono, come molte alte invenzioni che hanno cambiato la vita di tutti noi, in realtà ha più di un inventore. Persone che, in modo indipendente l'una dall'altra e, a volte, senza sapere nulla l'una dell'altra, sono giunti allo steso risultato. È il caso, per esempio, di Innocenzo Manzetti (nella foto ovale). Che nel 1865 ad Aosta (più o meno in contemporanea con Meucci, che però viveva a New York), presentò un telefono perfettamente funzionante."


A questo punto la domanda sorge spontanea: come faccio a sapere dove fermarmi?
Possibili problemi: leggendo al rpima riga si potrebbe pensare che la risposta sta subito nella seconda ovvero "La paternità" risposta sbagliata.
Identificando anche la stringa " è stata disputata per anni tra due italiani, Meucci e Manzetti e un americano, Bell." Chi dice al nostro risponditore che deve leggere dopo "è stata disputata"? perchè dovrebbe farlo?
Mettiamo anche di riuscire ad arrivare qui: " l'inventore del telefono è stato il fiorentino Antonio Meucci" chi dice che la risposta non sia "il fiorentino"?
Inoltre, contestualizzando il contenuto del testo si capisce che la risposta porebbe essere un'informazione totalmente sbagliata e/o fuorviante.
E non contionuo perchè si possono trovare migliaia di problemi possibili.


Come risolvere questi problemi?
Sia il punto 1 che il punto 2 possono essere risolti (con molta difficoltà) istruendo delle cosiddette "reti neurali" ovvero, detta molto semplicemente, mediante l'utilizzo di algoritmi di autoapprendimento basati su un numero definito di "domande e risposte" corrette iniziali (o nel caso del punto 1 con domande ed interpretazioni corrette) , le quali essendo opportunamente elaborate secondo alcune logiche come ad esempio degli algoritmi fuzzy, sono in grado appunto di "istruire" la rete la quale, ad ogni ricerca, sarà in grado di diventare sempre più accurata creando un circolo virtuoso sempre maggiore fino a raggiungere asintoticamente la perfezione nella ricerca.


Questa è detta molto molto semplicemente, ma fondamentalmente è quello che ti serve. Un buon esempio di tutto questo si chiama shazam, che oltre ad un immenso database di canzoni, sfrutta sicuramente delle reti neurali al fine di comprendere un numero sempre maggiore di musiche nel minor tempo possibile, e questo lo si fa istruendo delle reti neurali che autoapprendono continuamente quali siano le peculiarità di una porrzione di brano in termini di frequenze, spettro, e chissà quali altri parametri.

Detto questo informati e buona fortuna, ti servirà.
 
Sebbene niente sia impossibile, questo ne rasenta il limite.

Ci sono 2 problemi fondamentali:

1. Il riconoscimento della voce è possibile certo: ma non per domande casuali. Esistono tanti dispositivi attivabili a voce, ma sulla base di un set di suoni ben definiti e di comandi preimpostati, il fatto che tu voglia fare domande casuali complica la cosa e non di poco.

2. Il dover trovare la risposta alle domande su internet è anche più difficile del primo task, infatti posto che sia facile fare ricerche con google, interpretarne i risultati sarebbe un'operazione molto complicata in quanto non si conoscono tante variabili, tra cui la lingua utilizzata, la correttezza dei vocaboli usati e, soprattutto, l'interpretazione della grammatica che porti a dedurre la risposta giusta all domanda in un testo di media lunghezza.

e.s
domanda: "Chi ha inventato il telefono"
primo risultato della ricerca con google: http://www.focusjunior.it/imparo/fj-risponde/chi-ha-inventato-il-telefono

Diciamo che normalmente la risposta si potrebbe cercare nelle prime 10 righe e poi si cambia risultato:
eccole:
"Chi ha inventato il telefono?
La paternità di questa grande invenzione è stata disputata per anni tra due italiani, Meucci e Manzetti e un americano, Bell. Ma chi è il vero inventore del telefono?

A scuola lo insegnano e spesso ce lo dicono gli adulti: l'inventore del telefono è stato il fiorentino Antonio Meucci (lo vedete nella foto piccola rotonda, qui sopra). Il fatto è che non non la pensano tutti così perché il telefono, come molte alte invenzioni che hanno cambiato la vita di tutti noi, in realtà ha più di un inventore. Persone che, in modo indipendente l'una dall'altra e, a volte, senza sapere nulla l'una dell'altra, sono giunti allo steso risultato. È il caso, per esempio, di Innocenzo Manzetti (nella foto ovale). Che nel 1865 ad Aosta (più o meno in contemporanea con Meucci, che però viveva a New York), presentò un telefono perfettamente funzionante."


A questo punto la domanda sorge spontanea: come faccio a sapere dove fermarmi?
Possibili problemi: leggendo al rpima riga si potrebbe pensare che la risposta sta subito nella seconda ovvero "La paternità" risposta sbagliata.
Identificando anche la stringa " è stata disputata per anni tra due italiani, Meucci e Manzetti e un americano, Bell." Chi dice al nostro risponditore che deve leggere dopo "è stata disputata"? perchè dovrebbe farlo?
Mettiamo anche di riuscire ad arrivare qui: " l'inventore del telefono è stato il fiorentino Antonio Meucci" chi dice che la risposta non sia "il fiorentino"?
Inoltre, contestualizzando il contenuto del testo si capisce che la risposta porebbe essere un'informazione totalmente sbagliata e/o fuorviante.
E non contionuo perchè si possono trovare migliaia di problemi possibili.


Come risolvere questi problemi?
Sia il punto 1 che il punto 2 possono essere risolti (con molta difficoltà) istruendo delle cosiddette "reti neurali" ovvero, detta molto semplicemente, mediante l'utilizzo di algoritmi di autoapprendimento basati su un numero definito di "domande e risposte" corrette iniziali (o nel caso del punto 1 con domande ed interpretazioni corrette) , le quali essendo opportunamente elaborate secondo alcune logiche come ad esempio degli algoritmi fuzzy, sono in grado appunto di "istruire" la rete la quale, ad ogni ricerca, sarà in grado di diventare sempre più accurata creando un circolo virtuoso sempre maggiore fino a raggiungere asintoticamente la perfezione nella ricerca.


Questa è detta molto molto semplicemente, ma fondamentalmente è quello che ti serve. Un buon esempio di tutto questo si chiama shazam, che oltre ad un immenso database di canzoni, sfrutta sicuramente delle reti neurali al fine di comprendere un numero sempre maggiore di musiche nel minor tempo possibile, e questo lo si fa istruendo delle reti neurali che autoapprendono continuamente quali siano le peculiarità di una porrzione di brano in termini di frequenze, spettro, e chissà quali altri parametri.

Detto questo informati e buona fortuna, ti servirà.
Dopo aver letto questo mi serviranno molte altre cose oltre che alla fortuna, rimane comunque qualcosa di veramente interessante. Come alternativa pensavo a un software che faccia domande e che qualora non sappia la riposta la chieda all'utente in modo da inserire le risposte in un database contenuto nel Computer. Ovviamente sarebbe qualcosa di molto più banale ma allo stesso tempo molto più semplice. Ti ringrazio per il tuo intervento molto esaustivo.


Inviato dal mio iPhone 6 tramite TapaTalk
 
Non voglio fare il solito guasta feste, ma: no, non è possibile. Giusto per ricapitolare:
Jessie ha detto:
è possibile creare una piccola intelligenza artificiale magari che riconosca la voce tramite microfono e risponda scrivendo? Pensavo a una cosa non troppo complicata perchè già immagino quanto possa essere difficile programmare una cosa del genere

Il programma dovrebbe fare una specie di ricerca sul web "per conto suo" senza aprire schede o browser e poi fornire la risposta, inoltre dovrebbe imparare tutto quello che gli viene detto come una specie di memoria virtuale.

magari con anche qualche altra funzione.

(conosci qualche linguaggio di programmazione?)
No, mi sono informato un po' sui linguaggi di programmazione che andrebbero usati (Prolog & Lisp) ma non ho nessuna conoscenza. Mi piacerebbe iniziare e spero di farlo il prima possibile.

Finché c'è la la voglia e la passione si può arrivare dovunque magari non domani non tra una settimana o un mese ma niente è impossibile.

È un po' come pretendere di costruire una navicella spaziale sapendo usare cacciavite e martello.
Se è il sogno della tua vita magari iniziando a studiare oggi magari arrivi ad avere le competenze necessarie per provare a fare qualcosa di funzionante tra 7-8 anni, ma da come hai posto la domanda la vedo più come una cosa: "mh, why not? sarebbe figo fare una cosa del genere, magari a tempo perso ci do un'occhiata".
I ricercatori non sono ancora riusciti a fare qualcosa di simile che funzioni realmente bene, non è fantascienza (i motori di ricerca ne sono la prova), ma è ancora un settore in fase di sviluppo. Sono cose ben lontano dall'essere piccole e semplici anche limitando di molto il dominio delle possibili domande (eg. un software che risponde alle domande sulla geografia).
Ci sono dei progetti opensource, ma sono quasi tutti abbastanza abbandonati perché la maggior parte di loro sono in un vicolo cieco, non funzionano abbastanza bene da trovare uno sbocco pratico sufficiente per poter ripagare l'investimento necessario per mantenere un progetto di questa portata.

Se questo è veramente un argomento che ti interessa, allora inizia dal basso. Scegli un linguaggio di programmazione, inizia dall'hello world e le calcolatrici fino ad impararlo a fondo, già questo ti porterà via parecchio tempo. Poi studia un po' di metodi probabilistici applicati all'informatica e inizia ad indirizzarti verso gli argomenti necessari per creare il software che ti interessa. È inutile iniziare a discutere su cosa togliere per semplificare questo programma e renderlo più fattibile se ancora non hai le basi per far nulla, facciamo le cose un passo alla volta. La fortuna è proprio l'ultima cosa che ti serve.
 
Non voglio fare il solito guasta feste, ma: no, non è possibile. Giusto per ricapitolare:


È un po' come pretendere di costruire una navicella spaziale sapendo usare cacciavite e martello.
Se è il sogno della tua vita magari iniziando a studiare oggi magari arrivi ad avere le competenze necessarie per provare a fare qualcosa di funzionante tra 7-8 anni, ma da come hai posto la domanda la vedo più come una cosa: "mh, why not? sarebbe figo fare una cosa del genere, magari a tempo perso ci do un'occhiata".
I ricercatori non sono ancora riusciti a fare qualcosa di simile che funzioni realmente bene, non è fantascienza (i motori di ricerca ne sono la prova), ma è ancora un settore in fase di sviluppo. Sono cose ben lontano dall'essere piccole e semplici anche limitando di molto il dominio delle possibili domande (eg. un software che risponde alle domande sulla geografia).
Ci sono dei progetti opensource, ma sono quasi tutti abbastanza abbandonati perché la maggior parte di loro sono in un vicolo cieco, non funzionano abbastanza bene da trovare uno sbocco pratico sufficiente per poter ripagare l'investimento necessario per mantenere un progetto di questa portata.

Se questo è veramente un argomento che ti interessa, allora inizia dal basso. Scegli un linguaggio di programmazione, inizia dall'hello world e le calcolatrici fino ad impararlo a fondo, già questo ti porterà via parecchio tempo. Poi studia un po' di metodi probabilistici applicati all'informatica e inizia ad indirizzarti verso gli argomenti necessari per creare il software che ti interessa. È inutile iniziare a discutere su cosa togliere per semplificare questo programma e renderlo più fattibile se ancora non hai le basi per far nulla, facciamo le cose un passo alla volta. La fortuna è proprio l'ultima cosa che ti serve.
Concordo ma la mia era più una curiosità, capisco le difficoltà di un progetto del genere.
 
  • Mi piace
Reazioni: St3ve
Tutti almeno una volta ci abbiamo pensato!
L'unica via che mi sento di suggerirti è l'utilizzo di API di grandi motori di ricerca; che ti evitano il lavoro duro.
Se fai un salto su GitHub magari trovi qualche script che ti può far comodo e partire da quello!
 
Stato
Discussione chiusa ad ulteriori risposte.