Repositori ini berisi komponen - seperti DatasetReader , Model , dan kelas Predictor - untuk menerapkan AllenNlp ke berbagai tugas NLP. Ini juga menyediakan cara mudah untuk mengunduh dan menggunakan model pra-terlatih yang dilatih dengan komponen-komponen ini.
Ini adalah tinjauan umum dari tugas -tugas yang didukung oleh perpustakaan Allennlp Model bersama dengan komponen yang sesuai yang disediakan, diselenggarakan berdasarkan kategori. Untuk tinjauan umum yang lebih komprehensif, lihat dokumentasi AllenNLP Model atau halaman KaperwithCode.
Klasifikasi
Tugas klasifikasi melibatkan memprediksi satu atau lebih label dari set yang telah ditentukan untuk ditetapkan untuk setiap input. Contohnya termasuk analisis sentimen, di mana label mungkin {"positive", "negative", "neutral"} , dan menjawab pertanyaan biner, di mana labelnya {True, False} .
? Komponen yang disediakan: pembaca dataset untuk berbagai set data, termasuk BOOLQ dan SST, serta model jaringan klasifikasi batang.
Resolusi Coreference
Tugas resolusi coreference memerlukan menemukan semua ekspresi dalam teks yang merujuk pada entitas umum.
Lihat nlp.stanford.edu/projects/coref untuk lebih jelasnya.
? Komponen yang disediakan: Model COREF umum dan beberapa pembaca dataset.
Generasi
Ini adalah kategori luas untuk tugas-tugas seperti ringkasan yang melibatkan menghasilkan teks panjang yang tidak tersusun dan seringkali variabel.
? Komponen yang disediakan: Beberapa model SEQ2SEQ seperti BART, Copynet, dan SEQ2SEQ yang disusun secara umum, bersama dengan pembaca dataset yang sesuai.
Pemodelan Bahasa
Tugas pemodelan bahasa melibatkan pembelajaran distribusi probabilitas daripada urutan token.
? Komponen yang disediakan: Beberapa implementasi model bahasa, seperti LM bertopeng dan Token LM berikutnya.
Pilihan ganda
Tugas pilihan ganda memerlukan pemilihan pilihan yang benar di antara alternatif, di mana serangkaian pilihan mungkin berbeda untuk setiap input. Ini berbeda dari klasifikasi di mana himpunan pilihan telah ditentukan sebelumnya dan diperbaiki di semua input.
? Komponen yang disediakan: Model pilihan ganda berbasis transformator dan beberapa pembaca dataset untuk set data tertentu.
Klasifikasi Pasangan
Klasifikasi pasangan adalah kategori luas lain yang berisi tugas -tugas seperti upacara tekstual, yaitu untuk menentukan apakah, untuk sepasang kalimat, fakta -fakta dalam kalimat pertama menyiratkan fakta -fakta di urutan kedua.
? Komponen yang disediakan: pembaca dataset untuk beberapa set data, termasuk SNLI dan Quora parafrase.
Pemahaman membaca
Tugas pemahaman membaca melibatkan menjawab pertanyaan tentang bagian teks untuk menunjukkan bahwa sistem memahami bagian tersebut.
? Komponen yang disediakan: model seperti BIGAF dan model QA berbasis transformator, serta pembaca untuk set data seperti Drop, Quac, dan Squad.
Prediksi terstruktur
Prediksi terstruktur mencakup tugas -tugas seperti Semantic Role Labeling (SRL), yang untuk menentukan struktur argumen predikat laten dari suatu kalimat dan memberikan representasi yang dapat menjawab pertanyaan dasar tentang makna kalimat, termasuk siapa yang melakukan apa yang kepada siapa, dll.
? Komponen yang disediakan: Pembaca Dataset untuk Penn Tree Bank, Ontonotes, dll., Dan beberapa model termasuk satu untuk SRL dan parser grafik yang sangat umum.
Penandaan urutan
Tugas penandaan urutan termasuk Named Entity Recognition (NER) dan NER berbutir halus.
? Komponen yang disediakan: Model bidang acak bersyarat dan pembaca dataset untuk set data seperti Conll-2000, Conll-2003, CCGBank, dan Ontonotes.
Teks + Visi
Ini adalah kategori tangkapan-semua untuk setiap teks + visi tugas multi-modal seperti itu menjawab pertanyaan visual (VQA), tugas menghasilkan jawaban sebagai tanggapan terhadap pertanyaan bahasa alami tentang isi suatu gambar.
? Komponen yang disediakan: Beberapa model seperti model Vilbert untuk VQA dan satu untuk upacara visual, bersama dengan pembaca dataset yang sesuai.
Setiap model pretrained dalam model AllenNLP memiliki ModelCard yang sesuai di allennlp_models/modelcards/ folder. Banyak dari model ini juga di -host di demo Allennlp dan Galeri Proyek Allennlp.
Untuk mencantumkan model yang tersedia secara terprogram, Anda dapat menjalankan yang berikut dari sesi Python:
> >> from allennlp_models import pretrained
> >> print ( pretrained . get_pretrained_models ()) Outputnya adalah kamus yang memetakan ID model ke ModelCard mereka:
{'structured-prediction-srl-bert': <allennlp.common.model_card.ModelCard object at 0x14a705a30>, ...}
Anda dapat memuat Predictor untuk salah satu model ini dengan helper pretrained.load_predictor() . Misalnya:
> >> pretrained . load_predictor ( "mc-roberta-swag" )Berikut adalah daftar model pra-terlatih yang tersedia saat ini.
coref-spanbert -Coref tingkat tinggi dengan inferensi kasar-ke-halus (dengan embeddings spanbert).evaluate_rc-lerc - Model Bert yang mencetak jawaban kandidat dari 0 hingga 1.generation-bart - Bart dengan Model Bahasa Kepala untuk Generasi.glove-sst - LSTM Binary Classifier dengan Embeddings Glove.lm-masked-language-model LM-masked-Bert-Bertlm-next-token-lm-gpt2 -Model Bahasa GPT-2 Openai yang menghasilkan token berikutnya.mc-roberta-commonsenseqa -Model pilihan ganda yang berbasis di Roberta untuk Commonsenseqa.mc-roberta-piqa PIQA-Model pilihan ganda yang berbasis di Roberta untuk PIQA.mc-roberta-swag -Model pilihan ganda yang berbasis di Roberta untuk Swag.nlvr2-vilbert -Model berbasis Vilbert untuk ikut visual.nlvr2-vilbert -Model berbasis Vilbert untuk ikut visual.pair-classification-adversarial-binary-gender-bias-mitigated-roberta-snli -Roberta Finetuned di SNLI dengan mitigasi bias gender biner yang bermusuhan.pair-classification-binary-gender-bias-mitigated-roberta-snli -Roberta Finetuned pada SNLI dengan mitigasi bias gender biner.pair-classification-decomposable-attention-elmo -Model perhatian yang dapat diuraikan (Parikh et al, 2017) dikombinasikan dengan embeddings elmo yang dilatih pada SNLI.pair-classification-esim -LSTM yang disempurnakan dilatih pada SNLI.pair-classification-roberta-mnli -Roberta Finetuned di Mnli.pair-classification-roberta-rte -model klasifikasi pasangan berpola setelah model yang diusulkan dalam Devlin et al, disesuaikan dengan finepair-classification-roberta-snli -Roberta Finetuned di SNLI.rc-bidaf-elmo -BIGAF dengan embeddings Elmo, bukan sarung tangan.rc-bidaf - Model BelaF dengan Embeddings Sarung tangan.rc-naqanet - Versi augmented dari Qanet yang menambahkan kemampuan penalaran numerik yang belum sempurna, dilatih pada drop (Dua et al., 2019), seperti yang diterbitkan dalam kertas drop asli.rc-nmn - Jaringan modul saraf yang dilatih pada drop.rc-transformer-qa -Model pemahaman bacaan berpola setelah model yang diusulkan di Devlin et al, dengan perbaikan yang dipinjam dari model skuad dalam proyek Transformersroberta-sst -Klasifikasi biner yang berbasis di Roberta untuk Stanford Sentiment Treebankstructured-prediction-biaffine-parser -Model saraf untuk penguraian ketergantungan menggunakan pengklasifikasi biaffine di atas LSTM dua arah.structured-prediction-constituency-parser -Parser Konstituensi dengan Embeddings Elmo Berbasis Karakterstructured-prediction-srl-bert BERT-Model berbasis Bert (Shi et al, 2019) dengan beberapa modifikasi (tidak ada parameter tambahan selain dari lapisan klasifikasi linier)structured-prediction-srl -Pengisian ulang model prediksi urutan bilstm yang dalam (Stanovsky et al., 2018)tagging-elmo-crf-tagger -ner tagger menggunakan encoder karakter unit berulang (GRU) yang terjaga keamanannya serta encoder frase gru, dengan embeddings sarung tangan.tagging-fine-grained-crf-tagger -Model ini mengidentifikasi rentang luas 16 jenis semantik dalam teks input. Ini adalah penerimaan ulang dari Lample (2016) dan menggunakan bilstm dengan lapisan CRF, embeddings karakter dan embeddings elmo.tagging-fine-grained-transformer-crf-tagger -Model NER berbutir halusve-vilbert -Model berbasis Vilbert untuk upacara visual.vgqa-vilbert -Vilbert (pendek untuk visi-dan-bahasa Bert), adalah model untuk mempelajari representasi bersama-agnostik dari konten gambar dan bahasa alami.vqa-vilbert -Vilbert (pendek untuk visi-dan-bahasa Bert), adalah model untuk mempelajari representasi bersama-agnostik dari konten gambar dan bahasa alami. allennlp-models tersedia di PYPI. Untuk menginstal dengan pip , jalankan saja
pip install allennlp-models Perhatikan bahwa paket allennlp-models terkait dengan paket inti allennlp . Oleh karena itu ketika Anda menginstal paket model, Anda akan mendapatkan versi allennlp yang sesuai (jika Anda belum menginstal allennlp ). Misalnya,
pip install allennlp-models==2.2.0
pip freeze | grep allennlp
# > allennlp==2.2.0
# > allennlp-models==2.2.0 Jika Anda bermaksud menginstal paket model dari sumber, maka Anda mungkin juga ingin menginstal allennlp dari Sumber. Setelah Anda menginstal allennlp , jalankan yang berikut dalam lingkungan Python yang sama:
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 Variabel lingkungan ALLENNLP_VERSION_OVERRIDE memastikan bahwa ketergantungan allennlp tidak diupayakan sehingga instalasi lokal allennlp Anda akan cukup. Namun, jika Anda belum menginstal allennlp dan tidak ingin mengelola instalasi lokal, cukup hilangkan variabel lingkungan ini dan allennlp akan diinstal dari cabang utama di GitHub.
Baik allennlp dan allennlp-models dikembangkan dan diuji berdampingan, sehingga mereka harus tetap up-to-date satu sama lain. Jika Anda melihat alur kerja aksi GitHub untuk allennlp-models , itu selalu diuji terhadap cabang utama allennlp . Demikian pula, allennlp selalu diuji terhadap cabang utama allennlp-models .
Docker menyediakan mesin virtual dengan segala sesuatu yang diatur untuk menjalankan Allennlp- apakah Anda akan memanfaatkan GPU atau hanya dijalankan pada CPU. Docker memberikan lebih banyak isolasi dan konsistensi, dan juga membuatnya mudah untuk mendistribusikan lingkungan Anda ke kluster komputasi.
Setelah Anda menginstal Docker, Anda dapat menggunakan gambar prebuilt dari rilis atau membangun gambar secara lokal dengan versi allennlp dan allennlp-models apa pun.
Jika Anda memiliki GPU, Anda juga perlu menginstal runtime NVIDIA-Docker.
Untuk membangun gambar secara lokal dari rilis tertentu, jalankan
docker build
--build-arg RELEASE=1.2.2
--build-arg CUDA=10.2
-t allennlp/models - < Dockerfile.release Cukup ganti RELEASE dan CUDA build args dengan apa yang Anda butuhkan. Anda dapat memeriksa tag yang tersedia di Docker Hub untuk melihat versi CUDA mana yang tersedia untuk RELEASE yang diberikan.
Sebagai alternatif, Anda dapat membangun dari komitmen spesifik allennlp dan allennlp-models dengan
docker build
--build-arg ALLENNLP_COMMIT=d823a2591e94912a6315e429d0fe0ee2efb4b3ee
--build-arg ALLENNLP_MODELS_COMMIT=01bc777e0d89387f03037d398cd967390716daf1
--build-arg CUDA=10.2
-t allennlp/models - < Dockerfile.commit Cukup ubah ALLENNLP_COMMIT / ALLENNLP_MODELS_COMMIT dan CUDA build args ke versi commit shas dan cuda yang diinginkan, masing -masing.
Setelah Anda membangun gambar Anda, Anda dapat menjalankannya seperti ini:
mkdir -p $HOME /.allennlp/
docker run --rm --gpus all -v $HOME /.allennlp:/root/.allennlp allennlp/modelsCatatan:
--gpus allhanya valid jika Anda telah menginstal runtime nvidia-docker.