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