política de cookies

Utilizamos cookies para facilitar el uso de nuestra página web.

Las cookies que utilizamos no almacenan dato personal alguno, ni ningún tipo de información que pueda identificarle. En caso de no querer recibir cookies, por favor configure su navegador de Internet para que las borre del disco duro de su ordenador, las bloquee o le avise en caso de instalación de las mismas. Para continuar sin cambios en la configuración de las cookies, simplemente continúe en la página web. Al visitar nuestra página web, acepta la instalación de estas cookies en su dispositivo.

x
Bitendian logo

Cómo hacer un crawler para extraer información de interés automáticamente. Episodio 2: Arquitectura

Palabras clave: araña, robot de búsqueda, búsqueda i recuperación de información, bot, buscador, inteligencia artificial, IA, search bot, search robot, robot, crawler, web crawler, information retrieval, information search and retrieval, artificial intelligence, AI

En este artículo, dividido en 4 partes, explicamos cómo implementar un Information Retriever. Es decir, un sistema software capaz de conseguir información de interés de forma automática/desasistida/inteligente a partir de información que se está actualizando constantemente en internet.

En la primera parte hemos planteado el escenario.

Esta  segunda parte es para introducir en qué consiste el Information Retriever, es decir, su arquitectura: qué componentes tiene y dónde encaja.

Arquitectura de un Information Retriever

Explicamos ahora cómo hacer el crawler (en realidad llamarlo crawler es resumirlo, ya que consta de muchos, como veremos) que es capaz de extraer información automáticamente de fuentes de interés, y al que nos referiremos a partir de ahora como el IR (Information Retriever). Para ello, primero describimos la situación actual (sin el IR) y la situación a la que queremos llegar (con el IR).

Situación inicial (system-as-is)

En el Contexto (escenario genérico) hemos descrito lo que representamos en el siguiente diagrama: hay diversas fuentes  I1,I2,I3,... que van actualizando su información.

Empleados de la empresa E acceden a esas fuentes con cierta regularidad a consultar cambios, y la procesan. Es decir, se fijan sólo en la información de interés para sus clientes afectados A1,A2,A3, .... 

Periódicamente (o en el momento en que se den cuenta), si es que aparece alguna información en las fuentes que les empuje a ello, actualizan los aplicativos de E (el ERP, el CRM...). Si procede, contactan con alguno de los afectados por algún medio (mail, teléfono,  whatsapp,...) o bien es el mismo ERP y/o CRM el que envía un mail. O bien son los mismos clientes los que tienen una intranet a la cual se conectan para ver actualizaciones. En cualquier caso, la parte de Information Retrieval no está automatizada. Es decir, son empleados de E, y no programas, los que accedan a las fuentes y actualizan a los afectados de alguna manera.

Es importante puntualizar que los empleados que hacen esta labor de information retrieval y consiguiente actualización de los afectados no es la única labor que hacen, pero sí les consume una parte sustancial de su tiempo.

Situación a la que queremos llegar (system-to-be)

Queremos llegar a una situación como la inicial pero con todo el trabajo de Information Retrieval de los empleados automatizado por el IR. Así, el tiempo liberado a estos empleados lo podrán dedicar a otras cosas. Por ejemplo descubriendo nuevas fuentes de información, o proponiendo mejoras en el Information Retriever. También podrán dedicar más tiempo a un trato humano de más calidad con los clientes existentes, así como a la prospección de nuevos. En el diagrama más abajo vemos como hay un sistema IR. Pues bien, este sistema sustituye a gran parte del tiempo de varios empleados.

Así pues el IR será un nuevo sistema software que automatizará las siguientes tareas:

  1. detectar que hay información nueva en las fuentes I1,I2,I3. Para ello la extraerá con sus crawlers.
  2. leerla y extraer la parte que tenga interés. Para ello la analizará con sus parsers.
  3. actualizar, si procede, y siguiendo unas reglas, los aplicativos de E. Esto indirectamente provocará que los afectados (stakeholders) sean avisados tarde o temprano. Esto será gestionado automáticamente por los brokers.

El IR además será configurable, es decir, se le podrán añadir nuevas fuentes fácilmente o enseñar nuevas reglas. 

En el diagrama representamos los componentes de un IR y cómo trabajan en equipo. Es decir, representamos la arquitectura de un IR:

 

arquitectura de un information retriever (

 

En el próximo episodio describiremos en detalle cada uno de los componentes del IR y daremos las pautas para implementarlos.

 

Glosario

Aclaramos aquí algunos términos que iremos usando. Más que dar su definición genérica (que el lector podrá encontrar en la wikipedia) nos hemos esforzado por decir a qué nos referimos con ellos en este contexto.

Algoritmo: procedimiento, estrategia.

Almacén de contenido descargado: contenido descargado por los crawlers para su posterior tratamiento.

API (Application Programming Interface): invocaciones que ofrece una aplicación para que otras aplicaciones puedan usar algunas de sus funcionalidades.

BD (Base de Datos): una base de datos es un componente de un sistema de software donde se guarda información de forma estructurada.

Bot: un bot es un robot sin cuerpo. Es decir, sólo el software.

Crawler / Araña: bot (programa) que entra en páginas de internet y descarga su contenido (lo que hace google con todas las páginas).

CRM (Customer Relationship Manager): aplicativo que se ocupa de mantener los clientes de una empresa y su relación con ellos.

ERP (Enterprise Resource Planner): aplicativo que se ocupa de gestionar los procesos de producción de una empresa

GUI (Graphical User Interface): controles que puede usar un usuario para usar funcionalidades de una aplicación.

IA (Inteligencia Artificial): paradigma de programación consistente en pensar un algoritmo de la misma manera que lo haría una persona si fuera una persona la que tuviera que hacer el trabajo.

IR (Information Retriever): software que se ocupa de encontrar información incumbiente automáticamente.

Parser: programa que extrae información de un texto.

Programa: es un algoritmo escrito en un lenguaje que un ordenador entiende y así lo puede ejecutar.

Robot: viene del polaco "esclavo" y es algo artificial construido para hacer lo que le digas emulando a lo que haría un humano.

robots.txt: las webs tienen un fichero en su raíz llamado robots.txt que son indicaciones para que si alguien hace un crawler, las respete. Consisten básicamente en no entrar demasiado seguido y no entrar en según qué rutas.

 

Sistema software / Sistema de información / Aplicativo / Aplicación: conjunto de programas y datos que producen nueva información a partir de información existente.