LIBRERÍA PARA EL MANEJO EFICIENTE DE DICCIONARIOS DE GRAN TAMAÑO (LIBNADFA)

Compilación

Para compilar un autómata es necesario:

  1. El fichero con la información de las palabras.

    Que debe tener el siguiente formato:

    palabra_1[\tinformación_1][\tinformación_2]...\n

    palabra_1[\tinformación_1][\tinformación_2]...\n

    ...

    Donde \t representa una tabulación, \n un salto de línea y los corchetes opcionalidad.

    Por ejemplo, definimos un diccionario con cuatro palabras en el que asociamos el lema (forma canónica) a las palabras (formas) del mismo, del siguiente modo:

    desestimas\tdesestimar\n

    tres\ttres\n

    violeta\tvioleta\n

    violetas\tvioleta\n

    En este caso, además, la información asociada a las palabras (lemas) no es de tipo numérica, y lo que queremos es que esos lemas estén en otro autómata diferente, de manera que desde el primer diccionaro se referencie al segundo.

    Por lo tanto, en nuestro caso definimos otro diccionario para los lemas, que no incluyen ninguna información:

    desestimar\n

    tres\n

    violeta\n

  2. El fichero de configuración para el compilador.

    En este caso, uno para compilar los lemas:

    <?xml version="1.0" encoding="ISO-8859-1" ?>

    <!DOCTYPE setup SYSTEM "setup_nadfa.dtd">

    <setup path="./" output_binary_file="automata_lemas.bin">

    <key file="lemas.txt" number_mappings="0"/>

    </setup>

    y otro para compilar las formas:

    <?xml version="1.0" encoding="ISO-8859-1" ?>

    <!DOCTYPE setup SYSTEM "setup_nadfa.dtd">

    <setup path="./" output_binary_file="automata_formas.bin">

    <key file="formas.txt" mappings_number="2"/>

    <info name="lema" function="word_to_index" automaton_id="2" type="guint32"/>

    <input_automaton automaton_id="2" file="automata_lemas.bin"/>

    </setup>

    La DTD setup_nadfa.dtd puede verse en el directorio src del paquete descargable. Describimos a continuación los atributos que puede incluír cada uno de sus elementos:

    • setup:
      • path: ruta donde se encuentran todos los ficheros necesarios para realizar la compilación.
      • output_binary_file: fichero binario donde se almacenará la versión compilada del diccionario.
    • key:
      • file: fichero que contiene el diccionario original con la lista de palabras junto a todas las columnas de información.
      • mappings_number: número de tablas de conversión a emplear para indexar la información de las palabras. En principio debe establecerse a 2 si las palabras tienen alguna información asociada, o a 0 en el caso de que no exista información alguna.
    • info
      • name: nombre de la columna de información.
      • function: función a aplicar a los datos de la columna de información en el caso de que no sean numéricos. De momento solo puede contener el valor word_to_index.
      • automaton_id: identificador de otro autómata previamente compilado al que hace referencia la función definida en el atributo anterior.
      • type: tipo de dato de la columna de información a almacenar en el proceso de compilación. En el caso de utilizar una función sería el tipo de dato devuelto por la misma. Actualmente solo puede contener los valores guint32 (entero de 4 bytes) o gfloat (número en punto flotante).
    • input_automaton
      • automaton_id: identificador del autómata previamente compilado asociado a una columna de información.
      • file: fichero binario con la versión comprimida de dicho autómata.
  3. Ejecutar:

    $nadfac conf_lemas.xml

    $nadfac conf_formas.xml

    Donde conf_lemas.xml y conf_formas.xml son los archivos de configuración descritos anteriormente para lemas y formas respectivamente.

Acceso:

Para ver como se realiza la carga en memoria y utilización de los autómatas recomendamos echar un vistazo a los ficheros libnadfa_bin_print.c y libndfa_bin.h. Este último muestra las funciones que exporta la librería que gestiona los autómatas compilados.

De momento no disponemos de una descripción completa documentada del API de acceso a los autómatas compilados. Lo haremos en cuanto nos sea posible.

english | galego | español
XHTML 1.0 Strict Válido CSS Válido!