Adios-Lite 1.0 1 >Que es Adios-Lite 1.0? Es una version demo del software ADIOS que implementa el algoritmo del mismo nombre. Permite extraer a lo sumo 100 patrones, no es de codigo abierto y hay versiones para cygwin y linux. Se puede bajar previo consentimiento de licencia (gratuita, para uso academico) de la pagina http://adios.tau.ac.il/download.html. El software se centra en un archivo ejecutable: adios.exe que implementa el algoritmo en s y varios shell scripts que utilizan ese programa: train.sh (el mas importante por ahora), resume.sh, generate.sh, teacher learner.sh, print.sh y test.sh. Otros binarios son: convert grammar.exe:se usa para convertir una CFG a la representacion de ADIOS create graph.exe:utilizado dentro de train.sh, a partir de un archivo de corpus (ver esquema mas abajo) crea dos archivos que contienen la estructura del grafo: project.idx, basicamente el lexico ordenado y project.grp, el grafo en s. scrambler.exe:reordena aleatoriamente las oraciones de un corpus. 2 Ejemplo de uso Basado en el proyecto includo en la demo (TA1): ./train.sh TA1 Esto genera TA1.results.txt que indica que patrones y clases de equivalencia detecto el algoritmo en base al corpus inicial TA1.corpus.txt . 3 Detalles: 3.1 >que hace cada shell script? train.sh : llama a create graph.exe y a adios.exe con la opcion train resume.sh : contin ua la ejecucion del algoritmo si train.sh se interrumpe, usa la opcion train de adios.exe y los archivos generados por la ejecucion 1 previa de train.sh (o resume.sh): graph.dat (texto plano), patterns.dat (binario), sysparamas.dat (texto plano). generate.sh : llama a adios.exe con la opcion generate, produciendo nuevas oraciones en funcion de los patrones detectados por las etapas anteriores. teacher learner.sh : hace un test de recall/precision en base a una CFG. test.sh : utilizado por el anterior, solo llama a adios.exe (opcion test) print.sh : llama a adios.exe con la opcion print, esto genera archivos que permiten visualizar el arbol de patrones determinados con Matlab 3.2 Opciones del programa adios.exe: Son muchas y permiten setear todos los parametros que inuyen en la ejecuucion del algoritmo y algunos especcos de la implementacion. La opcion -a indica en que modo se utiliza el algoritmo (train/test/print/generate). Una opcion que parece interesante es -v: verbosity level (0 por default -o-, 1 -on). 3.3 Estructura de los archivos: 3.3.1 Archivo de corpus: Ejemplo: primeras lneas de TA1.corpus.txt: * Cindy thinks that George thinks that to read is tough # * Cindy thinks that George thinks that to read is tough # * that the bird is eager to read bothers the dog # Como vemos, cada oracion debe ir en una lnea aparte, los smbolos * y # representan los nodos \start" y \end". Las palabras deben ir siempre separadas por espacios y las oraciones van sin el \." nal. 3.3.2 Archivo de resultados (TA1.results.txt): Luego de varias estadsticas y encabezados se muestran los patrones encontrados, algunos ejemplos: P30 {Cindy, thinks, that, E31} E31 {Beth, Cindy, George,...} #una clase de equivalencia P40 {that, P34, is, E41, to, E39} #un patron que incluye varias #clases de equivalencia y otro patron P34 2 3.4 Otros archivos cuya estructura no se detalla en la documentacion: 3.4.1 Archivos .idx y .grp: contienen la informaci on del grafo El archivo .idx es el lexico utilizado y mantiene la relacion palabra-vertice del grafo inicial. Ejemplo: TA1.idx <EOL> 0 # 1 * 2 Beth 3 Cindy 4 ... worries 29 3.4.2 El archivo .grp Es el que mantiene la estructura en s del grafo. Ejemplo: TA1.grp n m s t a 29 #coincide con el nro. de palabras del lexico 0 1 1 2 4 1000 #hay un arco desde la palabra 2 (*) a la palabra 4 #(Cindy) en la oracion 1, indice de palabra (o arco): 000 a 4 26 1001 a 26 24 1002 ... a 28 0 1010 #fin de la primera oracion, palabra n 11 a 2 4 2000 #comienzo de la seguna oracion ... a 28 0 500010 #ultima oracion, el corpus tiene 500 lineas Estructura de un grafo salvado durante la ejecucion del algoritmo (graph.dat): n m s t a 200000 #? 1757 #? 1 #? 0 #? 2 38 a 2 (nro. de palabras en el original) (0 en el original) (idem original) (1 en el original) 4000 #un arco hacia un nodo nuevo (clase de equivalencia), # el 38. 38 5000 3 ... a 4 a 4 ... 4 4 0 #arcos hacia el mismo lugar, repetidos 0 3.4.3 Archivo projecto.patterns.log Parece indicar para cada camino explorado la lista de patrones detectadas y la elegida. Ejemplo: Start new search path: (fecha) 176268 1 82104024 2 176268 1 #idem 1ero. ... -153353458 1 ... # el segundo campo parece ser siempre 1 o 2 List of patterns: #aca viene la lista de patrones que se encontraron 1.01493 (the, E0) ... 1 (that, the) ... 0.99977 (to, read) NEW P34 (the E0) 0 1 2 268 #Se eligio el patron (the E0) E0 {bird, cat, cow, dog, horse, rabbit} Start new search path: (fecha) ... 4 Opcion -v 1 Se modico train.sh para que ejecute adios con la opcion -v 1, esto causa que adios imprima con mas detalle el progreso del algoritmo: Scan search-Path: 1 * Cindy thinks that George thinks that to read is tough Pattern: ID=P30 p-value=0 Sequence=> Cindy thinks that E31 number of patterns: 1 ..................................................................... .... 4 86 edges have been rewired, pattern id: 30 Serialize Scan search-Path: 2 #Notar que este path es el anterior pero reescrito en #funcion del patron encontrado * (30) thinks that to read is tough Pattern: ID=P32 p-value=0 Sequence=> E33 that number of patterns: 2 ..................................................................... ..................................................................... ..................................................................... ..................................................................... ..................................................................... ..................................................................... .................................... 749 edges have been rewired, pattern id: 32 Serialize Scan search-Path: 3 * that the bird is eager to read bothers the dog 5