0:00:00.000,0:00:02.018 [Sebastian Thrun] Qual è la tua opinione su come si realizza un motore di ricerca, 0:00:02.018,0:00:03.077 tu ne hai già realizzato uno, vero ? 0:00:03.077,0:00:06.008 [Sergey Brin, Co-fondatore di Google] Si. Io credo che la cosa più importante, 0:00:06.008,0:00:08.013 se stai pensando di realizzare un motore di ricerca, 0:00:08.013,0:00:12.051 è avere una buona base di informazioni da cui partire. 0:00:12.051,0:00:19.020 Nel nostro caso abbiamo usato il world wide web, che al momento era certamente più piccolo di quanto lo sia oggi. 0:00:19.020,0:00:21.036 Era una cosa nuova e molto stimolante, 0:00:21.036,0:00:23.081 con molte parti ancora inesplorate. 0:00:23.081,0:00:26.099 [David Evans] L'obiettivo delle prime tre unità del corso è di costruire la base di informazioni 0:00:27.003,0:00:30.009 In particolare, vogliamo costruire una base di informazioni per il nostro motore di ricerca 0:00:30.009,0:00:32.090 analizzando il web, che è esattamente quello che fa un web crawler. 0:00:32.090,0:00:36.038 Un web crawler è un programma che colleziona i contenuti estratti dal web. 0:00:36.038,0:00:40.054 Prova a pensare ad una pagina web nel tuo browser, sarà una pagina tipo questa. 0:00:40.054,0:00:43.099 Usiamo il sito web di Udacity come esempio di pagina web. 0:00:43.099,0:00:47.097 E' una pagina piena di contenuti, con molte immagini e del testo. 0:00:47.097,0:00:51.038 Tutto questo appare nel tuo browser quando richiedi di visualizzare la pagina. 0:00:51.038,0:00:53.066 La cosa importante di una pagina sono i collegamenti ipertestuali. 0:00:53.066,0:00:57.093 Un collegamento ipertestuale è qualcosa che ci indirizza verso un'altra pagina. 0:00:57.093,0:01:00.050 Abbiamo, quindi, un collegamento alle domande più frequenti, 0:01:00.050,0:01:02.046 un collegamento alla pagina di CS 101, 0:01:02.046,0:01:04.043 più altri collegamenti verso altre pagine web. 0:01:04.043,0:01:07.054 Un collegamento può comparire, nel browser, come testo sottolineato 0:01:07.054,0:01:09.094 ma potrebbe anche comparire in altri modi, dipende dalle impostazioni del tuo browser. 0:01:09.094,0:01:11.095 Ma la cosa importante che un collegamento permette di fare 0:01:11.095,0:01:13.088 è di puntare verso altre pagine web 0:01:13.088,0:01:16.043 che, a loro volta, possono contenere altri collegamenti 0:01:16.043,0:01:19.073 e quindi abbiamo un altro collegamento verso questa pagina 0:01:19.073,0:01:23.052 Potrebbe essere il mio nome che ci indirizza alla mia home page, 0:01:23.052,0:01:26.091 Tutte le pagine che noi riusciamo a trovare con il nostro web crawler 0:01:26.091,0:01:29.009 sono ottenute seguendo i collegamenti 0:01:29.009,0:01:31.067 così non sarà necessario esplorare ogni pagina sul web. 0:01:31.067,0:01:33.059 Se si inizia da una buona pagina di partenza 0:01:33.059,0:01:35.003 troveremo molte pagine. 0:01:35.003,0:01:37.050 Ciò che un web crawler dovrà fare è partire da una pagina, 0:01:37.050,0:01:41.056 recuperare tutti i collegamenti all'interno di questa pagina, seguire i collegamenti per trovare altre pagine 0:01:41.056,0:01:45.013 e, su queste altre pagine, seguire i collegamenti presenti su queste pagine 0:01:45.013,0:01:48.031 per trovare ancora altre pagine, ci saranno molti altri collegamenti su queste pagine. 0:01:48.031,0:01:51.043 Ed infine, avremo una collezione di molte pagine presenti nel web. 0:01:51.043,0:01:54.007 Questo è quello che dovremmo fare per realizzare un web crawler. 0:01:54.007,0:01:56.095 In qualche modo noi dovremmo iniziare da una pagina di partenza, 0:01:56.095,0:01:59.056 estrarre i collegamenti dalla pagina, 0:01:59.056,0:02:01.078 seguire tutti i collegamenti individuati verso altre pagine, 0:02:01.078,0:02:03.067 collezionare i collegamenti di queste nuove pagine, 0:02:03.067,0:02:05.024 seguirli e collezionare tutti i collegamenti di tutte le pagine esplorate. 0:02:05.024,0:02:07.038 Sembra che ci sia molto da fare. 0:02:07.038,0:02:09.014 Non faremo tutta la procedura nella prima unità, 0:02:09.014,0:02:12.072 ma ciò su cui ci concentreremo nella prima unità sarà l'estrazione di un collegamento 0:02:12.072,0:02:14.058 Quindi, iniziamo con del testo 0:02:14.058,0:02:17.033 che ha un collegamento al suo interno specificato tramite un URL 0:02:17.033,0:02:19.064 Vogliamo cercare l'URL all'interno del testo 0:02:19.064,0:02:21.089 in modo da poter fare una richiesta per la pagina successiva 0:02:21.089,0:02:23.082 L'obiettivo per la seconda unità 0:02:23.082,0:02:25.016 è di essere in grado di continuare la ricerca, 0:02:25.016,0:02:28.049 se ci sono molti collegamenti in una pagina, dovremmo estrarli tutti. 0:02:28.049,0:02:30.014 Questo è ciò che faremo nella seconda unità, 0:02:30.014,0:02:32.069 cercare di capire come proseguire con la procedura per estrarre tutti i collegamenti 0:02:32.069,0:02:36.061 Nella terza unità, andremo oltre l'analisi della singola pagina. 0:02:36.061,0:02:40.033 Quindi, al termine della seconda unità, riusciremo a visualizzare tutti i collegamenti presenti in una pagina e 0:02:40.033,0:02:44.002 nella terza unità, collezioneremo tutti i collegamenti in modo da reiterare la procedura 0:02:44.002,0:02:47.018 e garantire che il nostro web crawler riesca a raccogliere molte pagine. 0:02:47.018,0:02:50.013 Quindi, al termine della terza unità, avremo costruito il web crawler. 0:02:50.013,0:02:52.033 Ci saranno molti modi per costruire la nostra base di informazioni 0:02:52.033,0:02:57.079 e quindi, per le restanti tre unità, analizzeremo come rispondere alle interrogazioni sulla base di informazioni 0:02:57.079,0:03:01.034 Nella quarta unità, capiremo come ottenere una buona risposta 0:03:01.034,0:03:08.022 in modo che se cerchi una parola chiave, tu possa ricevere in risposta la lista completa di tutte le pagine 0:03:08.022,0:03:10.063 in cui quella parola chiave compare. 0:03:10.063,0:03:15.090 E nella quinta unità vedremo un modo per poterlo fare, che sia estendibile nel caso di base di informazioni di grandi dimensioni. 0:03:15.090,0:03:19.083 E successivamente, nella sesta unità , quello che faremo sarà non solo trovare un elenco delle pagine, 0:03:19.083,0:03:21.069 ma ottenere come risultato la pagina migliore. 0:03:21.069,0:03:24.084 Quindi, cercheremo di capire come pesare le pagine in cui compare la parola chiave. 0:03:24.084,0:03:27.068 Bene, stiamo andando un pò oltre adesso, 0:03:27.068,0:03:30.035 perché tutto ciò che dobbiamo fare per la prima unità 0:03:30.035,0:03:32.064 è cercare di capire come estrarre un collegamento dalla pagina. 0:03:32.064,0:03:35.073 E il motore di ricerca che costruiremo alla fine del corso 0:03:35.073,0:03:37.034 sarà un motore di ricerca di tipo funzionale. 0:03:37.034,0:03:40.061 Avrà le componenti principali di cui dispone un motore di ricerca come Google. 0:03:40.061,0:03:43.014 Certamente non sarà potente come Google 0:03:43.014,0:03:44.029 dato che vogliamo mantenere le cose semplici e 0:03:44.029,0:03:46.060 avere una piccola quantità di codice da scrivere. 0:03:46.060,0:03:48.010 Non dobbiamo dimenticarci che il nostro vero scopo 0:03:48.010,0:03:50.024 non è tanto quello di costruire un motore di ricerca 0:03:50.024,0:03:52.078 ma di usare l'obiettivo di costruire un motore di ricerca come veicolo 0:03:52.078,0:03:55.018 per conoscere l'informatica 0:03:55.018,0:03:56.075 e approfondire il tema della programmazione. 0:03:56.075,0:03:58.018 E quindi, le cose che impareremo facendo tutto questo 0:03:58.018,9:59:59.000 ci torneranno utili per risolvere molti altri tipi di problemi.