sábado, agosto 12, 2006

Cluto, una aplicación interesante para trabajar con clusters

En esta mini entrada quería comentar acerca de una aplicación simple pero poderosa orientada a la generación de clusters (análisis de conglomerados). CLUTO (http://glaros.dtc.umn.edu/gkhome/views/cluto) es una aplicación abierta y se adapta a varios ambientes -biología, IR, ecnonomía, etc-.

Personalmente la he utilizado para experimentos de clasificación de textos y me ha servido bastante. SU característica principal es la sencillez de uso, su contra la escalabilidad en W32 (si la matriz de atributos es grande crashea y ajo o ir a un Linux).

Si quieren hacer una prueba rápida de clasificación de textos hagan lo siguiente:

1) Genere un archivo donde se encuentren los n docs a clasificar, para lo cual cada línea representa un documento con sus atributos seleccionados (términos importantes del mismo)

archivo:mio.raw
doc1 término1 término2 ... términoN
doc2 término1 término2 ... términoJ
doc3 término1 término2 ... términoK
...
docM término1 término2 ... términoL

Tratar que los términos contengan la semántica del documento y no sean palabras vacias o de uso frecuente (artículos, preposiciones, conjunciones, etc). Si puede hacerlo normalize los términos en género y número y si son verbos llévelos a su infinitivo.

2) Usando la aplicación doc2mat (viene con Cluto) convierta a mio.raw en estructuras de datos que Cluto pueda procesar

perl doc2mat -nlskip=1 mio.raw mio.mat

nlskip le indica que el primer atributo es el nombre del objeto

En el directorio ahora tendrá los archivos mio.raw y mio.clabel (es el lexicon) y mio.rlabel (nombres de objetos a clusterizar)

3) Ahora hay que generar las clases, para eso se utiliza la aplicación vcluster

vcluster mio.mat 6

Donde 6 hace referencia al número k de clases que se desean generar

Por pantalla se mostrarán una serie de datos que son resultados del procesamiento. En el directorio hallará al archivo mio.mat.clustering.6 que contiene tantos registros como objetos a clasificar y los registros tienen un único atributo que es el número de clase que se le ha asignado, el orden es el mismo que hay en mio.rlabel.

Bueno ahora sigan ustedes, la aplicación tiene una cantidad interesante de parámetros y fucniones de optimización, como así tambie´n interfaces de visualización de clases generadas.

El manual de Cluto en http://glaros.dtc.umn.edu/gkhome/fetch/sw/cluto/manual.pdf


A clusterizar que se acaba el mundo!!!

3 comentarios:

Davor dijo...

Hola te escribo porque a mi tambien me interesa el tema del data mining y he visto que has comentado esto:
Tratar que los términos contengan la semántica del documento y no sean palabras vacias o de uso frecuente (artículos, preposiciones, conjunciones, etc). Si puede hacerlo normalize los términos en género y número y si son verbos llévelos a su infinitivo.
Puedes decirme de una herramienta que haga esto, o como se haria, muchas gracias. davor.ubuntu@gmail.com

Fernando Bordignon dijo...

Lo que propongo es hacer un stemming inteligente basado en diccionario. Por ejemplo hoy existen tablas de verbos conjugados asociados con su infinitivo. O por ejemplo tablas donde en un registro están las diferentes formas de una palabra y su forma canónica o lema (Ej. computaoras, computador, computable -> computadora). No tengo una herramienta que haga eso, pero las tablas están en internet.

oihantze dijo...

HOLA!!estamos intentando instalar cluto, con sus librerias (libcluto.a)!!en el README del programa pone que hagamos:Download CLUTO from http://glaros.dtc.umn.edu/gkhome/views/cluto

Find libcluto.a which matches your environment and place it under
your library path (or specify its path with LIBS option as shown below).

Then do:

perl Makefile.PL [LIBS='-L/where/to/find/libcluto.a -lcluto']
make
make test
make install

el caso es que despues de hacer el paso de Makefile.PL poniendo la ruta donde tenemos la libcluto.a nos da este error y no sabemos ocmo solucionarlo:
'[LIBS' is not a known MakeMaker parameter name.
Note (probably harmless): No library found for -lcluto
Writing Makefile for Statistics::Cluto

si nos podriamos ayudar te lo agredeceriamos pos nuestra intencion es usar cluto para el proyecto de fin de carrera! gracias!!
nuestro e-mail es: oihantze@gmail.com