You are on page 1of 14

Manual para el extractor de trminos e TERMEXT

Luis Alberto Barrn Cede o o n


alberto@pumas.ii.unam.mx, lbarron@dsic.upv.es

1.

Sealamientos previos n

En este manual se encuentra una descripcin de los distintos programas que o conforman el extractor de trminos TERMEXT. Este extractor es el producto e de la investigacin de maestr que le vali a Luis Alberto Barrn Cedeo el o a o o n t tulo de Maestro en Ciencias. Dicho grado se obtuvo en el Posgrado en Ciencia e Ingenier de la Computacin de la Universidad Nacional Autnoma de Mxico a o o e bajo la supervisin del Dr. Gerardo Sierra Mart o nez, del Instituto de Ingenier a y el Dr. Humberto Carrillo Calvet, de la Facultad de Ciencias. Debe considerarse que la explotacin de esta herramienta tiene un fuerte pero l ling ustico y requiere la creacin de reglas para la extraccin de candidatos. Si o o bien tambin se puede utilizar como un proceso previo de extraccin de trminos e o e para su uso en tareas como clustering u otro tipo de clasicaciones de textos, existen otras herramientas que son independientes tanto de la lengua tratada como del rea de los documentos analizados. a Para el desarrollo tanto de este prototipo como del trabajo de tesis entero, los siguientes apoyos fueron recibidos: Beca de formacin acadmica como estudiante del Posgrado en Ciencia e o e Ingenier de la Computacin. Otorgada por el Consejo Nacional de Ciencia a o y Tecnolog (Mxico) entre septiembre de 2004 y junio de 2006. a e Complemento de beca de formacin acadmica como estudiante del Posgrao e do en Ciencia e Ingenier de la Computacin. Otorgada por la Direccin a o o General de Estudios de Posgrado de la Universidad Nacional Autnoma de o Mxico entre septiembre de 2004 y junio de 2006. e Beca de apoyo para estancia de posgrado (realizada en la Universidad de Montreal) otorgada por el Consejo Nacional de Ciencia y Tecnolog a travs a e del proyecto Extraccin de conceptos en textos de especialidad a travs del o e reconocimiento de patrones lingsticos y metalingsticos desarrollado denu u tro del Grupo de Ingenier Ling a ustica (II-UNAM). Periodo de septiembre 2006 a enero de 2007. Beca de apoyo para estancia de posgrado (realizada en la Universidad de Montreal) otorgada por el Macroproyecto: Tecnologas para la Universidad de la Informacin y la Computacin de la Universidad Nacional Autnoma o o o de Mxico, dirigido por la Facultad de Ciencias. Periodo de septiembre 2006 e a enero de 2007.

Las publicaciones y presentaciones relacionadas con este trabajo son [1] y [2] adems de la tesis escrita [3]. Para citas a este prototipo, por favor utilice la a primera referencia.

2.

Requerimientos previos

La versin original de este extractor ha sido desarrollada en Python ver. 2.5 o con la biblioteca NLTK [4]. Los requerimientos se describen brevemente en la tabla 11 . No se requiere de ninguna distribucin de GNU/Linux en particular. o Se asume que se cuenta con una computadora con suciente memoria RAM y frecuencia de procesador (512 MB de memoria y el equivalente a un procesador Pentium 4 son ms que sucientes). El prototipo deber funcionar en sistemas a a ms limitados, solo que con mayor lentitud. Python se encuentra instalado en a la mayor de las distribuciones de Linux, pero es importante que se trate de la a versin 2.5 o superior. En cuanto al resto de los requerimientos previos, en las o secciones 2.1 a la 2.3 se describen supercialmente y se da una breve descripcin o de los pasos necesarios para su instalacin. o
Tabla 1. Requerimientos de la aplicacin o Requerimiento Descripcin o Version GNU/Linux Sistema operativo abierto basado en UNIX. Python Lenguaje de programacin orientao 2.5 do a objetos. 0.9.5 NLTK Natural Language Toolkit. Mdulos o para la investigacin y desarrollo en o procesamiento de lenguaje natural. numpy Paquete para cmputo cient o co 1.1.1 (matemtico). a Treetagger Etiquetador morfosintctico basado a 3.2 en rboles de decisin. a o

2.1.

NLTK

El Natural Language Toolkit [4] es un conjunto de mdulos programados en o Python que incluyen, adems de diversas bibliotecas para el procesamiento de a
1

Las ligas a los sitios Web de cada uno de los elementos sealados son: n www.linux.org www.python.org nltk.sourceforge.net numpy.scipy.org www.ims.uni-stuttgart.de/projekte/corplex/TreeTagger garraf.epsevg.upc.es/freeling

lenguaje natural, un conjunto de mdulos de acceso a una gran variedad de coro pus y recursos como Wordnet. Es una herramienta con bastante madurz que e lleva varios a os en desarrollo. El NLTK es utilizado en este prototipo en la etan pa de extraccin de cadenas candidato basada en patrones morfosintcticos. En o a particular, los mdulos que se utilizan son nltk.tag.str2tuple, nltk.chunk y o nltk.RegexpChunkParser. El proceso bsico de instalacin de NLTK se descria o be a continuacin 2 : o
Instalacin de NLTK o Bajar el archivo nltk-0.9.5.tar.gz Descomprimir y desentarar el archivo gunzip nltk-0.9.5.tar.gz tar -xvf nltk-0.9.5.tar Dentro del directorio nltk-0.9.5/ y con privilegios de administrador (root) python setup.py install

2.2.

Numpy

Numpy es otro mdulo para Python que contiene bibliotecas para operaciones o con matrices y funciones algebricas entre otras cosas. En realidad, el extractor a de candidatos a trmino no utiliza Numpy, pero es una buena idea incluirlo si e posteriormente se desean hacer otros desarrollos con NLTK. Si se trabaja sobre OpenSuse, numpy se encuentra en el repositorio de software estndar, por lo a que se puede instalar desde Yast. De lo contrario, es necesario seguir el siguiente procedimiento:
Instalacin de numpy o Bajar el archivo numpy-1.2.0.tar.gz Descomprimir y desentarar el archivo gunzip numpy-1.2.0.tar.gz tar -xvf numpy-1.2.0.tar Dentro del directorio numpy-1.2.0 y con privilegios de administrador (root) python setup.py install

2.3.

Treetagger

TreeTagger [5] es un programa de etiquetado morfosintctico. Adems de a a las categor morfosintcticas, proporciona el lema de las palabras procesadas. as a Entre los idiomas con que cuenta, estn el ingls, espa ol, alemn y francs. a e n a e Aunque los resultados obtenidos con esta herramienta son bastante buenos, es
2

Para mayor informacin o al nltk.sourceforge.net/index.php/Installation

respecto,

dirigirse

posible aumentar su entrenamiento. En este caso, se utiliza para asignar etiquetas morfosintcticas a los textos analizados. Su proceso de instalacin se describe a o a continuacin: o
Instalacin de Treetagger o Bajar los archivos tree-tagger-linux-3.2.tar.gz, english-par-linux-3.1.bin.gz, spanish-par-linux-3.1.bin.gz e install-tagger.sh en el mismo directorio. Para instalarlo, ejecutar el siguiente comando: sh install-tagger.sh Los ejecutables se colocan en el subdirectorio cmd. Para que puedan ser invocados sinla ruta absoluta, es necesario hacer una liga suave hacia el bin personal: cd /bin ln -s <dir treetagger>/cmd/tree-tagger-spanish tree-tagger-spanish ln -s <dir treetagger>/cmd/tree-tagger-english tree-tagger-english

. Para etiquetados de texto en otras lenguas se pueden bajar otros archivos de parmetros. Las etiquetas utilizadas en Treetagger se basan en el conjunto a denido en el Penn-Treebank 3 . Pueden consultarse en la misma pgina de Treea tagger. En este momento, el extractor slo es capaz de manipular documentos o en espa ol, ingls y francs, por supuesto, si se le dan las reglas apropiadas. n e e

3.

Uso del paquete terMEXt

Una vez instalado el software necesario para la utilizacin del programa, se o puede iniciar con la operacin. terMEXt est compuesto por un conjunto de o a programas individuales que realizan cada una de las etapas necesarias en el proceso de b squeda de trminos en un conjunto de documentos. El proceso u e va desde el etiquetado morfosintctico hasta la generacin nal de la lista de a o candidatos a trminos. e La seccin 3.1 contiene los pasos previos necesarios para poder usar los proo gramas del extractor, los cuales bsicamente consisten en hacer que estos puedan a ser ejecutados desde cualquier directorio. El resto de secciones presenta las distintas etapas de procesamiento, incluyendo los programas utilizados con una breve explicacin y modo de uso. La seccin 3.6 incluye algunos comandos que o o pueden agilizar de manera importante los procesos se alados previamente. En la n seccin 3.7 se incluye el uso de un script para ejecutar de una sola vez todos los o programas para obtener un resultado nal. Sin embargo, se sugiere que antes de utilizar esta opcin, se estudien las caracter o sticas de cada uno de los mdulos o para saber qu es lo que se puede esperar de la herramienta y cules son las e a causas de los posibles errores de ejecucin. o
3

www.cis.upenn.edu/treebank/

3.1.

Puesta a punto de la aplicacin o

El conjunto de programas Python incluidos en esta distribucin se ofrece con o los permisos necesarios para que puedan ser ejecutados sin necesidad de llamar al intrprete de Python (sin embargo, no est de ms conrmarlo). Para que e a a puedan ejecutarse desde cualquier directorio, es necesario seguir un breve procedimiento, el cual se describe a continuacin: o
Puesta a punto de terMEXt Descomprimir y desentarar el archivo terMEXt.tar.gz proporcionado, en el directorio /termext gunzip terMEXt.tar.gz tar -xvf terMEXt.tar Dentro del directorio /bin crear las ligas a los programas ln -s /termext/termExt tagger.py termExt tagger.py ln -s /termext/termExt chunker.py termExt chunker.py ln -s /termext/termExt cvalue-e.py termExt cvalue-e.py ln -s /termext/termExt ncvalue.py termExt ncvalue.py Comprobar que en cualquier directorio, los programas pueden ejecutarse. Por ejemplo: cd termExt tagger.py -h

. Si se desea, las ligas pueden crearse en el bin del sistema para que los programas puedan ser ejecutados por cualquier usuario. Antes de comenzar con la descripcin de cada uno de los programas, cabe o se alar que todos tienen un mdulo de ayuda inclu n o do. Basta con ejecutarlos con el parmetro -h para obtenerla. a 3.2. Etiquetado de documentos

El etiquetado morfosintctico corre por parte de Treetagger. Sin embargo, la a salida que este programa proporciona no es la apropiada para su manejo posterior en la aplicacin. La tabla 2 contiene un ejemplo de la salida original del o etiquetador, acompa ada de la que el extractor requiere para procesarla, consin derando la sentencia Algunos de los conceptos carecen de bases adecuadas.. Para modicar el formato del texto etiquetado, se ha desarrollado un sencillo programa denominado ./termExt tagger.py. Dicho programa es capaz de traducir etiquetados en espa ol, francs e ingls. En el caso del espa ol, dado n e e n que la preposicin de forma parte de los trminos con relativa frecuencia, la etio e queta original PREP de Treetagger se traduce a PDE. La manera de etiquetar un archivo es la siguiente:
cat <arch>| tree-tagger-<leng>| ./termExt tagger.py -<id leng> > <dest>

Tabla 2. Ejemplo de formatos de etiquetado Salida de Treetagger Algunos QU alguno de PREP de los ART el conceptos NC concepto carecen VLn carecer de PREP de bases NC base adecuadas VLadj adecuar . FS . Salida necesaria Algunos alguno/QU de de/PDE los el/ART conceptos concepto/NC carecen carecer/VLn de de/PDE bases base/NC adecuadas adecuar/VLadj . ./FS

donde <arch> es el archivo que se desea etiquetar, <leng> es el sujo que identica la lengua del comando de Treetagger, ste debe ser sustituido por e alguno de [english, french, spanish], seg n sea el caso. <id leng> es un u parmetro que el programa en Python requiere para saber la lengua del text etia quetado. En este caso, los valores posibles son [e, f, s] para english, f rench y spanish, respectivamente. Finalmente, la salida debe ser redirigida al archivo en el que se desee guardar. <dest> es el nombre de dicho archivo. As para , etiquetar el archivo texto, el cual est escrito en espa ol, y guardar el resultado a n en tag texto, el comando ser el siguiente: a
cat texto | tree-tagger-spanish | termExt tagger.py -s > tag texto

Para realizar un etiquetado progresivo de todo un conjunto de textos, puede utilizarse el comando compuesto 1 en la seccin 3.6. o 3.3. Obtencin de candidatos o

Para la obtencin de candidatos es necesario contar con un conjunto de reo glas sintcticas que denan los patrones que los candidatos deben tener. Dicho a conjunto de reglas debe tener el formato adecuado para que al chunker, basado en NLTK, pueda manejarlas. Las reglas deben estar denidas en un archivo de texto plano y tener el formato
REGLA ### Descripcin de la regla o

Las reglas son pseudo-expresiones regulares y aceptan la mayor de los opea radores tradicionales de stas. Algunos de los ms utiles en la tarea de deteccin e a o de trminos se incluyen en la tabla 3. Un ejemplo de archivo de reglas se muestra e en la gura 1. Obsrvese que en la primer regla ya se encuentra comprendida la tercera. e Se incluyen ambas con el afn de ilustrar. Como puede observarse, cada una de a

Tabla 3. Algunos operadores para expresiones regulares Operador Signicado Operador Signicado <a>* Cerradura de Kleene. 0, 1 o <a>? 0 o 1 repeticin de < a >. o ms repeticiones de <a>. a <a>+ Cerradura positiva. 1 o ms a <a|b> a o b. repeticiones de <a>. <a.> a seguido de cualquier carac- (<a><b>) Une <a> y <b> para apliter. carles la misma operacin. o

las categor sintcticas debe colocarse entre los s as a mbolos <>. Cuando se quiera tener una regla que acepte una u otra categor en determinada posicin, debe a o hacerse dentro de estos s mbolos, es decir: <CAT1|CAT2>. Si se colocara la regla (<CAT1|CAT2><CAT3>)+ signicar al menos una ocurrencia de los patrones a <CAT1><CAT3> o <CAT2><CAT3>. El orden de las reglas es muy importante. Aquellas reglas que estn contenidas e en otras de la lista deben ser colocadas hacia el nal del archivo. El motivo es que la b squeda de patrones es secuencial y stos no pueden intersectarse. Si, u e por ejemplo, el patrn <NC> se coloca antes de <NC><ADJ> ning n candidato con o u el segundo patrn ser encontrado. Ser de esperarse que los candidatos ms o a a a largos se preeran sobre los ms cortos4 . a
Archivo: reglas cerradas <NC><ADJ>? ### Nombre seguido de Adjetivo (opcional) <NC><PDE><NC> ### Dos nombres con de en medio <NC> ### Nombre

Figura 1. Ejemplo de reglas sintcticas a Cuando se cuente con el archivo de reglas (se incluyen dos para el espa ol en n el comprimido) y el archivo de texto previamente etiquetado y en el formato requerido (seccin 3.2), se pueden obtener los candidatos a trmino. Para realizar o e la extraccin el comando es el siguiente: o
cat <tag arch>| termExt chunker.py -<leng> <rules file> > <dest>

donde <tag arch> es el archivo etiquetado del que se desean extraer los cana didatos. <id leng> es un parmetro que el programa en Python requiere para saber la lengua del text etiquetado. En este caso, los valores posibles son [e, f, s] para english, f rench y spanish, respectivamente. <rules file> es el archivo
4

Se recomienda revisar la pgina de NLTK para mirar todas las opciones de confora macin de las reglas. o

que contiene las reglas. Finalmente, la salida debe ser redirigida al archivo en el que se desee guardar (<dest>). Para obtener los candidatos iniciales a trmino e del archivo tag texto (en espa ol), con base en las reglas del archivo reglas y n guardar el resultado en cand texto, el comando es:
cat tag texto | termExt chunker.py -s reglas > cand texto

El formato de la salida obtenida es el siguiente:


candidato ### |candidato| ### POS ### contexto izq. ### contexto der.

Como es de esperarse, el primer campo es el candidato a trmino, seguido e por su longitud en n mero de palabras y su patrn POS. A continuacin, vienen u o o las palabras que se encuentran en una ventana de longitud 5 (izquierda y derecha). En este programa, en acorde con [6], son palabras de contexto unicamente las que pertenezcan a categor no funcionales, es decir, nombres, verbos y as adjetivos. Si se desea modicar esta caracter stica, la variable que la dene se encuentra en la funcin relevantPOS del programa. Igualmente, las ventanas se o rompen cuando se halla alg n signo de puntuacin, los cuales estn denidos en u o a la funcin getPunct para cada una de las lenguas. La gura 2 muestra algunos o ejemplos de candidatos a trmino (los acentos han sido omitidos). Como se puee de observar, las palabras estn seguidas por su lema (informacin proporcionada a o por Treetagger). En el caso del lema <unknown>, es el mismo Treetagger el que no conoce el lema de la palabra correspondiente. En el segundo ejemplo se puede apreciar un caso en el que el candidato no tiene contexto del lado derecho. Seguramente esto se debe a que luego de l ven alg n signo de puntuacin. e a u o
Archivo: reglas cerradas modem modem ### 1 ### NC ### Nuevo nuevo ### RAD <unknown> modem modem n bra bra optica optico ### 2 ### NC ADJ ### menor pequeo modems modem ### modems modem ### 1 ### NC ### nuevos nuevo ### banda banda ancha ancho

Figura 2. Ejemplo de algunos candidatos a trmino e Para obtener los candidatos de todo un conjunto de textos etiquetados, puede utilizarse el comando compuesto 2 de la seccin 3.6. o 3.4. Clculo de C-value a

El siguiente paso es el clculo de C-value para los candidatos a trmino. A a e diferencia de los dos pasos anteriores, en los que cada archivo era procesado por s mismo, para el clculo de C-value se utilizan todos los archivos de candidatos a

al mismo tiempo. La razn es muy simple: la frecuencia de los candidatos tiene o un papel crucial en el clculo de este valor, y sta debe calcularse sobre todo el a e corpus que se desee analizar. Slo para recordar, el C-value de cada uno de los o candidatos a trmino se calcula de la siguiente manera: e log2 |a| f (a) log2 |a|
1 f (a) P (Ta ) bTa

C value(a) =

si |a| = M f (b) de lo contrario

(1)

donde |a| es la longitud del candidato a en palabras, f (a) es su frecuencia de aparicin en el corpus completo, Ta es un conjunto con candidatos b con |a| < |b| o que contienen al mismo candidato a, P (Ta ) es el n mero total de estos candidatos u (tomados como tipos) y f (b) es la frecuencia de cada uno de dichos candidatos. La obtencin del C-value para los candidatos a trmino de un corpus como e pleto se realiza por medio del programa termExt cvalue-e.py. Este programa es la implementacin de las adaptaciones al algoritmo C-value original [6], las o cuales se describen en [1]5 . A diferencia de los pasos anteriores, en este ya no es relevante la lengua de los archivos a procesar. Los parmetros necesarios son si el clculo se har con a a a base en la versin original de los candidatos o con la versin lematizada y el o o orden que se desea que tenga la salida. Al utilizar la versin lematizada hay o que considerar que cuando Treetagger no conoce un lema, le asigna la etiqueta <unknown>, por lo que los resultados podr verse afectados. Una solucin a este an o problema ser que cuando una palabra del candidato tuviera lema desconocido, a se utilizara la palabra original para hacer los clculos (lo cual no se contempla a en esta versin). La otra opcin, que parece la ms lgica, ser preprocesar el o o a o a archivo de candidatos y cambiar la etiqueta de desconocido por una copia de la palabra original con alg n indicador (, por ejemplo). u Para obtener el C-value de los candidatos a trmino de un corpus entero, es e necesario contar con un unico directorio que contenga todos los archivos de can didatos generados en el paso anterior. La razn es que a diferencia de los pasos o anteriores, la entrada de este programa es simplemente el directorio en el que se encuentran los archivos de candidatos. El prototipo de llamada es el siguiente:
termExt cvalue-e.py -<ver><sort> <candidates dir> <stopl> > <dest>

donde <ver> dene si se desea utilizar la versin original de los candidatos o o la lematizada. Los valores posibles son [o, l] para original y l emmatised, respectivamente. <sort> dene cmo se desea que se ordene la salida y pueo de tomar los valores [a, c] para alfabticamente y c-value, respectivamente. e <candidates dir> es el directorio en el que se encuentran los archivos de candidatos (se recomienda que en dicho directorio no exista ning n otro tipo de u
5

Queda pendiente el desarrollo de un programa con la implementacin del algoritmo o original para poder efectuar comparaciones en los resultados obtenidos por cada uno de los mtodos. Dicho programa an no est disponible. e u a

archivo o directorio). El programa se encargar de procesar todos los archivos y a obtener el C-value de cada uno de los candidatos hallados en el corpus entero. El campo <stopl> es opcional y es un archivo que contiene las palabras que se desean utilizar como lista de paro. El formato de este archivo es muy sencillo: una palabra por l nea, sin renglones en blanco. La salida es guardada en el archivo <dest>, cuyo formato es:
candidato ### C-value ### L1 f | L2 f | ### R1 f | R2 f |

donde Li es la palabra de contexto i correspondiente a la ventana izquierda del candidato (Ri para la derecha) y f su frecuencia de aparicin como palabra o de contexto del candidato. Estas palabras estn separadas por el s a mbolo | . Un ejemplo de ejecucin es: o
termExt cvalue-e.py -oc cand/ > c value

El cual considera el texto original y ordena la salida con base en el C-value, generando candidatos como los que se muestran en la gura 3. En el primer ejemplo se observa que, como es de esperarse, dispositivos de almacenamiento tiene en su vecindad palabras como memoria, discos o bah El segundo ejemplo as. de la gura no tiene palabras de contexto por la derecha.
dispositivos de almacenamiento ### 12.924 ### memoria 1 | discos 1 | cuenta 1 | cabina 1 | bahias 1 | duros 1 ### cintas 1 color de 24-bit ### 2.584 ### 18sx 1 | lcd 1 | monitor 1 ### salida de video ### 5.169 ### ### conguraciones 1 | ntsc/ 1 | mpeg 1 | pal 1 soporte de papel ### 2.58 ### universales 1 | entrada 1 ### ocio 1

Figura 3. Ejemplo de algunos candidatos con C-value calculado

Contando con este archivo es posible nalmente obtener el N C-value de los candidatos. 3.5. Clculo de N C-value a

Una manera de renar la salida obtenida, es por medio del clculo del N Ca value de los candidatos a trmino. Este valor considera no slo la frecuencia, e o longitud y relaciones entre los trminos, sino que adems toma en cuenta el e a contexto en el que estos se encuentran. El NC-value se calcula de la siguiente manera: N C value(a) = 0.8 C value(a) + 0.2
bCa

fa (b) weight(b)

(2)

donde b es una palabra (verbo, nombre o adjetivo) que aparece dentro del contexto (una ventana de longitud 5) del trmino. El peso weight(b) se calcula pree viamente por medio de la ecuacin 3, donde t(w) es la cantidad de candidatos o con los que w aparece y n es el n mero de candidatos considerados. Finalmente, u fa (b) es el n mero de veces que la palabra b aparece dentro del contexto del u candidato a. weight(w) = t(w) n (3)

Precisamente el valor de n es uno de los ms importantes de esta etapa. Se a puede asumir que los trminos con mayor C-value sean los que mayor probae bilidad tengan de ser verdaderos trminos. Por ello, se suele tomar unicamente e una parte de estos para dar pesos a sus palabras de contexto (vase [6], seccin e o 3 y [3], cap tulo 3 para profundizar). La ejecucin del programa de clculo de o a N C-value se hace de la siguiente manera:
cat <c value file> | termExt ncvalue.py -<sort> <pctge> > <dest>

<c value file> es el archivo previamente obtenido con los valores de Cvalue. El parmetro <sort> indica cmo se desea que se ordene la salida y a o puede tomar los valores [a, c, n] para ordenarla alfabticamente, por valor e de c-value o por nc-value. <pctge> dene qu porcentaje de los trminos con e e mayor C-value ser utilizado para dar pesos a sus palabras de contexto. El valor a recomendado es 20. Cabe se alar que en este caso ya no resulta relevante si se n procesan textos originales o lematizados. Si se desea considerar la versin lemao tizada, bastar con dar al programa como entrada el archivo de C-value que fue a obtenido con esta opcin. Para obtener un clculo de N C-value considerando el o a 20 % de los trminos ordenados por C-value para dar peso a las palabras de cone texto y ordenar la salida con base en el valor de N C-value obtenido, el comando ser a:
cat c value | termExt ncvalue.py -n 20 > nc value20

El formato de salida de este programa es


candidato ### N C-value ### C-value

Para el ejemplo anterior, los primeros renglones con nuestro corpus de prueba (sin lista de paro), se muestran en la gura 4. 3.6. Conjunto de comandos utiles

En esta seccin se incluyen algunos comandos de shell con diversos redireco cionamientos que podr ser utiles para el procesado de m ltiples archivos de an u texto.

tecnologia ### 207.934094332 ### 257.198198198 sistema ### 158.145863852 ### 195.82278481 procesador ### 153.854134951 ### 189.586956522 usuarios ### 147.672248404 ### 183.058823529 pantalla ### 134.490534555 ### 166.586956522 clientes ### 118.982841376 ### 147.578947368 memoria ### 114.117916255 ### 141.266666667

Figura 4. Ejemplo de algunos candidatos con N C-value calculado 1. Etiquetado de todos los archivos hallados en un directorio. Se asume que en o el directorio <dir fuente> slo existen archivos de texto en una lengua y que todos quieren ser etiquetados. El destino de los archivos etiquetados es el directorio <dir fuente>/tagged (se asume que ya existe). A los archivos etiquetados se les asigna el nombre tag <nombre original>:
for f in $(ls corpus/) ; do cat corpus/$f | tree-tagger-spanish | termExt tagger.py -s > corpus/tagged/tag $f; echo current File: $f; done

2. Para obtener los candidatos de todos los archivos etiquetados dentro de un directorio, se puede realizar un sencillo comando. Al igual que en el punto anterior, se asume que en el directorio <dir tag> slo existen archivos o etiquetados. Igualmente, el directorio cand debe ser previamente creado. El archivo de reglas se llama simplemente reglas. A los archivos con las listas de candidatos, se les asigna el nombre can <nombre original> (sin el prejo tag):
for f in $(ls tagged/) ; do t=${f#* } cat tagged/$f | termExt chunker.py -s reglas > cand/can $t; echo Current: $t; done

A t se le asigna el mismo nombre del archivo de origen, pero sin el prejo tag . El resto es simplemente dirigir el archivo etiquetado al programa que se encarga de obtener los candidatos. 3.7. Script unico

En caso de que no se desee ejecutar cada uno de los programas en Python proporcionados (lo cual se sugiere encarecidamente pues permite comprender mejor lo que se est haciendo), es posible ejecutar un unico script de Bash que a se encarga de hacer todo el procedimiento. Se trata de un simple script al que se debe invocar de la siguiente manera (ubicado en el directorio en el que est el a

script y asumiendo que todos los programas de Python y el etiquetador se pueden ejecutar):
./termExt.sh <corpus dir>

o donde <corpus dir> es un directorio en el que se encuentran slo los archivos que conforman el corpus de prueba. El script realizar un conjunto de consultas a para poder realizar el proceso completo. En la mayor de ellas, las opciones que a se pueden escribir se encierran entre corchetes. Dichas consultas se explican a continuacin: o 1. Consider [o]riginal or [l]emmatised text: Se dene si el proceso de seleccin de candidatos se realizar con la versin o a o original del texto o con la lematizada. 2. Define text language ([e]nglish, [f]rench, [s]panish): Simplemente se se ala cul es la lengua del corpus a procesar. n a 3. Name of the rules file: Es necesario colocar el nombre del archivo que contiene las reglas que se utilizarn en la b squeda de candidatos. En caso de que el archivo no se a u encuentre en el directorio actual, es importante incluir la ruta a l. e 4. Stoplist file name (blank if you do not want to use a stoplist): Nombre del archivo con la lista de paro. Se deben dar las mismas condiciones que en el caso anterior. 5. Percentage of C-value terms to calculate context weights [1-100]: Cantidad de candidatos ordenados por C-value (en porcentaje) que se desea considerar para la asignacin de pesos a las palabras de contexto. o 6. Sort C-value output [a]lphabetically or by [c]-value: Dene si el archivo con el C-value ser ordenado alfabticamente o con base a e en el C-value calculado a cada candidato. 7. Sort NC-value output [a]lphabetically, by [n]c-value or by [c]-value: Igual al anterior, lgicamente agregando la opcin de ordenar por N C-value. o o 8. Suffix for the C-value and NC-value files (<n>c value-SUFFIX): Sujo que se desea dar a los archivos de salida con C-value y N C-value. El script crear, dentro del directorio del corpus analizado, los subdirectoa rios tagged, cand y results, en los que guardarn los archivos etiquetados, a los archivos de candidatos y los archivos de salida con C-value y N C-value, respectivamente. Se sugiere que si se trabaja con un mismo corpus y se realizan distintas pruebas, se edite este shell script para comentar la seccin de etiquetado de los o archivos.

Agradecimientos
Agradecemos al Instituto de Ingenier por haber acogido esta investigacion a o y en particular al Grupo de Ingenier Ling a ustica, dirigido por el Dr. Gerardo

Sierra, dentro del cual fue desarrollado tanto este prototipo como la investigacin o entera que lo gener. Igualmente al Macroproyecto: Tecnolog para la Universio as dad de la Informacin y la Computacin, dirigido por el Dr. Humberto Carrillo, o o que fue de gran importancia en la segunda fase de este trabajo. Tambin es de e agradecer el apoyo del Dr. Patrick Drouin, quien dirigi la estancia de investio gacin dentro del Observatoire de linguistique Sens-Texte de la Universidad de o Montreal. Por supuesto, al Posgrado en Ciencia e Ingenier de la Computacin, a o coordinado por el Dr. Boris Escalante. Finalmente, al CONACyT y la DGEP por su apoyo econmico. o

Referencias
1. Barrn, A., Sierra, G., Villaseor, E.: C-value aplicado a la extraccin de trminos o n o e multipalabra en documentos tcnicos y cient e cos en espaol. In: 7th Mexican n International Conference on Computer Science (ENC 2006), IEEE Computer Press, San Luis Potos Mxico (2006) , e 2. Barrn, A.: Mtodos para la obtencin automtica de trminos en un rea de o e o a e a especialidad. In: Tercer Coloquio de Ling ustca Computacional (COLICO 2007), ciudad de Mxico (2007) e 3. Barrn Cedeo, L.A.: Extraccin automtica de trminos en contextos denitorios. o n o a e Tesis para obtener el grado de Maestro en Ciencias (computacin). In: Posgrado o en Ciencia e Ingenier de la Computacin, Universidad Nacional Autnoma de a o o Mxico, Mxico, D. F. (2007) e e 4. Bird, S., Loper, E., Klein, E.: Natural language toolkit. http://nltk.org/. (2008) 5. Schmid, H.: Probabilistic part-of-speech tagging using decision trees. In: Proceedings of International Conference on New Methods in Language Processing. (1994) 6. Frantzi, K., Ananiadou, S., Mima, H.: Automatic recognition of multi-word terms: the C-value/NC-value method. International Journal on Digital Libraries 3 (2000) 115130

You might also like