Version 1 (modified by rboet, 7 años ago) (diff) |
---|
¿Cómo usar el preprocesamiento y no morir en el intento?
Previo a este paso se debe tener instalado el freeling y descomprimido y compilado el lda
Para usar el Freeling
Para poder utilizar el freeling es necesario configurar las rutas en la que se realizaran las tareas del archivo ubicado en la ruta raiz del proyecto/utils/freeling.py , dicha configuraciones se explican a continuación:
En la línea 163
freeling_cmd = shlex.split('/usr/local/bin/analyzer -f /usr/local/share/freeling/config/es.cfg',' ')
se debe modificar esta expresión en caso que no concuerde con las rutas donde instalamos el freeling.
En la línea 209
donde esta la variable corpus_path, se debe colocar la ruta donde tenemos los corpus
Para ejecutar el Freeling
Como es obvio debemos estar trabajando en nuestro entorno virtual, y ejecutar con python el script del freeling, acorde a nuestra ubicación, es caso de que estemos en la raíz del proyecto, el comando podría ser:
python utils/freeling.py
Si todo esta bien procederá a realizar el pre-procesamiento (si el corpus es grande se debe armar de paciencia, porque el script tardará)
Es importante que la ruta en la que se ejecutará el freeling debe contener los directorios
pp/ (vacío hasta los momentos, contendrá los archivos resultantes del pre-procesamiento) noaccent/ (contendrá los corpus sin acentos ni caracteres extraños, se genera con el freeling) lower/ (contendrá los archivos de orig/ en letras minúsculas, se genera con el freeling ) orig/ (contiene los corpus normalmente) freeling/ (contendrá un formato de archivo de los corpus, resultante también de ejecutar el preprocesamiento)
Una vez finalizado el freeling, procedemos a ejecutar una función de python que recibe dos parámetros como argumentos
python utils/corpusScript.py direcctorio_pp directorio_salida
Este script genera los archivos corpus.dat y vocab.txt necesarios para la ejecución del LDA.
Una vez hecho esto podemos proceder a ejecutar el LDA
Para ejecutar el LDA
El lda no es un script dificil de ejecutar, sólo que debemos saber que le vamos a pasar como argumentos, ya que recibe muchos valores.
Suponiendo que estamos en el directorio base del lda, es decir donde tenemos el ejecutable, procedemos a ejecutarlo:
./lda est 0.1 numero_topicos settings.txt directorio_donde_este/corpus.dat random nombre_carpeta
Donde
est es un método fijo que siempre hay que usar 0.1 es nuestro alpha (puede variar dependiendo de nosotros mismos) numero_topicos es la cantidad de tópicos que necesitamos generar (por ejemplo 10) settings.txt es un archivo en ese directorio donde hay un configuración, lo podemos modificar si estamos en la capacidad de hacerlo el siguiente parametro es el directorio donde se encuentra el archivo corpus.dat random es otro parámetro fijo por ultimo pasamos la ruta y nombre de carpeta donde queremos que de salida el lda, por convención esto debería ser nombrecapeta_numerodetopicos, para usarlo correctamente en la aplicación web (ejemplo prueba_10)
Últimos pasos
Ya con todas estas ejecuciones, tenemos los archivos necesarios para poder configurar el settings.py de la aplicación web, a saber FILES_PATH, LDA_DATA_PATH, LDA_CORPUS_FILE, LDA_VOCAB_FILE, LDA_CORPUS_DIR y TOPICS.
Aunque está especificado en el manual de instalación y configuración, repasaremos para que sirven estas variables del archivo settings.py
FILES_PATH: Contiene la ruta de los archivos que mostraremos en la interfaz, queda a decisión de nosotros si usamos los contenidos en orig/ (no recomendable), lower/ o no_accent/
LDA_DATA_PATH: Aquí colocaremos la ruta de las carpetas generadas por el LDA, por el modo en el que esta es que se habla de usar la convención nombre_topicos
LDA_CORPUS_FILE: Ubicación del archivo corpus.dat
LDA_VOCAB_FILE: Ubicación del archivo vocab.txt
LDA_CORPUS_DIR: Dirección de los preprocesados (pp/)
TOPICS: Esta variable debe contener los números de tópicos que generamos previamente con el LDA, es decir que sí sólo generamos con 10, 20 y 30 tópicos, la variable debe ser algo igual a esto: TOPICS = '10, 20, 30'