GESTIN DE DATOS MASIVOS DIPLOMADO DE DATOS 2017
- Slides: 72
GESTIÓN DE DATOS (MASIVOS) DIPLOMADO DE DATOS 2017 Clase 5: Recuperación de Información (I) Aidan Hogan aidhog@gmail. com
MANEJANDO DATOS DE TEXTO
Sobrecarga de información
Si no se pudiera usar buscadores … • Contiene todos libros posibles con – – – 25 caracteres en el alfabeto 80 caracteres por línea 40 líneas por página 410 páginas 410 x 40 x 80 = 1. 312. 000 car. 251. 312. 000 libros • Contendría cada libro imaginable – Incluyendo un libro con la ubicación de todos libros útiles ; ) Información total = Cero información
El libro que indexa la biblioteca
BÚSQUEDA EN LA WEB
Implementando la búsqueda de Google
Implementando la búsqueda de Google ¿Qué procesos y algoritmos necesita Google para implementar su búsqueda de la Web? 1. 2. 3. Crawling Parsear enlaces de las páginas Ordenar los enlaces para descargar Descargar páginas, GOTO 1 Ranking ¿Qué tan relevante es una página? ¿Qué tan importante es? ¿Cuántos clics tiene? 1. 2. 3. Indexación Parsear keywords de las páginas Indexear sus keywords Administrar actualizaciones. . .
RECUPERACIÓN DE INFORMACIÓN: CRAWLING
¿Cómo sabe Google acerca de la Web?
Crawling Descargar la Web crawl(list seed. Urls) frontier_i = seed. Urls while(!frontier_i. is. Empty()) new list frontier_i+1 for url : frontier_i page = download. Page(url) frontier_i+1. add. All(extract. Urls(page)) store(page) i++ ¿Qué le falta a este código?
Crawling: Evitar Ciclos Descargar la Web crawl(list seed. Urls) frontier_i = seed. Urls new set done while(!frontier_i. is. Empty()) new list frontier_i+1 for url : frontier_i page = download. Page(url) done. add(url) frontier_i+1. add. All(extract. Urls(page). remove. All(done)) store(page) i++ ¿Cómo es el rendimiento?
Crawling: Rendimiento Descargar la Web crawl(list seed. Urls) frontier_i = seed. Urls new set done while(!frontier_i. is. Empty()) new list frontier_i+1 for url : frontier_i page = download. Page(url) done. add(url) frontier_i+1. add. All(extract. Urls(page). remove. All(done)) Ø La mayoría del tiempo se gastará esperando conexiones store(page) Ø El uso del disco duro/CPU será casi 0 i++ Ø El ancho de banda no será maximizado ¿Cómo es el rendimiento?
Crawling: "Multi-threading" es importante crawl(list seed. Urls) frontier_i = seed. Urls new set done while(!frontier_i. is. Empty()) new list frontier_i+1 new list threads for url : frontier_i thread = new Download. Thread. run(url, done, frontier_i+1) threads. add(thread) threads. poll() i++ Download. Thread: run(url, urls. Seen, frontier_i+1) page = download. Page(url) synchronised: done. add(url) synchronised: frontier_i+1. add. All(extract. Urls(page). remove. All(done)) synchronised: store(page)
Crawling: "Multi-threading" es importante (por ejemplo) Haciendo un crawl de mil URLs … ¿Cuál es el peligro de usar muchos hilos?
Crawling: ¡Es importante ser cortés! Ataqué de Denegación de Servicio (Distribuido) "(Distributed) Denial of Server Attack": (D)Do. S
Crawling: Evitar hacer un (D)Do. S Christopher Weatherhead Ø ¡Preso por 18 meses! … pero más probable que tu IP será baneada
Crawling: Planificador de sitio web crawl(list seed. Urls) frontier_i = seed. Urls new set done while(!frontier_i. is. Empty()) new list frontier_i+1 new list threads for url : schedule(frontier_i) # maximiza el tiempo entre dos peticiones al mismo sitio thread = new Download. Page. Thread. run(url, done, fronter_i+1) threads. add(thread) threads. poll() i++ Download. Page. Thread: run(url, done, frontier_i+1) page = download. Page(url) synchronised: done. add(url) synchronised: frontier_i+1. add. All(extract. Urls(page). remove. All(done)) synchronised: store(page)
Protocolo de exclusión de robots http: //website. com/robots. txt User-agent: * Disallow: / No se permiten bots en este sitio web User-agent: * Disallow: /user/ Disallow: /main/login. html No se permiten bots en la carpeta /user/ ni la página /main/login. html User-agent: googlebot Disallow: / Banea solo el bot con el “user-agent” googlebot.
Robots Exclusion Protocol (non-standard) User-agent: googlebot Crawl-delay: 10 Le dice al googlebot que haga una petición no más de una vez cada 10 segundos User-agent: * Disallow: / Allow: /public/ Banea todo menos la carpeta /public/ para todos los bots User-agent: * Sitemap: http: //example. com/main/sitemap. xml Da un enlace al "site map"
Site-Map: Más información sobre el sitio
Crawling: Puntos importantes • Lista de semillas: Puntos de entrada para el crawling • Frontera: Los próximos URLs a descargarse • Lista de vistos: Para evitar ciclos • Multihilos: Mantiene a las máquinas ocupadas • Cortesía: No sobrecargar los sitios web – Aplicar un retraso entre dos peticiones – Seguir lo que se dice en el archivo robots. txt – Revisar si hay un "site-map"
Crawling: Distribución ¿Cómo implementaríamos un crawler distribuido? for url : frontier_i-1 map(url, count) 1 2 3 4 5 Beneficios similares al uso de multihilos ¿Cuál será el cuello de botella al aumentar el número de máquinas? El bando ancho o la cortesía (los retrasos entre peticiones)
Crawling: ¿Toda la Web? ¿Podemos hacer un crawl de toda la Web?
Crawling: All the Web? ¿Podemos hacer un crawl de toda la Web? ¿Puede Google hacer un crawl de toda la Web?
Crawling: Inaccesibilidad (Pajarita) Broder et al. “Graph structure in the web, ” Comput. Networks, vol. 33, no. 1 -6, pp. 309– 320, 2000
Crawling: Inaccesibilidad ("Deep Web") ¿Qué es la "Deep Web"?
Crawling: Inaccesibilidad ("Deep Web") ¿Qué es la "Deep Web"? • Contenido generado dinámicamente
Crawling: Inaccesibilidad ("Deep Web") ¿Qué es la "Deep Web"? • Contenido generado dinámicamente • Protegido contraseña
Crawling: Inaccesibilidad ("Deep Web") ¿Qué es la "Deep Web"? • Contenido generado dinámicamente • Protegido contraseña • "Dark Web" (usa criptografía)
Crawling: Inaccesibilidad ("Deep Web") ¿Qué es la "Deep Web"? • Contenido generado dinámicamente • Protegido contraseña • "Dark Web" (usa criptografía) Se inventan 46% de las estadísticas en el momento
Crawling: All the Web? ¿Podemos hacer un crawl de toda la Web? ¿Puede Google hacer un crawl de si mismo?
Apache Nutch • Framework open-source para hacer crawling • Compatible con Hadoop https: //nutch. apache. org/
RECUPERACIÓN DE INFORMACIÓN: INDEXACIÓN INVERTIDA
Índices invertidos • Un mapa de palabras a documentos – “Invertido” pues normalmente documentos mapean a palabras ¿Cuáles son las aplicaciones?
Índices invertidos: Un ejemplo 1 Fruitvale Station is a 2013 American drama film written and directed by Ryan Coogler. Índice invertido: Term List Posting List a (1, 2, …) american (1, 5, …) and (1, 2, …) by (1, 2, …) directed (1, 2, …) drama (1, 16, …) … …
Índices invertidos: Un ejemplo de búsqueda american drama • AND: Intersección de "posting lists" • OR: Unión de "posting lists" • PHRASE: ? ? ? ¿Cómo deberíamos implementar PHRASE? Índice invertido: Term List Posting List a (1, 2, …) american (1, 5, …) and (1, 2, …) by (1, 2, …) directed (1, 2, …) drama (1, 16, …) … …
Índice invertidos: Frases 1 1 10 18 21 23 28 37 43 47 55 59 68 71 76 Fruitvale Station is a 2013 American drama film written and directed by Ryan Coogler. Índice invertido: Term List Posting Lists List a (1, 2, …) (1, [21, 96, 103, …]), (2, […]), … american (1, 5, …) (1, [28, 123]), (5, […]), … and (1, 2, …) (1, [57, 139, …]), (2, […]), … by (1, 2, …) (1, [70, 157, …]), (2, […]), … directed (1, 2, …) (1, [61, 212, …]), (4, […]), … drama (1, 16, …) (1, [38, 87, …]), (16, […]), … … …
Índice invertidos: Niveles de indexación "Record-level" (nivel de registro) Mapea palabras a documentos sin sus posiciones en el documento "Word-level" (nivel de palabra) Mapea palabras a documentos con sus posiciones en el documento
Índices invertidos: Normalización de palabras drama america ¿Cómo podemos resolver este problema? Índice invertido: Term List Posting Lists a (1, [21, 96, 103, …]), (2, […]), … american (1, [28, 123]), (5, […]), … and (1, [57, 139, …]), (2, […]), … by (1, [70, 157, …]), (2, […]), … directed (1, [61, 212, …]), (4, […]), … drama (1, [38, 87, …]), (16, […]), … … …
Índices invertidos: Normalización de palabras drama america ¿Cómo podemos resolver este problema? Normalizar palabras: "Stemming" corta los sufijos de las palabras según reglas genéricas: { America , American , americas , americanise } → { america }
Índices invertidos: Normalización de palabras drama america ¿Cómo podemos resolver este problema? Normalizar palabras: "Stemming" corta los sufijos de las palabras según reglas genéricas: { America , American , americas , americanise } → { america } "Lematización" usa conocimiento de la palabra para normalizarla { better , goodly , best } → { good }
Índices invertidos: Normalización de palabras drama america ¿Cómo podemos resolver este problema? Normalizar palabras: "Stemming" corta los sufijos de las palabras según reglas genéricas: { America , American , americas , americanise } → { america } "Lematización" usa conocimiento de la palabra para normalizarla { better , goodly , best } → { good } Reemplazar palabras sinónimas { film , movie } → { movie } Ø La normalización es especifica al lenguaje Ø Hay que usar la misma normalización para el documento y la consulta
Índice invertidos: Espacio "Record-level" (nivel de registro) Mapea palabras a documentos sin sus posiciones en el documento ¿Espacio? (la suma de palabras únicas en cada documento) "Word-level" (nivel de palabra) Mapea palabras a documentos con sus posiciones en el documento ¿Espacio? (la suma de las ocurrencias de palabras en cada documento)
Íncide Invertido: Palabras únicas No hay tantas palabras únicas … • Ley de Heap: – K ∈ [10; 100] – β ∈ [0, 4; 0, 6] Número de palabras únicas • En inglés: Palabras únicas contra palabras totales Número de palabras totales
Índice invertidos: Espacio "Record-level" (nivel de registro) Mapea palabras a documentos sin sus posiciones en el documento ¿Espacio? (la suma de palabras únicas en cada documento) "Word-level" (nivel de palabra) Mapea palabras a documentos con sus posiciones en el documento ¿Espacio? (la suma de las ocurrencias de palabras en cada documento)
Íncide Invertido: Palabras comunes Muchas ocurrencias de pocas palabras / Pocas ocurrencias de muchas palabras • Ley de Zipf • En inglés: – – “the” 7% “of” 3. 5% “and” 2. 7% 135 palabras cubren la mitad de las ocurrencias Ley de Zipf: la palabra más común aparecerá n-veces más qué la enésima palabra ¡Deberíamos esperar "posting lists" muy largos para las palabras más comunes! ¿Solución?
Índices Invertidos: Palabras comunes • ¿Tal vez implementar "stop-words"? • Las palabras más comunes dan la menor cantidad de información the drama in america
Índices Invertidos: Palabras comunes • ¿Tal vez implementar "stop-words"? • ¿Tal vez implementar "block-addressing"? Fruitvale Station is a 2013 American drama film written and directed by Ryan Coogler. Bloque 2 Bloque 1 ¿Cómo afectaría eso la búsqueda por frase? Depende del tamaño de los bloques Term List Posting Lists a (1, [1, …]), (2, […]), … american (1, [1, …]), (5, […]), … and (1, [2, …]), (2, […]), … by (1, [2, …]), (2, […]), … … …
Íncide Invertido: Palabras comunes Muchas ocurrencias de pocas palabras / Pocas ocurrencias de muchas palabras • Ley de Zipf • En inglés: – – “the” 7% “of” 3. 5% “and” 2. 7% 135 palabras cubren la mitad de las ocurrencias Ley de Zipf: la palabra más común aparecerá n-veces más qué la enésima palabra ¡Deberíamos esperar "posting lists" muy largos para las palabras más comunes! ¡Deberíamos esperar más consultas usando palabras más comunes!
La larga cola de búsqueda "The long tail of search"
La larga cola de búsqueda ¿Qué optimización podemos usar? Cachear consultas populares como “coffee”
Para quien le interese…
Implementación de búsqueda • Indexación del Term list: – Hashing: búsquedas O(1) (con hashing ideal) • consultas exactas (sin prefijos o rangos) • fácil de actualizar (aunque ¡rehashing es caro!) – Sorting/B-Tree: búsquedas O(log(u)) (u palabras únicas) • consultas con prefijos o rangos • más difícil de actualizar (pero hay, por ejemplo, técnicas como B-trees) – Tries/FST: búsquedas O(p) (p largo de la palabra) • consultas con prefijos o rangos • comprimido • indexación se vuelve difícil (especialmente en el disco duro) Tries? FSTs? (en la clase)
Almacenamiento • Term list (palabras) – Más pequeño en general – De menudo cabe en memoria principal • Posting lists (documentos): – Más grandes en general – Almacenados en el disco duro (con cachés) Term List Posting List a (1, [21, 96, 103, …]), (2, […]), … american (1, [28, 123]), (5, […]), … and (1, [57, 139, …]), (2, […]), … by (1, [70, 157, …]), (2, […]), … … …
Técnicas de compresión • Compresión numérica es importante Term List Posting Lists country (1), (2), (3), (4), (6), (7), … … …
Técnicas de compresión de alto nivel • Indexación de intervalos – Un ejemplo aquí para indexación de "record-level" • Aplica igual para "word-level" o "block-level" Term List Posting List country (1), (2), (3), (4), (6), (7), … … … Term List Posting List country (1– 4), (6– 7), … …
Técnicas de compresión de alto nivel • Gap indexing – Un ejemplo aquí para indexación de "record-level" • Aplica igual para "word-level" o "block-level" Term List Posting List country (1), (3), (4), (8), (9), … … … Term List Posting List country (1), 2, 1, 4, 1 … … ¿Cuál es la ventaja? Números bajos y repetitivos son más fáciles de comprimir
Técnicas de compresión: Nivel de bits • Codificación de largo variable: técnicas a nivel de bits • Por ejemplo, codificación Elias γ (gamma) – Asume muchos números pequeños z: integer de entrada n = �log 2(z)�en unario 1 0 2 1 0 0 100 3 1 0 1 101 4 11 0 00 11000 5 11 0 01 11001 6 11 0 10 11010 7 11 0 11 11011 8 111 0 000 1110000 … … … ¿Puedes descifrar un marcador 0 las próximas n cifras binarias código Elias γ 0 <1, 2, 1, 1, 4, 8, 5>
Técnicas de compresión: Nivel de bits • Codificación de largo variable: técnicas a nivel de bits • Por ejemplo, codificación Elias δ (delta) – Mejor para algunas distribuciones de números z: integer de entrada n = �log 2(z)� en Elias γ las próximas n cifras en binaria código Elias δ 1 0 2 100 0 1000 3 100 1 1001 4 101 00 10100 5 101 01 10101 6 101 10 10110 7 101 11 10111 8 11000000 … … 0 ¿Puedes descifrar “ 0110000011001001”? <1, 9, 3, 1, 17>
Técnicas de compresión: Nivel de bytes • Usar códigos de longitud variable • Usar último bit del byte para terminar el número • Por ejemplo: 00100100 10100010 18 81 00000101 00100100 274
Compresión parametrizada • Métodos previos son generales – No toman valores de configuración • Otras técnicas son parametrizados: – ej. , codificación Golomb-3 z: integer de entrada n = �(z-1)/3� en unario 1 separador de 0 el resto en binario código Golomb-3 0 0 00 2 0 10 010 3 0 11 011 4 1 0 0 100 5 1 0 10 1010 6 1 0 11 1011 7 11 0 00 1100 8 11 0 010 11010
Otras optimizaciones • Top-Doc: Ordena las posting lists para que entreguen los documentos más importantes (en los top-k rel ranking de los resultados) primero • Selectividad: Carga las posting lists para las palabras claves más raras primero • Distribución: Use múltiples máquinas ¿Cómo se puede distribuir un índice invertido? 1. Partición por palabra 2. Partición por documento
Extremadamente escalable/eficiente. . . cuando se implementa bien.
ÍNDICES INVERTIDOS: UNA SOLUCIÓN
Apache Lucene • Índice invertido – Open Source – Java • La base de varios otros proyectos
Doug Cutting (arriba) & Mike Cafarella (abajo) ¿Cómo se llama del elefante amarillo de Doug? Hadoop
Apache Lucene: Indexando Documentos … continua …
Apache Lucene: Indexando Documentos … continua …
Apache Lucene: Buscando Documents
Apache Lucene: Buscando Documents
¿Preguntas?
- Depósitos
- Gaceta laboral diplomado
- Diplomado upb
- Diplomado guía de turistas 2021 ipn
- Medios de comunicación masivos
- Yacimiento de minerales
- Diplomado en lectura de rostro
- Los informativos
- Diplomado en finanzas corporativas
- Medios masivos de comunicación visuales
- Diplomado en mesoterapia
- Pangunahing mapagkukunan ng datos
- Datos objetivos y subjetivos de enfermería
- Gestin educativa
- Gestin ernest
- Oficina de asuntos de desarme de las naciones unidas
- Gestin
- Gestin f2
- Ies dr miguel campero
- Gestin dali
- Gestin escolar
- Gestin estany
- Gestin ins alba
- Ins torre de malla gestin
- Degestin
- Accin
- Gestin
- Gestin ins salvador dali
- Gestin rdb
- Gestin joan brossa
- Gestin medica
- Gestin joan brossa
- Gestin institut roquetes
- Lucas gestin
- Sixa ies castro alobre
- Gestin
- Gestin brossa
- Gestin institut roquetes
- Gestin institut roquetes
- Gestin ins mediterrania
- Gestin mvm
- Probidad rae
- Gestin
- Gestin
- Moodle bahia de babel
- Small for gestational age causes
- Gestin 3
- Gestin ins alba
- Gestin
- Insbaixmontseny
- Gestin
- Gestin institut roquetes
- Gestin estela
- Edmodo основатели
- Gestin el morell
- Gestin 3
- Gestin institut roquetes
- Gestin xaloc
- Gestin
- Gestin empresarial
- Susan gestin
- Gestin institut roquetes
- Gestin medicamento
- Afd 21
- Indicadores de resultados
- Gestin educativa
- Gestin
- Como saber si un disacarido es reductor
- Gestin mvm
- Gestin itec
- Gestin itec
- Scia engineer 2017
- Cyber security ppt 2017