-
Title:
22-36 Urank
-
Description:
-
El objetivo para el resto de este unidad
-
es modificar nuestro código del motor de búsqueda para implementar
-
el algoritmo PageRank. Tenemos solo un pequeño problema. PageRank
-
es una marca registrada de Google. Así que no vamos
-
a llamar a nuestro algoritmo PageRank, incluso aunque haga
-
lo mismo. Lo llamaremos URank. Lo primero
-
que tenemos que ser capaces de hacer, para implementar
-
este algoritmo de clasificación, es realizar un seguimiento del grafo de enlaces.
-
de manera que el grado de popularidad de nuestras páginas dependa de la estructura del enlace. Esto significa que necesitamos
-
realizar el seguimiento de qué páginas enlazan a qué páginas. Así que, por cada enlace, hay
-
una conexión entre páginas y podemos imaginar
-
eso como un grafo. En abstracto, un grafo
-
es justo un conjunto de nodos, los cuales representaremos
-
como círculos, con conexiones entre los nodos.
-
Y como nuestras conexiones van en una dirección, como
-
los enlaces de una página, lo llamaremos un grafo dirigido.
-
Así que para representar nuestra estructura de enlace web
-
necesitamos construir el grafo dirigido. Las páginas
-
en el grafo son los nodos. Por cada página,
-
necesitamos realizar el seguimiento de las conexiones que unen
-
ese nodo con los otros nodos. Y así, la forma
-
en la que lo vamos a hacer es manteniendo un diccionario.
-
Así que vamos a tener un diccionario donde las entradas
-
en el diccionario son los nodos, que son las URLs,
-
es decir, las páginas. Y por cada URL, tendremos una
-
lista de todas las páginas con las que esta enlaza. Así que
-
si se trata de decir el nodo A, y estos fueran los nodos
-
B, C, y D, nuestra entrada para el nodo A contendría
-
la lista B, C, D. Y nuestra entrada para
-
el nodo B, bien, no hay conexiones saliendo de B,
-
así que sería una lista vacía. Y para terminar el ejemplo, C tiene un enlace de salida a
-
un nodo, y D no tiene enlaces de salida. Así
-
que ese es nuestro objetivo. Queremos construir una estructura
-
como esta que muestra la estructura de las
-
páginas web que procesamos, y vemos esa estructura
-
porque estamos siguiendo los enlaces en nuestro proceso. Así
-
que nuestro objetivo es modificar el procedimiento del proceso de seguimiento
-
que definimos al final de la Unidad Cinco. Y para
-
modificarlo de manera que en vez de generar solamente un índice,
-
también genera un grafo. Así que vamos a modificar el proceso.
-
Va a seguir tomando una página inicial para comenzar. Pero lo que
-
va a generar ahora son dos cosas, un índice y un
-
grafo. Y el grafo es una estructura que nos proporciona un esquema
-
de cada nodo con las páginas con las que enlaza.
-
vamos a mirar el código que teníamos al final de
-
la Unidad Cinco y veamos como cambiarlo. Así que
-
aquí está el código, que teníamos al final de la Unidad Cinco,
-
para procesar la web. Y como recordatorio, vamos a realizar el seguimiento de
-
las páginas pendientes de procesar en la lista empezando con
-
la página inicial, y vamos a ir construyendo el índice como un
-
diccionario. Y mientras haya páginas pendientes de procesar,
-
iremos por el bucle Y, que encuentra la página a procesar,
-
extrayendo la lista de páginas a procesar. Siempre que
-
no la hayamos procesado antes, se extrae el contenido de esa
-
página. La añade al índice. Encuentra todos los
-
enlaces, utilizando "getalllinks", pasando el contenido de la página y
-
agrupando aquellas con "tocrawl" para actualizar la lista "tocrawl" y luego
-
añade esta página a la lista de páginas que
-
ya han sido procesadas. Así que para cambiar esto para crear el grafo,
-
vamos a mantener intacto la mayor parte del código. Además de
-
generar solo el índice, vamos a generar la gráfica. Y el
-
grafo va a ser también un diccionario. Y la razón de que el
-
grafo sea un diccionario es que el esquema de los nodos, que
-
son URLs a la lista de conexiones que salen de
-
ese nodo. Así que crearemos el grafo como un diccionario vacío.
-
Y a medida que encontramos nuevas páginas, vamos a añadirlas
-
al grafo. Y vamos a cambiar la devolución para devolver
-
ambos, el índice y el grafo. Voy a hacer un cambio
-
más antes de poner el "quiz". Y el cambio que
-
voy a hacer es, en vez de llamar a "getalllinks" aquí,
-
ya que ambos, la construcción del grafo y la lista "tocrawl" dependen
-
de conocer todos los enlaces, vamos a crear una
-
nueva variable. Y asignaremos el resultado de "getalllinks" a
-
esa variable. Eso significa que podemos usar esos enlaces
-
como parámetro de entrada. Pero podemos usarlos
-
para construir el grafo. Y voy a dejar
-
la línea que necesito para construir el grafo para
-
que tu la completes. Así que vamos a hacer que ese sea el "quiz" para terminar
-
este código. Escribe la línea que necesitamos para actualizar el grafo.