Dieses Repository enthält die Komponenten - z. B. DatasetReader , Model und Predictor -, um Allennlp auf eine Vielzahl von NLP -Aufgaben anzuwenden. Es bietet auch eine einfache Möglichkeit, vorgeborene Modelle herunterzuladen und zu verwenden, die mit diesen Komponenten trainiert wurden.
Dies ist ein Überblick über die von der Allennlp Models Library unterstützten Aufgaben zusammen mit den entsprechenden Komponenten, die nach der Kategorie organisiert sind. Eine umfassendere Übersicht finden Sie in der Dokumentation der Allennlp -Modelle oder auf der Seite "Papers withcode".
Einstufung
Klassifizierungsaufgaben beinhalten die Vorhersage eines oder mehrerer Beschriftungen von einem vordefinierten Satz, der jeder Eingabe zugewiesen wird. Beispiele hierfür sind die Sentiment -Analyse, bei der die Beschriftungen {"positive", "negative", "neutral"} und binärer Fragen beantwortet werden könnten, wobei die Beschriftungen {True, False} sind.
? Bestimmte Komponenten: Datensatzleser für verschiedene Datensätze, einschließlich Boolq und SST, sowie ein biattierendes Klassifizierungsnetzwerkmodell.
Koreferenzauflösung
Aufgaben der Coreference -Auflösung erfordern, alle Ausdrücke in einem Text zu finden, der sich auf gemeinsame Entitäten bezieht.
Weitere Informationen finden Sie unter nlp.stanford.edu/projects/coref.
? Bestimmte Komponenten: Ein allgemeines CoreF -Modell und mehrere Datensatzleser.
Generation
Dies ist eine breite Kategorie für Aufgaben wie die Zusammenfassung, bei der unruhige und häufig variable Länge des Textes erzeugt wird.
? Bestimmte Komponenten: Mehrere SEQ2SQ -Modelle wie BART, COPYNET und ein allgemein komponierter SEQ2SEQ sowie entsprechende Datensatzleser.
Sprachmodellierung
Sprachmodellierungsaufgaben beinhalten das Erlernen einer Wahrscheinlichkeitsverteilung über Sequenzen von Token.
? Bestimmte Komponenten: Mehrere Sprachmodellimplementierungen, wie z. B. ein maskiertes LM und ein Next -Token -LM.
Multiple Choice
Bei Multiple -Choice -Aufgaben müssen eine korrekte Auswahl zwischen Alternativen ausgewählt werden, bei denen die Auswahlmenge für jede Eingabe unterschiedlich sein kann. Dies unterscheidet sich von der Klassifizierung, bei der die Auswahlmenge vordefiniert und über alle Eingänge hinweg fixiert ist.
? Bestimmte Komponenten: Ein transformatorbasiertes Multiple-Choice-Modell und eine Handvoll Datensatzleser für bestimmte Datensätze.
Paarklassifizierung
Die Paarklassifizierung ist eine weitere breite Kategorie, die Aufgaben wie Textbeschaffung enthält. Dies bedeutet, ob die Tatsachen im ersten Satz für zwei Sätze die Tatsachen im zweiten implizieren.
? Bestimmte Komponenten: Datensatzleser für mehrere Datensätze, einschließlich SNLI- und Quora -Paraphrase.
Leseverständnis
Leserverständnisaufgaben beinhalten die Beantwortung von Fragen zu einer Textpassage, um zu zeigen, dass das System die Passage versteht.
? Bestimmte Komponenten: Modelle wie BIDAF und ein transformator-basiertes QA-Modell sowie Leser für Datensätze wie Drop, Quac und Squad.
Strukturierte Vorhersage
Die strukturierte Vorhersage umfasst Aufgaben wie die semantische Rollenmarkierung (SRL), die zur Bestimmung der latenten Prädikat -Argument -Struktur eines Satzes und zur Bereitstellung von Darstellungen, die grundlegende Fragen zur Satz Bedeutung beantworten können, einschließlich dessen, was was an wem tat usw.
? Bestimmte Komponenten: Datensatzleser für die Penn Tree Bank, Ontonotes usw. und mehrere Modelle, darunter eine für SRL und einen sehr allgemeinen Grafik -Parser.
Sequenz -Tagging
Zu den Sequenz-Tagging-Aufgaben gehören die benannte Entityerkennung (NER) und ein feinkörniger NER.
? Bestimmte Komponenten: Ein bedingtes Zufallsfeldmodell und Datensatzleser für Datensätze wie Conll-2000, Conll-2003, CCGBank und Ontonotes.
Text + Vision
Dies ist eine Catch-All-Kategorie für jeden Text + Vision Multi-Modal-Aufgaben wie visuelle Fragenbeantwortung (VQA), die Aufgabe, eine Antwort als Antwort auf eine natürliche Sprachfrage zum Inhalt eines Bildes zu generieren.
? Bestimmte Komponenten: Mehrere Modelle wie ein Vilbert -Modell für VQA und eine für die visuelle Einführung sowie die entsprechenden Datensatzleser.
Jedes vorgespannte Modell in Allennlp -Modellen verfügt über eine entsprechende ModelCard im allennlp_models/modelcards/ . Viele dieser Modelle werden auch in der Allennlp -Demo und der Allennlp -Projektgalerie gehostet.
Um die verfügbaren Modelle programmatisch aufzulisten, können Sie Folgendes aus einer Python -Sitzung ausführen:
> >> from allennlp_models import pretrained
> >> print ( pretrained . get_pretrained_models ()) Die Ausgabe ist ein Wörterbuch, das die Modell -IDs an ihre ModelCard ordnet:
{'structured-prediction-srl-bert': <allennlp.common.model_card.ModelCard object at 0x14a705a30>, ...}
Sie können einen Predictor für eines dieser Modelle mit dem pretrained.load_predictor() . Zum Beispiel:
> >> pretrained . load_predictor ( "mc-roberta-swag" )Hier finden Sie eine Liste der derzeit verfügbaren Modelle.
coref-spanbert -CoreF höherer Ordnung mit grob-bis-optimiger Inferenz (mit Spanbert-Einbettungen).evaluate_rc-lerc - Ein Bert -Modell, das Kandidatenantworten von 0 bis 1 erzielt.generation-bart - Bart mit einem Sprachmodellkopf für die Generation.glove-sst - LSTM -Binärklassifizierer mit Handschuhbettendings.lm-masked-language-model -Bert-basiertes maskiertes Sprachmodelllm-next-token-lm-gpt2 -OpenAIs GPT-2-Sprachmodell, das das nächste Token generiert.mc-roberta-commonsenseqa -Roberta Multiple Choice-Modell für CommonSenseqa.mc-roberta-piqa -Roberta-in Roberta ansässiges Multiple-Choice-Modell für PIQA.mc-roberta-swag -Roberta Multiple Choice-Modell für Swag.nlvr2-vilbert -Vilbert-basiertes Modell für die visuelle Verbundenheit.nlvr2-vilbert -Vilbert-basiertes Modell für die visuelle Verbundenheit.pair-classification-adversarial-binary-gender-bias-mitigated-roberta-snli -Roberta, die auf SNLI mit kontroverser binärer BIAS-Minderung der geschlechtsspezifischen Geschlechter bestraft wurden.pair-classification-binary-gender-bias-mitigated-roberta-snli -Roberta, die auf SNLI mit binärer Geschlechtsverzerrung abgelegt ist.pair-classification-decomposable-attention-elmo -Das zersetzbare Aufmerksamkeitsmodell (Parikh et al., 2017) in Kombination mit Elmo-Einbettungen, die auf SNLI trainiert wurden.pair-classification-esim -Verbessertes LSTM, das auf SNLI trainiert wurde.pair-classification-roberta-mnli -Roberta, die auf MNLI beendet ist.pair-classification-roberta-rte -Ein Paar Klassifizierungsmodell, das nach dem vorgeschlagenen Modell in Devlin et al.pair-classification-roberta-snli -Roberta, die auf SNLI beendet ist.rc-bidaf-elmo -BIDAF-Modell mit Elmo-Einbettungen anstelle von Handschuh.rc-bidaf - BIDAF -Modell mit Handschuhbettendings.rc-naqanet - Eine erweiterte Version von Qanet, die die Fähigkeit zur rudimentären numerischen Argumentation hinzufügt, die auf Drop ausgebildet ist (Dua et al., 2019), wie im Original Droppapier veröffentlicht.rc-nmn - Ein auf Drop geschultes neuronales Modulnetz.rc-transformer-qa -Ein nach dem vorgeschlagener Modell in Devlin et al. Strukturiertem Leseverständnismodell mit Verbesserungen, die aus dem Squad-Modell im Projekttransformatorenprojekt entlehnt wurdenroberta-sst -Binary-Klassifizierin für Stanford Sentiment Treebank in Roberta ansässigstructured-prediction-biaffine-parser -Ein neuronales Modell für die Abhängigkeitsanalyse unter Verwendung von Biaffinklassifizierern neben einer bidirektionalen LSTM.structured-prediction-constituency-parser -Wahlkreis Parser mit charakterbasierten ELM-Einbettungenstructured-prediction-srl-bert -Ein Bert-basiertes Modell (Shi et al., 2019) mit einigen Modifikationen (keine zusätzlichen Parameter, abgesehen von einer linearen Klassifizierungsschicht)structured-prediction-srl -Eine Neuauflagen eines tiefen Bilstm-Sequenz-Vorhersagemodells (Stanovsky et al., 2018)tagging-elmo-crf-tagger -NER-Tagger mit einem GRU-Encoder der Gated Recurrent Unit (GRU) sowie eines Gru-Phrase-Encoders mit Handschuhbettendings.tagging-fine-grained-crf-tagger -Dieses Modell identifiziert einen breiten Bereich von 16 semantischen Typen im Eingabetxt. Es handelt sich um eine Neuimplementierung von Lample (2016) und verwendet einen Bilstm mit einer CRF -Schicht, Zeicheneinbettungen und Elmo -Einbettungen.tagging-fine-grained-transformer-crf-tagger -Feinkörniges NER-Modellve-vilbert -Vilbert-basierte Modell für die visuelle Verbundenheit.vgqa-vilbert -VILBERT (kurz für Vision und Sprache Bert) ist ein Modell für das Lern von Task-Agnostic-gemeinsamen Darstellungen von Bildinhalten und natürlicher Sprache.vqa-vilbert -VILBERT (kurz für Vision-and-Sprache Bert) ist ein Modell für das Lernaufgabe-agnostische gemeinsame Darstellungen von Bildinhalten und natürlicher Sprache. allennlp-models ist auf PYPI erhältlich. Um mit pip zu installieren, laufen Sie einfach aus
pip install allennlp-models Beachten Sie, dass das allennlp-models Paket an das allennlp Kernpaket gebunden ist. Wenn Sie das Modelspaket installieren, erhalten Sie daher die entsprechende Version von allennlp (wenn Sie allennlp noch nicht installiert haben). Zum Beispiel,
pip install allennlp-models==2.2.0
pip freeze | grep allennlp
# > allennlp==2.2.0
# > allennlp-models==2.2.0 Wenn Sie beabsichtigen, das Modelspaket von Source aus zu installieren, möchten Sie wahrscheinlich auch allennlp von Quelle installieren. Wenn Sie allennlp installiert haben, führen Sie Folgendes in derselben Python -Umgebung aus:
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 Die Umgebungsvariable ALLENNLP_VERSION_OVERRIDE stellt sicher, dass die allennlp -Abhängigkeit nicht mehr ausreicht, damit Ihre lokale Installation von allennlp ausreicht. Wenn Sie allennlp jedoch noch nicht installiert haben und keine lokale Installation verwalten möchten, lassen Sie diese Umgebungsvariable einfach weg und allennlp wird aus der Hauptzweigung von GitHub installiert.
Sowohl allennlp als auch allennlp-models werden nebeneinander entwickelt und getestet, sodass sie miteinander auf dem neuesten Stand gehalten werden sollten. Wenn Sie sich den Workflow von GitHub Actions für allennlp-models ansehen, wird er immer gegen den Hauptzweig von allennlp getestet. In ähnlicher Weise wird allennlp immer gegen den Hauptzweig von allennlp-models getestet.
Docker stellt eine virtuelle Maschine mit allem zur Verfügung, um Allennlp auszuführen- ob Sie eine GPU nutzen oder einfach nur auf einer CPU ausgeführt werden. Docker bietet mehr Isolation und Konsistenz und erleichtert es auch, Ihre Umgebung auf einen Rechencluster zu verteilen.
Sobald Sie Docker installiert haben, können Sie entweder ein vorgebautes Bild aus einer Version verwenden oder ein Bild lokal mit jeder Version von allennlp und allennlp-models erstellen.
Wenn Sie GPUs zur Verfügung haben, müssen Sie auch die Nvidia-Docker-Laufzeit installieren.
Um ein Bild lokal aus einer bestimmten Version zu erstellen, laufen Sie aus
docker build
--build-arg RELEASE=1.2.2
--build-arg CUDA=10.2
-t allennlp/models - < Dockerfile.release Ersetzen Sie einfach die RELEASE und bauen Sie CUDA durch das, was Sie brauchen. Sie können die verfügbaren Tags auf Docker Hub überprüfen, um festzustellen, welche CUDA -Versionen für eine bestimmte RELEASE verfügbar sind.
Alternativ können Sie gegen bestimmte Commits von allennlp und allennlp-models mit bauen
docker build
--build-arg ALLENNLP_COMMIT=d823a2591e94912a6315e429d0fe0ee2efb4b3ee
--build-arg ALLENNLP_MODELS_COMMIT=01bc777e0d89387f03037d398cd967390716daf1
--build-arg CUDA=10.2
-t allennlp/models - < Dockerfile.commit Ändern Sie einfach die ALLENNLP_COMMIT / ALLENNLP_MODELS_COMMIT und CUDA -Argumente in den gewünschten Versionen von SHAs bzw. CUDA.
Sobald Sie Ihr Bild erstellt haben, können Sie es so ausführen:
mkdir -p $HOME /.allennlp/
docker run --rm --gpus all -v $HOME /.allennlp:/root/.allennlp allennlp/modelsHINWEIS: Das
--gpus allist nur gültig, wenn Sie die Nvidia-Docker-Laufzeit installiert haben.