Ce référentiel contient les composants - tels que DatasetReader , Model et les classes Predictor - pour appliquer ALLENNLP à une grande variété de tâches NLP. Il fournit également un moyen facile de télécharger et d'utiliser des modèles pré-formés qui ont été formés avec ces composants.
Il s'agit d'un aperçu des tâches soutenues par la bibliothèque des modèles ALLENNLP ainsi que les composants correspondants fournis, organisés par catégorie. Pour un aperçu plus complet, consultez la documentation des modèles ALLENNLP ou la page PaperswithCode.
Classification
Les tâches de classification impliquent de prédire une ou plusieurs étiquettes à partir d'un ensemble prédéfini à affecter à chaque entrée. Les exemples incluent l'analyse des sentiments, où les étiquettes pourraient être {"positive", "negative", "neutral"} et la réponse à la question binaire, où les étiquettes sont {True, False} .
? Composants fournis: lecteurs d'ensembles de données pour divers ensembles de données, y compris Boolq et SST, ainsi qu'un modèle de réseau de classification Biattentive.
Résolution de coreférence
Les tâches de résolution de coréférence nécessitent de trouver toutes les expressions dans un texte qui se réfèrent aux entités communes.
Voir nlp.stanford.edu/projects/coref pour plus de détails.
? Composants fournis: un modèle général CoreF et plusieurs lecteurs de l'ensemble de données.
Génération
Il s'agit d'une large catégorie pour des tâches telles que le résumé qui impliquent la génération de texte non structuré et souvent variable.
? Composants fournis: plusieurs modèles SEQ2SEQ tels que BART, Copynet et un SEQ2SEQ composé général, ainsi que les lecteurs de données de données correspondants.
Modélisation des langues
Les tâches de modélisation de la langue impliquent l'apprentissage d'une distribution de probabilité sur les séquences de jetons.
? Composants fournis: plusieurs implémentations de modèle de langue, telles qu'un LM masqué et un Token Next LM.
À choix multiple
Les tâches à choix multiple nécessitent de sélectionner un choix correct parmi les alternatives, où l'ensemble des choix peut être différent pour chaque entrée. Cela diffère de la classification où l'ensemble des choix est prédéfini et fixé sur toutes les entrées.
? Composants fournis: un modèle à choix multiple basé sur un transformateur et une poignée de lecteurs de données pour des ensembles de données spécifiques.
Classification des paires
La classification des paires est une autre catégorie large qui contient des tâches telles que l'emballage textuel, qui est de déterminer si, pour une paire de phrases, les faits de la première phrase impliquent les faits dans la seconde.
? Composants fournis: lecteurs de données de données pour plusieurs ensembles de données, notamment SNLI et Quora Paraphrase.
Compréhension de la lecture
Les tâches de compréhension de la lecture impliquent de répondre aux questions sur un passage du texte pour montrer que le système comprend le passage.
? Composants fournis: des modèles tels que BIDAF et un modèle QA basé sur un transformateur, ainsi que des lecteurs pour des ensembles de données tels que Drop, Quac et Squad.
Prédiction structurée
La prédiction structurée comprend des tâches telles que l'étiquetage des rôles sémantiques (SRL), qui consiste à déterminer la structure de l'argument du prédicat latent d'une phrase et à fournir des représentations qui peuvent répondre aux questions fondamentales sur le sens de la phrase, y compris qui a fait quoi à qui, etc.
? Composants fournis: lecteurs d'ensemble de données pour Penn Tree Bank, Ontonotes, etc., et plusieurs modèles dont un pour SRL et un analyseur de graphes très général.
Taging de séquence
Les tâches de marquage de séquence comprennent la reconnaissance des entités nommées (NER) et le NER à grain fin.
? Composants fournis: un modèle de champ aléatoire conditionnel et des lecteurs d'ensemble de données pour des ensembles de données tels que Conll-2000, CONLL-2003, CCGBANK et Ontonotes.
Texte + vision
Il s'agit d'une catégorie fourre-tout pour tout texte + vision des tâches multimodales de telles questions visuelles répondant (VQA), la tâche de générer une réponse en réponse à une question de langage naturel sur le contenu d'une image.
? Composants fournis: plusieurs modèles tels qu'un modèle Vilbert pour VQA et un pour l'impression visuelle, ainsi que les lecteurs de données de données correspondants.
Chaque modèle pré-entraîné dans les modèles ALLENNLP a une ModelCard correspondante dans le dossier allennlp_models/modelcards/ . Beaucoup de ces modèles sont également hébergés sur la démo AllenLP et la galerie de projet AllenLP.
Pour répertorier programmatique les modèles disponibles, vous pouvez exécuter ce qui suit à partir d'une session Python:
> >> from allennlp_models import pretrained
> >> print ( pretrained . get_pretrained_models ()) La sortie est un dictionnaire qui mappe les ID de modèle à leur ModelCard :
{'structured-prediction-srl-bert': <allennlp.common.model_card.ModelCard object at 0x14a705a30>, ...}
Vous pouvez charger un Predictor pour l'un de ces modèles avec l'assistant pretrained.load_predictor() . Par exemple:
> >> pretrained . load_predictor ( "mc-roberta-swag" )Voici une liste des modèles pré-formés actuellement disponibles.
coref-spanbert - COREF d'ordre supérieur avec une inférence grossière à fin (avec Spanbert incorpore).evaluate_rc-lerc - Un modèle Bert qui marque le candidat répond de 0 à 1.generation-bart - BART avec une tête de modèle de langue pour la génération.glove-sst - Classificateur binaire LSTM avec incorporer des gants.lm-masked-language-model - Modèle de langage masqué basé sur Bertlm-next-token-lm-gpt2 - Modèle de langue GPT-2 d'Openai qui génère le jet suivant.mc-roberta-commonsenseqa - Modèle multiple à choix multiple basé à Roberta pour CommonSenseqa.mc-roberta-piqa - Modèle multiple à choix multiple basé à Roberta pour PIQA.mc-roberta-swag - ROBERTA MODÈLE MULTIPLE CHOIX POUR SWAG.nlvr2-vilbert - Modèle basé à Vilbert pour l'impression visuelle.nlvr2-vilbert - Modèle basé à Vilbert pour l'impression visuelle.pair-classification-adversarial-binary-gender-bias-mitigated-roberta-snli - Roberta finetuned sur SNLI avec atténuation adverse du biais du genre binaire.pair-classification-binary-gender-bias-mitigated-roberta-snli - Roberta a été finetuné sur SNLI avec une atténuation binaire des biais de genre.pair-classification-decomposable-attention-elmo - Le modèle d'attention décomposable (Parikh et al, 2017) combiné avec des incorporations d'Elmo formées sur le SNLI.pair-classification-esim - LSTM amélioré formé sur SNLI.pair-classification-roberta-mnli - Roberta finetuned sur Mnli.pair-classification-roberta-rte - un modèle de classification de paire modelé par le modèle proposé dans Devlin et al, affiné sur le corpus RTE Supergluepair-classification-roberta-snli - Roberta finetuned sur snli.rc-bidaf-elmo - Modèle BIDAF avec Elmo Incorpings au lieu de gant.rc-bidaf - Modèle BIDAF avec des incorporations de gants.rc-naqanet - Une version augmentée de Qanet qui ajoute une capacité de raisonnement numérique rudimentaire, formé sur Drop (Dua et al., 2019), tel que publié dans le papier de chute d'origine.rc-nmn - Un réseau de modules neuronaux formé sur Drop.rc-transformer-qa - Un modèle de compréhension en lecture sur le modèle proposé dans Devlin et al, avec des améliorations empruntées au modèle Squad dans le projet Transformersroberta-sst - Classificateur binaire basé à Roberta pour Stanford Sentiment Treebankstructured-prediction-biaffine-parser - Un modèle neuronal pour l'analyse de dépendance à l'aide de classificateurs de biaffine en plus d'un LSTM bidirectionnel.structured-prediction-constituency-parser - Analyseur de circonscription avec des incorporations Elmo basées sur les personnagesstructured-prediction-srl-bert - Un modèle basé sur Bert (Shi et al, 2019) avec quelques modifications (pas de paramètres supplémentaires en dehors d'une couche de classification linéaire)structured-prediction-srl - Une réimplémentation d'un modèle de prédiction de séquence profonde de Bilstm (Stanovsky et al., 2018)tagging-elmo-crf-tagger - Ner Tagger utilisant un codeur de caractères récurrent d'unité récurrente (GRU) ainsi qu'un encodeur de phrase GRU, avec des incorporations de gants.tagging-fine-grained-crf-tagger - Ce modèle identifie une large gamme de 16 types sémantiques dans le texte d'entrée. Il s'agit d'une réimplémentation de Lample (2016) et utilise un bilstm avec une couche CRF, des incorporations de caractères et des incorporations d'Elmo.tagging-fine-grained-transformer-crf-tagger - Modèle NER à grain finve-vilbert - Modèle basé à Vilbert pour l'impression visuelle.vgqa-vilbert - Vilbert (abréviation de la vision et du langage Bert), est un modèle pour l'apprentissage des représentations conjointes agnostiques des tâches du contenu de l'image et du langage naturel.vqa-vilbert - Vilbert (abréviation de la vision et du langage Bert), est un modèle d'apprentissage des représentations conjointes agnostiques des tâches du contenu de l'image et du langage naturel. allennlp-models est disponible sur PYPI. Pour installer avec pip , il suffit de courir
pip install allennlp-models Notez que le package allennlp-models est lié au package Core allennlp . Par conséquent, lorsque vous installez le package de modèles, vous obtiendrez la version correspondante d' allennlp (si vous n'avez pas déjà installé allennlp ). Par exemple,
pip install allennlp-models==2.2.0
pip freeze | grep allennlp
# > allennlp==2.2.0
# > allennlp-models==2.2.0 Si vous avez l'intention d'installer le package de modèles à partir de la source, vous souhaitez probablement également installer allennlp à partir de la source. Une fois que vous avez installé allennlp , exécutez ce qui suit dans le même environnement 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 d'environnement ALLENNLP_VERSION_OVERRIDE garantit que la dépendance allennlp n'est pas inspirée afin que votre installation locale d' allennlp soit suffisante. Si, cependant, vous n'avez pas encore installé allennlp et que vous ne souhaitez pas gérer une installation locale, il suffit d'omettre cette variable d'environnement et allennlp sera installé à partir de la branche principale de GitHub.
allennlp-models allennlp et AllenLP sont tous deux développés et testés côte à côte, ils doivent donc être mis à jour les uns avec les autres. Si vous regardez le flux de travail des actions GitHub pour allennlp-models , il est toujours testé contre la branche principale d' allennlp . De même, allennlp est toujours testé contre la branche principale des allennlp-models .
Docker fournit une machine virtuelle avec tout ce qui est configuré pour exécuter ALLENNLP - que vous titurez un parti de GPU ou que vous exécutiez simplement sur un CPU. Docker fournit plus d'isolement et de cohérence, et facilite également la distribution de votre environnement à un cluster de calcul.
Une fois que vous avez installé Docker, vous pouvez soit utiliser une image prédéfinie à partir d'une version, soit créer une image localement avec n'importe quelle version des modèles allennlp et allennlp-models .
Si vous avez des GPU disponibles, vous devez également installer le runtime nvidia-docker.
Pour construire une image localement à partir d'une version spécifique, exécutez
docker build
--build-arg RELEASE=1.2.2
--build-arg CUDA=10.2
-t allennlp/models - < Dockerfile.release Remplacez simplement la RELEASE et CUDA Build Args par ce dont vous avez besoin. Vous pouvez vérifier les balises disponibles sur Docker Hub pour voir quelles versions CUDA sont disponibles pour une RELEASE donnée.
Alternativement, vous pouvez construire contre des engins spécifiques des allennlp-models allennlp et allennlp avec
docker build
--build-arg ALLENNLP_COMMIT=d823a2591e94912a6315e429d0fe0ee2efb4b3ee
--build-arg ALLENNLP_MODELS_COMMIT=01bc777e0d89387f03037d398cd967390716daf1
--build-arg CUDA=10.2
-t allennlp/models - < Dockerfile.commit Changez simplement le ALLENNLP_COMMIT / ALLENNLP_MODELS_COMMIT et CUDA Build Args aux versions de validation SHAS et CUDA souhaitées, respectivement.
Une fois que vous avez construit votre image, vous pouvez l'exécuter comme ceci:
mkdir -p $HOME /.allennlp/
docker run --rm --gpus all -v $HOME /.allennlp:/root/.allennlp allennlp/modelsRemarque: le
--gpus alln'est pas valable que si vous avez installé le runtime nvidia-docker.