Este repositorio contiene los componentes, como las clases DatasetReader , Model y Predictor , para aplicar Allennlp a una amplia variedad de tareas de PNL. También proporciona una manera fácil de descargar y usar modelos previamente capacitados que fueron entrenados con estos componentes.
Esta es una descripción general de las tareas compatibles con la biblioteca de modelos Allennlp junto con los componentes correspondientes proporcionados, organizados por categoría. Para obtener una descripción más completa, consulte la documentación de los modelos Allennlp o la página de documentos con código.
Clasificación
Las tareas de clasificación implican predecir una o más etiquetas de un conjunto predefinido para asignar a cada entrada. Los ejemplos incluyen análisis de sentimientos, donde las etiquetas pueden ser {"positive", "negative", "neutral"} y respuesta de preguntas binarias, donde las etiquetas son {True, False} .
? Componentes proporcionados: Lectores de conjuntos de datos para varios conjuntos de datos, incluidos Boolq y SST, así como un modelo de red de clasificación biattentive.
Resolución de coreferencia
Las tareas de resolución de coreferencia requieren encontrar todas las expresiones en un texto que se refiera a entidades comunes.
Consulte nlp.stanford.edu/projects/coref para obtener más detalles.
? Componentes proporcionados: un modelo COREF general y varios lectores de conjuntos de datos.
Generación
Esta es una categoría amplia para tareas como el resumen que implica la generación de texto no estricto y, a menudo, de longitud variable.
? Componentes proporcionados: varios modelos SEQ2SEQ como BART, Copynet y un SEQ2SEQ compuesto general, junto con los lectores de conjuntos de datos correspondientes.
Modelado de idiomas
Las tareas de modelado de idiomas implican aprender una distribución de probabilidad sobre secuencias de tokens.
? Componentes proporcionados: Varias implementaciones de modelos de idioma, como un LM enmascarado y un siguiente LM de tokens.
Opción múltiple
Las tareas de opción múltiple requieren seleccionar una opción correcta entre las alternativas, donde el conjunto de opciones puede ser diferente para cada entrada. Esto difiere de la clasificación donde el conjunto de opciones está predefinido y fijado en todas las entradas.
? Componentes proporcionados: un modelo de opción múltiple basado en transformador y un puñado de lectores de conjuntos de datos para conjuntos de datos específicos.
Clasificación de pares
La clasificación de pares es otra categoría amplia que contiene tareas como la implicación textual, que es determinar si, para un par de oraciones, los hechos en la primera oración implican los hechos en el segundo.
? Componentes proporcionados: Lectores de conjuntos de datos para varios conjuntos de datos, incluidos SNLI y Quora parafrasea.
Comprensión de lectura
Las tareas de comprensión de lectura implican responder preguntas sobre un pasaje de texto para mostrar que el sistema entiende el pasaje.
? Componentes proporcionados: modelos como BIDAF y un modelo de control de calidad basado en transformadores, así como lectores para conjuntos de datos como Drop, Quac y Squad.
Predicción estructurada
La predicción estructurada incluye tareas como el etiquetado de roles semánticos (SRL), que es para determinar la estructura de argumentos de predicado latente de una oración y proporcionar representaciones que puedan responder preguntas básicas sobre el significado de la oración, incluido quién hizo a quién, etc., etc.
? Componentes proporcionados: Lectores de conjuntos de datos para Penn Tree Bank, Ontonotes, etc., y varios modelos, incluido uno para SRL y un analizador gráfico muy general.
Etiquetado de secuencia
Las tareas de etiquetado de secuencia incluyen reconocimiento de entidad nombrado (NER) y NER de grano fino.
? Componentes proporcionados: un modelo de campo aleatorio condicional y lectores de conjuntos de datos para conjuntos de datos como Conll-2000, Conll-2003, CCGBank y Ontonotes.
Texto + visión
Esta es una categoría de Catch-All para cualquier Text + Vision MultiModal Tareas, como respuesta de preguntas visuales (VQA), la tarea de generar una respuesta en respuesta a una pregunta de lenguaje natural sobre el contenido de una imagen.
? Componentes proporcionados: varios modelos como un modelo Vilbert para VQA y uno para la implicación visual, junto con los lectores de conjuntos de datos correspondientes.
Cada modelo previo en el estado previo en los modelos Allennlp tiene una ModelCard correspondiente en allennlp_models/modelcards/ Carper. Muchos de estos modelos también están alojados en la demostración de Allennlp y la galería de proyectos Allennlp.
Para enumerar programáticamente los modelos disponibles, puede ejecutar lo siguiente desde una sesión de Python:
> >> from allennlp_models import pretrained
> >> print ( pretrained . get_pretrained_models ()) La salida es un diccionario que mapea las ID de modelo a su ModelCard :
{'structured-prediction-srl-bert': <allennlp.common.model_card.ModelCard object at 0x14a705a30>, ...}
Puede cargar un Predictor para cualquiera de estos modelos con el pretrained.load_predictor() auxiliar. Por ejemplo:
> >> pretrained . load_predictor ( "mc-roberta-swag" )Aquí hay una lista de modelos previamente capacitados actualmente disponibles.
coref-spanbert : COREF de orden superior con inferencia gruesa a fina (con incrustaciones de Spanbert).evaluate_rc-lerc : un modelo Bert que obtiene respuestas candidatas de 0 a 1.generation-bart - Bart con un cabezal de modelo de idioma para la generación.glove-sst - Clasificador binario LSTM con incrustaciones de guantes.lm-masked-language-model : modelo de lenguaje enmascarado con sede en Bertlm-next-token-lm-gpt2 -Modelo de lenguaje GPT-2 de Openai que genera el siguiente token.mc-roberta-commonsenseqa -Modelo de opción múltiple con sede en Roberta para Commonsenseqa.mc-roberta-piqa Piqa-Modelo de opción múltiple con sede en Roberta para PIQA.mc-roberta-swag -SWAG-Modelo de opción múltiple con sede en Roberta para SWAG.nlvr2-vilbert -Modelo basado en Vilbert para implicación visual.nlvr2-vilbert -Modelo basado en Vilbert para implicación visual.pair-classification-adversarial-binary-gender-bias-mitigated-roberta-snli -Roberta Finetuned en SNLI con mitigación de sesgo de género binario adversario.pair-classification-binary-gender-bias-mitigated-roberta-snli -Roberta fineted en SNLI con mitigación de sesgo de género binario.pair-classification-decomposable-attention-elmo : el modelo de atención descomponible (Parikh et al, 2017) combinado con embedidas ELMO entrenadas en SNLI.pair-classification-esim -LSTM mejorado entrenado en SNLI.pair-classification-roberta-mnli -Roberta Finetuned en Mnli.pair-classification-roberta-rte : un modelo de clasificación de par estampado después del modelo propuesto en Devlin et al, ajustado en el Corpus de Superglue RTEpair-classification-roberta-snli -Roberta Finetuned en Snli.rc-bidaf-elmo -Modelo BIDAF con incrustaciones ELMO en lugar de guante.rc-bidaf - Modelo BIDAF con integración de guantes.rc-naqanet : una versión aumentada de Qanet que agrega capacidad de razonamiento numérico rudimentario, entrenada en Drop (Dua et al., 2019), como se publica en el documento original.rc-nmn - Una red de módulos neuronales capacitados en la caída.rc-transformer-qa : un modelo de comprensión de lectura estampado después del modelo propuesto en Devlin et al, con mejoras tomadas del modelo de escuadrón en el proyecto Transformersroberta-sst -Clasificador binario con sede en Roberta para Stanford Sentiment Treebankstructured-prediction-biaffine-parser : un modelo neuronal para el análisis de dependencia utilizando clasificadores de biaffina además de un LSTM bidireccional.structured-prediction-constituency-parser Garantía con embedidas ELMO basadas en el personajestructured-prediction-srl-bert : un modelo basado en Bert (Shi et al, 2019) con algunas modificaciones (sin parámetros adicionales aparte de una capa de clasificación lineal)structured-prediction-srl : una reimplementación de un modelo de predicción de secuencia bilstm profunda (Stanovsky et al., 2018)tagging-elmo-crf-tagger -Tagger Ner Usando un codificador de caracteres de la unidad recurrente (Gru) cerrada, así como un codificador de frase Gru, con incrustaciones de guantes.tagging-fine-grained-crf-tagger : este modelo identifica una amplia gama de 16 tipos semánticos en el texto de entrada. Es una reimplementación de Lampher (2016) y utiliza un bilstm con una capa de CRF, incrustaciones de carácter e incrustaciones de ELMO.tagging-fine-grained-transformer-crf-tagger -modelo ner de grano finove-vilbert -Modelo basado en Vilbert para implicación visual.vgqa-vilbert -VILBERT (abreviatura de visión y lenguaje BERT), es un modelo para aprender representaciones conjuntas agnósticas de tareas de contenido de imagen y lenguaje natural.vqa-vilbert -Vilbert (abreviatura de visión y lenguaje BERT), es un modelo para aprender representaciones conjuntas agnósticas de tareas de contenido de imagen y lenguaje natural. allennlp-models está disponible en PYPI. Para instalar con pip , simplemente ejecute
pip install allennlp-models Tenga en cuenta que el paquete allennlp-models está vinculado al paquete Core allennlp . Por lo tanto, cuando instale el paquete de modelos, obtendrá la versión correspondiente de allennlp (si aún no ha instalado allennlp ). Por ejemplo,
pip install allennlp-models==2.2.0
pip freeze | grep allennlp
# > allennlp==2.2.0
# > allennlp-models==2.2.0 Si tiene la intención de instalar el paquete de modelos desde la fuente, entonces probablemente también desee instalar allennlp desde la fuente. Una vez que haya instalado allennlp , ejecute lo siguiente dentro del mismo entorno de Python:
git clone https://github.com/allenai/allennlp-models.git
cd allennlp-models
ALLENNLP_VERSION_OVERRIDE= ' allennlp ' pip install -e .
pip install -r dev-requirements.txt La variable de entorno ALLENNLP_VERSION_OVERRIDE asegura que la dependencia allennlp no esté hecha para que su instalación local de allennlp sea suficiente. Sin embargo, si aún no ha instalado allennlp y no desea administrar una instalación local, solo omita esta variable de entorno y allennlp se instalará desde la rama principal en GitHub.
Tanto allennlp como allennlp-models se desarrollan y proban de lado a lado, por lo que deben mantenerse al día entre sí. Si nos fijamos en el flujo de trabajo de GitHub Actions para allennlp-models , siempre se prueba contra la rama principal de allennlp . Del mismo modo, allennlp siempre se prueba contra la rama principal de allennlp-models .
Docker proporciona una máquina virtual con todo configurado para ejecutar Allennlp, ya sea que aproveche una GPU o simplemente se ejecute en una CPU. Docker proporciona más aislamiento y consistencia, y también facilita la distribución de su entorno a un clúster de cómputo.
Una vez que haya instalado Docker, puede usar una imagen preconstruida desde una versión o construir una imagen localmente con cualquier versión de allennlp y allennlp-models .
Si tiene GPU disponibles, también debe instalar el tiempo de ejecución de NVIDIA-Docker.
Para construir una imagen localmente a partir de una versión específica, ejecute
docker build
--build-arg RELEASE=1.2.2
--build-arg CUDA=10.2
-t allennlp/models - < Dockerfile.release Simplemente reemplace el RELEASE y CUDA construya Args con lo que necesita. Puede consultar las etiquetas disponibles en Docker Hub para ver qué versiones CUDA están disponibles para una RELEASE determinada.
Alternativamente, puede construir contra compromisos específicos de allennlp y allennlp-models con
docker build
--build-arg ALLENNLP_COMMIT=d823a2591e94912a6315e429d0fe0ee2efb4b3ee
--build-arg ALLENNLP_MODELS_COMMIT=01bc777e0d89387f03037d398cd967390716daf1
--build-arg CUDA=10.2
-t allennlp/models - < Dockerfile.commit Simplemente cambie el ALLENNLP_COMMIT / ALLENNLP_MODELS_COMMIT y CUDA Build Args a las versiones SHAS y CUDA de Commit deseadas, respectivamente.
Una vez que haya creado su imagen, puede ejecutarla así:
mkdir -p $HOME /.allennlp/
docker run --rm --gpus all -v $HOME /.allennlp:/root/.allennlp allennlp/modelsNota: El
--gpus allsolo es válido si ha instalado el tiempo de ejecución NVIDIA-Docker.