Deepqa está construido sobre Keras. Hemos decidido que Pytorch es una mejor plataforma para la investigación de PNL. Reescribimos Deepqa en una biblioteca de Pytorch llamada Allennlp. No habrá más desarrollo de Deepqa. Pero estamos bastante entusiasmados con Allennlp: si está haciendo un aprendizaje profundo para el procesamiento del lenguaje natural, ¡debe verlo!
Deepqa es una biblioteca para realizar tareas de PNL de alto nivel con un aprendizaje profundo, particularmente enfocado en varios tipos de respuesta de preguntas. Deepqa se basa en la parte superior de Keras y TensorFlow, y puede considerarse una interfaz para estos sistemas que facilita la PNL.
Específicamente, esta biblioteca proporciona los siguientes beneficios sobre Keras / TensorFlow liso:
Deepqa se construye usando Python 3. La forma más fácil de configurar un entorno compatible es usar conda. Esto configurará un entorno virtual con la versión exacta de Python utilizada para el desarrollo junto con todas las dependencias necesarias para ejecutar DeepQA.
Descargue e instale conda.
Cree un entorno de condena con Python 3.
conda create -n deep_qa python=3.5
Ahora active el entorno de conda.
source activate deep_qa
Instale las dependencias requeridas.
./scripts/install_requirements.sh
Establezca el PYTHONHASHSEED para experimentos repetibles.
export PYTHONHASHSEED=2157
Ahora debería poder probar su instalación con pytest -v . ¡Felicidades! Ahora tiene un entorno de desarrollo para Deep_QA que usa TensorFlow con soporte de CPU. (Para soporte de GPU, consulte Requisitos.txt para obtener información sobre cómo instalar tensorflow-gpu ).
Para entrenar o evaluar un modelo utilizando un clon del repositorio de Deepqa, el punto de entrada recomendado es usar el script run_model.py . El primer argumento de ese script es un archivo de parámetros, descrito más a continuación. El segundo argumento determina el comportamiento, ya sea capacitar un modelo o evaluar un modelo capacitado con un conjunto de datos de prueba. Las opciones válidas actuales para el segundo argumento son train y test (omitir el argumento es lo mismo que train de pasar).
Los archivos de parámetros especifican la clase de modelo que está utilizando, hiperparámetros de modelos, detalles de capacitación, archivos de datos, detalles del generador de datos y muchas otras cosas. Puede ver archivos de parámetros de ejemplo en el directorio de ejemplos. Puede obtener alguna noción de qué parámetros están disponibles al mirar a través de la documentación.
En realidad, capacitar a un modelo requerirá archivos de entrada, que debe proporcionar. Tenemos una biblioteca complementaria, Deepqa Experiments, que fue diseñado originalmente para producir archivos de entrada y ejecutar experimentos, y puede usarse para generar archivos de datos requeridos para la mayoría de las tareas para las que tenemos modelos. Nos estamos moviendo para poner el código de procesamiento de datos directamente en DeepQA, de modo que los experimentos de Deepqa no son necesarios, pero por ahora, obtener archivos de datos de entrenamiento en el formato correcto se realiza más fácilmente con los experimentos de Deepqa.
Si está utilizando Deepqa como biblioteca en su propio código, aún es sencillo ejecutar su modelo. En lugar de usar el script run_model.py para hacer el entrenamiento/evaluación, puede hacerlo usted mismo de la siguiente manera:
from deep_qa import run_model, evaluate_model, load_model, score_dataset
# Train a model given a json specification
run_model("/path/to/json/parameter/file")
# Load a model given a json specification
loaded_model = load_model("/path/to/json/parameter/file")
# Do some more exciting things with your model here!
# Get predictions from a pre-trained model on some test data specified in the json parameters.
predictions = score_dataset("/path/to/json/parameter/file")
# Compute your own metrics, or do beam search, or whatever you want with the predictions here.
# Compute Keras' metrics on a test dataset, using a pre-trained model.
evaluate_model("/path/to/json/parameter/file", ["/path/to/data/file"])
El resto de las pautas de uso, ejemplos, etc., son los mismos que cuando se trabaja en un clon del repositorio.
Para implementar un nuevo modelo en DeepQA, debe subclase TextTrainer . Hay documentación sobre lo que es necesario para esto; Consulte en particular la sección de métodos abstractos. Para un ejemplo simple de un modelo completamente funcional, consulte el etiquetador de secuencia simple, que tiene alrededor de 20 líneas de código de implementación real.
Para entrenar, cargar y evaluar modelos que ha escrito usted mismo, simplemente pase un argumento adicional a las funciones anteriores y elimine el parámetro model_class de su especificación JSON. Por ejemplo:
from deep_qa import run_model
from .local_project import MyGreatModel
# Train a model given a json specification (without a "model_class" attribute).
run_model("/path/to/json/parameter/file", model_class=MyGreatModel)
Si está haciendo una nueva tarea, o una nueva variante de una tarea con una especificación de entrada/salida diferente, probablemente también necesite implementar un tipo Instance . La Instance maneja los datos de lectura de un archivo y la convierte en matrices numpy que pueden usarse para el entrenamiento y la evaluación. Esto solo debe suceder una vez para cada especificación de entrada/salida.
Deepqa tiene implementaciones de métodos de vanguardia para una variedad de tareas. Aquí hay algunos de ellos:
Este código permite una fácil experimentación con los siguientes conjuntos de datos:
Sin embargo, tenga en cuenta que el código de procesamiento de datos para la mayoría de esto actualmente vive en experimentos de Deepqa.
Si usa este código y piensa que algo podría mejorarse, las solicitudes de extracción son muy bienvenidas. Abrir un problema también está bien, pero podemos responder mucho más rápidamente para extraer solicitudes.
Este código se publica bajo los términos de la licencia Apache 2.