0:00:00.000,0:00:02.018 [Sebastian Thrun] Então, qual é a tua opinião sobre a construção de um motor de busca, 0:00:02.018,0:00:03.077 já criaste um, certo? 0:00:03.077,0:00:06.008 [Sergey Brin - co-fundador, Google] Sim. Eu acho que a coisa mais importante 0:00:06.008,0:00:08.013 se fores construir um motor de busca 0:00:08.013,0:00:12.051 é começar com um corpus (material) extremamente bom. 0:00:12.051,0:00:19.020 No nosso caso, usámos a world wide web (WWW), que na época era significativamente menor do que é hoje. 0:00:19.020,0:00:21.036 Mas também era muito nova e excitante. 0:00:21.036,0:00:23.081 Havia todo o tipo de coisas inesperadas lá. 0:00:23.081,0:00:26.099 [David Evans] O objectivo para as três primeiras aulas do curso é construir esse corpus. 0:00:27.003,0:00:30.009 E queremos construir o corpus de nosso motor de busca 0:00:30.009,0:00:32.090 rastreando a web e é isso o que um "web crawler" faz. 0:00:32.090,0:00:36.038 Um "web crawler" é um programa que colhe o conteúdo da web. 0:00:36.038,0:00:40.054 Se pensares numa página web que vês no teu navegador, tens uma página como esta. 0:00:40.054,0:00:43.099 E vamos usar o sítio da Udacity como página web exemplificativa. 0:00:43.099,0:00:47.097 Tem muito conteúdo, tem algumas imagens, tem algum texto. 0:00:47.097,0:00:51.038 Tudo isto entra no teu navegador quando solicitas a página. 0:00:51.038,0:00:53.066 O importante é que tem ligações (links). 0:00:53.066,0:00:57.093 E uma ligação é algo que te leva para outra página. 0:00:57.093,0:01:00.050 Portanto, temos uma ligação para as perguntas frequentes, 0:01:00.050,0:01:02.046 temos uma ligação para a página do CS 101. 0:01:02.046,0:01:04.043 Existem outras ligações na página. 0:01:04.043,0:01:07.054 E essa ligação pode aparecer no teu navegador sublinhada, 0:01:07.054,0:01:09.094 ou não, dependendo das preferências que escolheste para o navegador. 0:01:09.094,0:01:11.095 Mas o importante, 0:01:11.095,0:01:13.088 é que a ligação aponta para uma outra página web. 0:01:13.088,0:01:16.043 E essas outras páginas, poderão também ter ligações, 0:01:16.043,0:01:19.073 portanto, temos outra ligação nesta página. 0:01:19.073,0:01:23.052 Talvez seja para o meu nome, poderás visitar a minha página. 0:01:23.052,0:01:26.091 E todas as páginas que podemos encontrar com o nosso web crawler 0:01:26.091,0:01:29.009 são encontradas seguindo as ligações. 0:01:29.009,0:01:31.067 Não encontraremos necessariamente todas as páginas na web. 0:01:31.067,0:01:33.059 Se começarmos com uma boa página-semente, 0:01:33.059,0:01:35.003 iremos encontrar muitas outras páginas. 0:01:35.003,0:01:37.050 E o que o crawler vai fazer é, a partir de uma única página, 0:01:37.050,0:01:41.056 encontrar todas as ligações dessa página, segui-las para encontrar outras páginas 0:01:41.056,0:01:45.013 e, em seguida, nessas outras páginas seguirá as respectivas ligações 0:01:45.013,0:01:48.031 para encontrar outras páginas e haverão muitas mais ligações nessas páginas. 0:01:48.031,0:01:51.043 E eventualmente vamos ter uma colecção de muitas páginas da web. 0:01:51.043,0:01:54.007 Portanto é isso que queremos fazer para construir um web crawler. 0:01:54.007,0:01:56.095 Queremos encontrar uma maneira de começar por uma página-semente, 0:01:56.095,0:01:59.056 extrair as ligações dessa página, 0:01:59.056,0:02:01.078 seguir as ligações para outras páginas, 0:02:01.078,0:02:03.067 em seguida recolher as ligações nessas outras páginas, 0:02:03.067,0:02:05.024 segui-las, recolher isto tudo. 0:02:05.024,0:02:07.038 Parece muita coisa para fazer. 0:02:07.038,0:02:09.014 Não iremos cobrir tudo isto nesta primeira aula. 0:02:09.014,0:02:12.072 O que vamos fazer, nesta primeira aula, é extrair apenas uma ligação. 0:02:12.072,0:02:14.058 Por isso vamos começar com um monte de texto. 0:02:14.058,0:02:17.033 Nele vai existir uma ligação com uma URL. 0:02:17.033,0:02:19.064 O que nós queremos encontrar é essa URL, 0:02:19.064,0:02:21.089 de forma a podermos seguir para a próxima página. 0:02:21.089,0:02:23.082 O objectivo para a segunda aula, 0:02:23.082,0:02:25.016 é ser capaz de continuar este processo. 0:02:25.016,0:02:28.049 Se houver muitas ligações numa página, quererás ser capaz de encontrá-las todas. 0:02:28.049,0:02:30.014 E é isso que vamos fazer na aula 2, 0:02:30.014,0:02:32.069 descobrir como continuar para extrair todas essas ligações. 0:02:32.069,0:02:36.061 Bem, na terceira aula, queremos ir além de uma única página. 0:02:36.061,0:02:40.033 Assim, até o final da aula dois poderemos apresentar todas as ligações duma página. 0:02:40.033,0:02:44.002 Na aula 3 queremos colher todas essas ligações, para que possamos continuar, 0:02:44.002,0:02:47.018 fazendo com que o nosso crawler colha muitas, muitas páginas. 0:02:47.018,0:02:50.013 Assim, no final da aula três teremos construido um web crawler. 0:02:50.013,0:02:52.033 Teremos uma forma de construir o nosso corpus. 0:02:52.033,0:02:57.079 Em seguida, nas restantes três aulas veremos como responder realmente a consultas. 0:02:57.079,0:03:01.034 Assim na aula quatro, iremos descobrir como dar uma boa resposta. 0:03:01.034,0:03:08.022 Se pesquisares um termo no motor, vais querer como resposta uma lista com as páginas 0:03:08.022,0:03:10.063 onde esse termo aparece. 0:03:10.063,0:03:15.090 Iremos descobrir na aula cinco como fazer isso, de forma adaptável, se tivermos um corpus grande. 0:03:15.090,0:03:19.083 E, em seguida, na aula seis o que queremos fazer é não apenas obter uma lista, 0:03:19.083,0:03:21.069 mas sim encontrar a melhor página. 0:03:21.069,0:03:24.084 Portanto iremos descobrir como classificar todas as páginas onde o termo aparece. 0:03:24.084,0:03:27.068 Mas, estamos a pôr a carroça à frente dos bois, 0:03:27.068,0:03:30.035 porque o que vamos fazer na aula um, 0:03:30.035,0:03:32.064 é apenas descobrir como extrair uma ligação da página. 0:03:32.064,0:03:35.073 E o motor de busca que vamos construir no fim 0:03:35.073,0:03:37.034 será um motor de busca funcional. 0:03:37.034,0:03:40.061 Terá os principais componentes que um motor de busca como o Google possui. 0:03:40.061,0:03:43.014 Certamente não será tão poderoso como o Google, 0:03:43.014,0:03:44.029 queremos manter as coisas simples. 0:03:44.029,0:03:46.060 Queremos escrever apenas um pequeno número de linhas de código. 0:03:46.060,0:03:48.010 E devemos lembrar-nos que nosso real objectivo 0:03:48.010,0:03:50.024 não é tanto construir um motor de busca, 0:03:50.024,0:03:52.078 mas sim usar a construção do motor como um veículo 0:03:52.078,0:03:55.018 para aprender matéria de ciências informáticas 0:03:55.018,0:03:56.075 e aprender programação, 0:03:56.075,0:03:58.018 assim, o que aprendermos fazendo isto, 0:03:58.018,9:59:59.000 permitir-nos-á resolver um montão de outros problemas.