Existen un montón de herramientas disponibles en Internet que pueden ser de gran utilidad para un SEO. La mayoría de ellas han sido generadas por grupos de trabajo que llevan dedicandose varios años a estos temas y que han tenido a bien dejar el fruto de su trabajo en la Red para que los demás podamos usarlo, disfrutar de él y, sobretodo, ahorrarnos una cantidad de tiempo bestial.
Entre las herramientas más usadas y conocidas para hacer experimentos en recuperación de información se encuentran entre otras Lucene, Nutch, Terrier, Lemur ó Xapian. Si nos movemos al campo del analisis de datos tenemos algunas joyas como Weka, CLUTO, KEA, Carrot2 o UIMA , por solo mencionar unas cuantas.
En esta sección iremos repasando algunas de estas herramientas, haciendo un breve repaso de su arquitectura y explicando algunos ejemplos sencillos de como empezar a utilizarlas. Hoy vamos a empezar por Terrier un software que está causando sensación en los
congresos más importantes sobre IR.
Introducción
Terrier es una implementación en Java de un motor de búsqueda desarrollado por el Grupo de Recuperación de Información de la Universidad de Glasgow, el cual está dirigido por Keith van Rijsbergen, quien ya escribía de estas cosas cuando a mi todavía me cambiaban los pañales. La base teórica de Terrier, de la que hablaremos en próximos posts, es un modelo llamado DFR (Divergence From Randomness), el cual se fundamenta en un enfoque probabilístico del proceso de recuperación de información.
El uso de esta herramienta nos facilita mucho el trabajo, pues nos permite indexar una colección de documentos de forma que podamos saber la frecuencia de los términos en la colección, cuantos documentos contienen un término determinado, cuantos documentos hay en la colección, etc. Todo esto que nos llevaría unas cuantas horas de programación, lo tenemos con Terrier en unos poco minutos y con una eficiencia y escalabilidad difícil de igualar.
La utilidad principal que le puede sacar un SEO a esta herramienta reside en que puede utilizarla para generar infinidad de estadísticas sobre un sitio web para el cual esté realizando una campaña de posicionamiento. Evidentemente si el sitio web tiene pocas páginas no hace falta ni Terrier ni nada, pero si trabajamos con una empresa gorda con un sitio web que contenga miles de páginas más nos vale poder automatizar en lo posible el proceso de análisis, y aquí es donde herramientas como Terrier pueden sernos de gran ayuda.
Tampoco es el objetivo aquí hacer un manual de Terrier, pero si voy a hablar de algunas características básicas de su arquitectura que sirvan para empezar a trabajar con él. Como la cosa me estaba quedando un poco larga he dividido el post en dos partes, la primera centrada en la indexación de colecciones y la segunda, que la publicaré en breve, centrada en el proceso de consulta del índice.
Instalación
Terrier se puede descagar libremente de la web de grupo de investigación en IR de la universidad de Glasgow. Te piden los datos personales, pero es puro formalismo, y enseguida recibes un mail con la dirección desde la cual lo puedes descargar.
Un vez tienes Terrier en tu ordenador tan sólo tienes que descomprimirlo para empezar a usarlo. en el directorio terrier/bin tienes varios ejecutables para linux y para windows que te permitiran empezar a jugar con Terrier, quizás el más interesante es desktop_terrier.* que te permite lanzar un interfaz gráfico de usuario con el que realizar labores básicas de indexación y búsqueda sobre una colección. Aunque el entorno gráfico de Terrier puede resultar útil en algunos casos, he preferido que nos metamos a verle las tripas a la aplicación, de cara a entender un poco mejor su funcionamiento.
Detro de las herramientas que Terrier nos ofrece podemos distinguir entre dos APIs diferenciados, uno para indexar la colección de documentos con la que vayamos a trabajar y otro para recuperar documentos de esa colección. En este primer post nos centraremos en las clases correspondientes al proceso de indexación de la colección de documentos.
El API de indexación
El API de indexación tiene dos elementos clave (definidos como interfaces si usamos la terminología de la programación orientada a objetos), Collection y Document, los cuales actuan como modelos de cualquier tipo de colección y documento, respectivamente, que queramos procesar con Terrier. Normalmente debemos implementar estos dos elementos para adaptarlos a nuestra necesidades, pero por suerte para nosotros la gente de Terrier ha implementado Document para los casos más típicos como PDF, HTML WORD y texto plano, por lo que sólo tendremos que usar estas clases, que implementan el interfaz Document,
para echar a andar nuestro indexador sobre páginas web.
De la indexación se encarga una clase llamada Indexer, de la cual heredan dos clases básicas, BasicIndexer y BlockIndexer. en nuestros ejemplo usaremos BasicIndexer que es la más sencilla. BlockIndexer se suele usar cuando queremos indexar por bloques.
Cuando Terrier indexa una colección de documentos con cualquiera de las clases anteriores, se generan cuatro tipos distintos de estructuras de datos, de forma que podamos acceder a los datos generados durante la indexación de la forma más cómoda y eficiente posible. Estas estructuras son:
- Lexicon: que almacena todas las palabras de la colección.
- Document Index: que almacena información sobre los documentos como por ejemplo su longitud.
- Direct File: que almacena información sobre las palabras que contiene cada documento.
- Inverted Index: que contiene las palabras asociadas a los documentos en los que aparecen.
Cada una de estas estructuras de datos esta implementada en base a distintas clases, unas que nos permiten un acceso secuencial al índice y otras que nos permiten un acceso random, es decir, nos permiten acceder a un punto concreto del indice sin tener que recorrerlo entero. De todas ellas hablaremos cuando describamos la forma de acceder al índice.
Un ejemplo sencillo sobre como indexar una colección.
Una vez hemos visto cual es la estrucutra del índice que se genera, lo mejor es que veamos algunos ejemplos prácticos de como indexar una colección. Los ejemplos están implementados en código Java y presuponiendo que el sistema operativo el Linux, pero que nadie se enfade, todos los ejemplos funcionan perfectamente en Windows y Mac con tan sólo unos pequeños cambios en las rutas de los ficheros.
Primero veamos un ejemplo de como indexar una colección con Terrier. Supongamos que tenemos una colección de documentos en HTML, todos ellos pertenecientes a un sitio web para el cual estamos estudiando mejoras en su posicionamiento. El primer paso para entender la base léxica (es decir las palabras que se usan en ese sitio web) de esta colección será indexarla, con el objetivo de obtener unas estadísticas básicas de las palabras que aparecen, con que frecuencia y en que documentos. Por suerte para nosotros hacer esto con Terrier es muy sencillo, y con unos conocimientos básicos de Java podremos alcanzar nuestro objetivo.
Lo primero que necesitamos es meter todas páginas web que contiene el sitio en un mismo directorio, sin preocuparnos de que estén organizadas por carpetas. Una vez hecho esto podemos utilizar el siguiente código en Java para decirle a Terrier que indexe todos los documentos que contiene el directorio donde hemos metido las páginas web.
Como no quiero que el post quede muy lioso, he descrito los detalles de implementación dentro de las clases que teneis enlazadas abajo, así evito poner codigo fuente en el post. Todo el código que aparecerá a continuación se puede ejecutar directamente por línea de comandos.
La clase OjOSetup.java sirve para generar los archivos de configuración y un fichero con los documentos que vamos a indexar. Esta clase debemos usarla siempre antes de empezar a indexar, pues si no lo hacemos Terrier no se va a enterar de qué documentos tiene que procesar, la lista de documentos que se van a indexar se almacena en un fichero llamado collection.spec, el cual se genera automáticamente con la clase OjOSetup.java. Por otro lado el fichero que contiene la configuración básica de Terrier se llama terrier.properties y también se genera con la clase OjOSetup. El resto de fichero generados permiten elegir las distintas opciones de configuración que ofrece Terrier de las cuales hablaremos en otros post más adelante.
A continuación utilizamos la clase OjOIndexer.java para indexar nuestra colección, como veis son cuatro líneas de nada y con ella podemos indexar HTML, PDF, texto plano y Word (casi ná
Un apunte importante, para ejecutar todas las clases que tienen que ver con Terrier, excepto OjOsetup.java, necesitamos pasarle los siguientes parámetros a la máquina virtual de java: -Dterrier.home= [Directorio-donde-has-descomprimido-terrier]-Dterrier.setup= [Directorio-donde-has-descomprimido-Terrier]/etc/terrier.properties
Para ver más detalles sobre estas clases lo mejor es que las veais por vosotros mismos, las he comentado para que se vea bien que hace cada cosa.
Y una vez aquí ya tenemos nuestra colección indexada y lista para ser usada ![]()
Habrá que probarlo
Realmente excelente el articulo, felicitaciones.
Felicitaciones por el artículo. Si alguna cosa podía faltar a ojobuscador, eran artículos más técnicos y más orientados a los tecnólogos con “aspiraciones a seo” como puede ser este excelente “manual básico” de Terrier, programa que descargué y intalé en el momento en que leí el post y que creo es de gran utilidad y con unos resultados realmente interesantes.
La máquina utilizada era un linux con Fedora 3, java 1.2 y tomcat y aunque no he tenido mucho tiempo, lo poco que he visto es un trabajo “casi” perfecto. A mi parecer falta un poco de documentación pero esta sería una de las pocas pegas.
Quedo a la espera de la segunda parte del artículo.
Saludos y felicidades!
[...] En el post anterior hemos visto como indexar una colección de documentos con Terrier. En este veremos como acceder a ese índice para buscar documentos en él. También le echaremos un vistazo a la interfaz gráfica de Terrier y veremos como extraer datos del índice como la frecuencia de las palabras por documento o la frecuencia total de una palabra en la colección. [...]
muchs gracias, me alegra mucho que os allá gustado, a ver si voy acertando también con el resto
allá no, haya (pirada de pinza)