Skip to content

Plataforma para extraer el universo de origen e influencias de nombres en videojuegos online, mediante detección de patrones fonéticos y morfológicos.

License

Notifications You must be signed in to change notification settings

geru-scotland/lore-nexus

Repository files navigation

LoreNexus

LoreNexus

Índice

  1. Sobre el proyecto
  2. Presentación
  3. Instalación
  4. Uso del CLI
  5. Regeneración de datos
  6. Training Grounds
  7. Guía de uso para la app con Docker (CLI)
  8. Universos disponibles en esta versión
  9. Ejemplos de predicciones
  10. Agradecimientos
  11. Sobre el autor
  12. Licencia

Sobre el proyecto

LoreNexus es una plataforma para extraer el universo de origen e influencias de nombres en videojuegos online, mediante detección de patrones fonéticos y morfológicos. Hace uso de modelos de lenguaje implementados con Pytorch "from scratch" (LSTMs bidireccionales o BiLSTM y tokenización a nivel de carácter), así como de diferentes técnicas de NLP tanto para la extracción y preprocesamiento de los datos como para la inferencia.

Nota sobre el desarrollo

Este proyecto se da por finalizado en cuanto a la entrega, sin embargo hay algunas tareas que yo he decidido aún están pendientes. No obstante, planeo continuar el desarrollo de forma gradual, me ha encantado. Se pueden consultar el progreso de algunas tareas en el proyecto de GitHub. Cualquier sugerencia o bug, por favor repórtalo en el Bug Tracker.

Presentación

La presentación del proyecto se puede encontrar aquí: Presentación de LoreNexus

Memoria en progreso.


Instalación

Para instalar LoreNexus, simplemente sigue los siguientes pasos:

  1. Clonar el repo:

    git clone [email protected]:geru-scotland/lore-nexus.git
    cd lore-nexus
  2. Entorno virtual para aislar dependencias:

    python3 -m venv .venv
    source .venv/bin/activate
  3. Instala las dependencias:

    pip install -r requirements.txt
  4. Configura el entorno:
    Hay que agregar el directorio actual (ojo, tiene que ser el root del proyecto) al PYTHONPATH para que los módulos se puedan importar sin problemas:

    export PYTHONPATH=$PYTHONPATH:$(pwd)

Uso del CLI

Se dispone de una aplicación en CLI para poder realizar inferencias. Para ejecutarla, navega al módulo app y lanza app.py:

cd app/
python3 app.py
  • Si el mejor modelo hasta el momento (LoreNexusPytorch_v1.0.pth) no se encuentra en el sistema, la app lo descarga automáticamente desde Hugging Face: LoreNexusPytorch_v1.0.

Regeneración de datos

El dataset está disponible en dataset/output, pero se puede regenerar con ejecutando pipeline.py, simplemente:

cd pipeline
python3 pipeline.py
  • La configuración para la regeneración de datos se encuentra en pipeline/config.json.
  • Los datos ya estratificados se guardan en dataset/output (ojo, se sobreescriben los datos existentes)
  • También se crea un archivo data_config.info que contiene detalles sobre la configuración con la que se han generado los datos.

Training Grounds

Hiperparámetros y experimentos

Para explorar el espacio de hiperparámetros y entrenar modelos, ejecuta hyperparameter_tuner.py desde el directorio training_grounds:

cd training_grounds
python3 hyperparameter_tuner.py
  • Si no se pasan argumentos, se lanzarán experimentos con todos los modelos que implementen la clase LoreNexusWrapper, actualmente:

    • LoreNexusPytorch
    • LoreNexusFlair
  • Se le pueden pasar el modelo como argumento con -m, para que el sistema se limite a entrenar únicamente el especificado:

    • -m pytorch: Solo entrena el basado en PyTorch.
    • -m flair: Solo entrena el basado en Flair.
  • Los conjuntos de hiperparámetros están definidos en param_grids.json y los logs se guardan en training_grounds/logs, donde se aglomeran por experimentos, llamados arenas. También se depositarán logs de cada modelo individualmente en training_grounds/logs/, con gráficas y otros detalles.

Entrenar un modelo individualmente

Para entrenar un modelo específico:

  1. Ve al archivo correspondiente:

    • /models/pytorch/model.py
    • /models/flair/model.py
  2. Descomenta las líneas al final del archivo, ajusta los hiperparámetros que desees y ejecutalo:

    python3 models/pytorch/model.py

    ó

    python3 models/flair/model.py

En ese caso los logs se guardan en models/pytorch/logs o models/flair/logs respectivamente, donde se pueden encontrar tanto logs exhaustivos, como gráficas con la evolución durante epochs, e incluso matrices de confusión.

No obstante, incluso para entrenamientos individuales, recomiendo usar hyperparameter_tuner.py.


Guía de uso de la app (CLI) con Docker

Con Docker instalado (Docker get-started):

1. Pull de la imagen alojada en Dockerhub:

docker pull basajaun0/lore-nexus:latest

2. Y simplemente ejecutar el contenedor:

docker run -it basajaun0/lore-nexus:latest

Nota: Tengo pendiente la optimización de dependencias para reducir el tamaño de la imagen, ahora mismo ocupa mucho por CUDA, y no es necesario realmente al utilizar simplemente inferencias.


Universos disponibles en esta versión

En ésta versión (modelo LoreNexusPytorch_v1.0) se ha entrenado con los siguientes universos:

  • Harry Potter
  • Star Wars
  • Tolkien
  • Warcraft
  • Dragon Ball
  • Naruto
  • Forgotten Realms
  • Final Fantasy
  • Game of Thrones
  • The Witcher
  • Doctor Who
  • Discworld
  • Mythology
  • Offensive
  • Historical

Ejemplos de predicciones

CLI Principal

Example 1
Example 2
Example 3
Example 4

Tabla de inferencias

Table of Inferences

Agradecimientos

Agradezco especialmente a Oier López de Lacalle Lecuona y a Itziar Aldabe Arregi por su apoyo y guía durante el desarrollo de LoreNexus.

Sobre el autor

Este proyecto fue desarrollado por Aingeru García como parte de un proyecto académico en la Universidad del País Vasco (UPV/EHU), asignatura de Procesamiento de Lenguaje Natural.

Si tienes preguntas, comentarios o sugerencias, no dudes en contactarme:

Licencia

Este proyecto está licenciado bajo la Licencia MIT. Esto significa que puedes usar, modificar y distribuir este software libremente, siempre que mantengas la atribución al autor original.

Para más detalles, consulta el archivo LICENSE en este repositorio.

About

Plataforma para extraer el universo de origen e influencias de nombres en videojuegos online, mediante detección de patrones fonéticos y morfológicos.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Languages