Этот репозиторий содержит компоненты, такие как DatasetReader , Model и Predictor - для применения AllennLP к широкому спектру задач NLP. Он также предоставляет простой способ загрузки и использования предварительно обученных моделей, которые были обучены этими компонентами.
Это обзор задан, поддерживаемых библиотекой моделей AllennLP, а также соответствующие компоненты, организованные категорией. Для более полного обзора см. Документацию AllennLP Models или страницу PapersWithCode.
Классификация
Задачи классификации включают прогнозирование одной или нескольких меток из предопределенного набора для назначения каждого входа. Примеры включают анализ настроений, где этикетки могут быть {"positive", "negative", "neutral"} и бинарным ответом на вопрос, где этикетки {True, False} .
? Предоставлены компоненты: считыватели наборов данных для различных наборов данных, включая Boolq и SST, а также модель биатентной классификации.
Резолюция Coreference
Задачи разрешения Coreference требуют поиска всех выражений в тексте, который ссылается на общие сущности.
См. NLP.stanford.edu/projects/coref для получения более подробной информации.
? Предоставлены компоненты: общая модель Coref и несколько считывателей данных.
Поколение
Это широкая категория для таких задач, как суммирование, которая включает в себя генерирование нетрупринимаемого и часто переменной длины текста.
? Предоставлены компоненты: несколько моделей SEQ2SEQ, таких как BART, Copynet и общий состав SEQ2SEQ, наряду с соответствующими считывателями наборов данных.
Языковое моделирование
Задачи на языковом моделировании включают в себя обучение распределению вероятностей по последовательностям токенов.
? Предоставлены компоненты: несколько реализаций языковых моделей, таких как маскированная LM и Next Token LM.
Многократный выбор
Задачи с множественным выбором требуют выбора правильного выбора среди альтернатив, где набор вариантов может отличаться для каждого ввода. Это отличается от классификации, где набор вариантов предопределен и фиксирован во всех входах.
? Предоставлены компоненты: модель с множественным выбором на основе трансформатора и несколько считывателей наборов данных для конкретных наборов данных.
Пара классификация
Пара классификация - это еще одна широкая категория, которая содержит такие задачи, как текстовое введение, которое состоит в том, чтобы определить, подразумевают ли факты в первом предложении факты во втором.
? Предоставлены компоненты: читатели наборов данных для нескольких наборов данных, включая SNLI и Quora Parphrase.
Понимание прочитанного
Задачи понимания прочитанного включают в себя ответные вопросы о отрывке текста, чтобы показать, что система понимает отрывок.
? Представлены компоненты: такие модели, как BIDAF и модель QA на основе трансформатора, а также читатели для наборов данных, таких как Drop, Quac и Squad.
Структурированный прогноз
Структурированный прогноз включает в себя такие задачи, как семантическая маркировка ролей (SRL), которая предназначена для определения скрытой структуры аргумента предиката и предоставления представлений, которые могут ответить на основные вопросы о значении предложения, включая то, кто сделал то, кому и т. Д.
? Предоставлены компоненты: читатели наборов данных для Penn Tree Bank, Ontonotes и т. Д., А также несколько моделей, включая одну для SRL и очень общий диапазон графиков.
Последовательность тега
Задачи с меткой последовательности включают распознавание именованного объекта (NER) и мелкозернистый NER.
? Предоставлены компоненты: условная модель случайного поля и считыватели наборов данных для таких наборов данных, как Conll-2000, Conll-2003, CCGBANK и Ontonotes.
Текст + видение
Это категория с уловами для любого текста + Vision Multi-Modal Ways, таких как ответ на визуальный вопрос (VQA), задача создания ответа в ответ на вопрос естественного языка о содержании изображения.
? Предоставлены компоненты: несколько моделей, таких как модель Vilbert для VQA, и одна для визуального въезда, а также соответствующие считыватели наборов данных.
Каждая предварительная модель в моделях AllennLP имеет соответствующую ModelCard в папке allennlp_models/modelcards/ папки. Многие из этих моделей также размещены в демонстрации Allennlp и проектной галерее Allennlp.
Чтобы программно перечислить доступные модели, вы можете запустить следующее из сеанса Python:
> >> from allennlp_models import pretrained
> >> print ( pretrained . get_pretrained_models ()) Вывод - это словарь, который отображает идентификаторы модели на свою ModelCard :
{'structured-prediction-srl-bert': <allennlp.common.model_card.ModelCard object at 0x14a705a30>, ...}
Вы можете загрузить Predictor для любой из этих моделей с помощью помощника pretrained.load_predictor() . Например:
> >> pretrained . load_predictor ( "mc-roberta-swag" )Вот список доступных в настоящее время предварительно обученных моделей.
coref-spanbert -Coref более высокого порядка с грубым выводом (с встраиванием Spanbert).evaluate_rc-lerc - модель BERT, которая оценивает ответы кандидата от 0 до 1.generation-bart - Bart с языковой моделью для поколения.glove-sst - LSTM Бинарный классификатор с перчатками.lm-masked-language-model модель на основе маскировки на основе BERTlm-next-token-lm-gpt2 -Языковая модель GPT-2 OpenAI, которая генерирует следующий токен.mc-roberta-commonsenseqa -Роберта на основе с множественным выбором на базе Roberta для CommonsenseQA.mc-roberta-piqa Piqa-Модель с множественным выбором на основе Роберты для PIQA.mc-roberta-swag -модель с множественным выбором на основе Роберты для SWAG.nlvr2-vilbert -модель на основе Вилберта для визуального влечения.nlvr2-vilbert -модель на основе Вилберта для визуального влечения.pair-classification-adversarial-binary-gender-bias-mitigated-roberta-snli -Роберта, созданная на SNLI с смягчением бинарного гендерного смещения состязания.pair-classification-binary-gender-bias-mitigated-roberta-snli -Роберта Финатун на SNLI с бинарным смягчением гендерного смещения.pair-classification-decomposable-attention-elmo -Модель разложения внимания (Parikh et al, 2017) в сочетании с вставками Elmo, обученными SNLI.pair-classification-esim -улучшенный LSTM, обученный SNLI.pair-classification-roberta-mnli -Роберта Исключена на MNLI.pair-classification-roberta-rte -модель пары классификации, созданная после предложенной модели в Devlin et al.pair-classification-roberta-snli -Роберта Финатун на SNLI.rc-bidaf-elmo -модель BIDAF с ELMO Entgeddings вместо перчатки.rc-bidaf - модель BIDAF с перчатками.rc-naqanet - дополненная версия QANET, которая добавляет рудиментарную способность численных рассуждений, обученная Drop (Dua et al., 2019), как опубликовано в оригинальной Drop Paper.rc-nmn - сеть нейронной модуля, обученная на DROP.rc-transformer-qa -модель понимания прочитанного, созданную после предложенной модели в Devlin et al, с улучшениями, заимствованными из модели команды в проекте Transformersroberta-sst -бинарный классификатор Роберты для Стэнфордских настроений Treebankstructured-prediction-biaffine-parser -нейронная модель для анализа зависимостей с использованием биаффиновых классификаторов поверх двунаправленного LSTM.structured-prediction-constituency-parser -Parser Sangerser с на основе символов Elmo Entgddingsstructured-prediction-srl-bert -модель на основе BERT (Shi et al, 2019) с некоторыми модификациями (нет дополнительных параметров, кроме линейного классификационного уровня)structured-prediction-srl -переосмысление модели прогнозирования последовательностей глубокого Bilstm (Stanovsky et al., 2018)tagging-elmo-crf-tagger -ner Tagger с использованием ограниченного рецидивирующего энкодера символа (GRU), а также энкодера фразы GRU, с вставками перчаток.tagging-fine-grained-crf-tagger -эта модель идентифицирует широкий диапазон из 16 семантических типов в входном тексте. Это повторное произведение LAMPLE (2016) и использует Bilstm с CRF -слоем, вставки символов и Elmo Entgddings.tagging-fine-grained-transformer-crf-tagger -мелкозернистая модель NERve-vilbert -модель на основе Вилберта для визуального влечения.vgqa-vilbert -Vilbert (короткий для зрительного и языкового BERT), является моделью для обучения, сопровождающего совместные представления о содержании изображения и естественном языке.vqa-vilbert -Vilbert (Short For Vision и Language BERT), является моделью для обучения, агрессия-агрессивного совместного представления содержания изображения и естественного языка. allennlp-models доступен на PYPI. Чтобы установить с pip , просто запустите
pip install allennlp-models Обратите внимание, что пакет allennlp-models привязан к основному пакету allennlp . Поэтому при установлении пакета моделей вы получите соответствующую версию allennlp (если вы еще не установили allennlp ). Например,
pip install allennlp-models==2.2.0
pip freeze | grep allennlp
# > allennlp==2.2.0
# > allennlp-models==2.2.0 Если вы собираетесь установить пакет моделей из Source, то вы, вероятно, также хотите установить allennlp из Source. После установки allennlp запустите следующее в той же среде 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 Переменная среда ALLENNLP_VERSION_OVERRIDE гарантирует, что зависимость allennlp не будет невозможна, чтобы ваша локальная установка allennlp была достаточной. Однако, если вы еще не установили allennlp и не хотите управлять локальной установкой, просто опустите эту переменную среды, и allennlp будет установлен из основной ветви на Github.
Как allennlp , так и allennlp-models разрабатываются и протестированы бок о бок, поэтому они должны быть в курсе друг друга. Если вы посмотрите на рабочий процесс действий GitHub для allennlp-models , он всегда проверяется на главной ветви allennlp . Точно так же allennlp всегда тестируется на основную ветвь allennlp-models .
Docker предоставляет виртуальную машину со всем, что настроено для запуска Allennlp- независимо от того, будете ли вы использовать GPU или просто запустить процессор. Docker обеспечивает больше изоляции и последовательности, а также позволяет легко распространять вашу среду в вычислительную кластеру.
После того, как вы установили Docker, вы можете использовать предварительно построенное изображение из выпуска или создать изображение локально с любой версией allennlp и allennlp-models .
Если у вас есть GPU, вам также необходимо установить время выполнения Nvidia-Docker.
Чтобы построить изображение локально из определенного выпуска, запустите
docker build
--build-arg RELEASE=1.2.2
--build-arg CUDA=10.2
-t allennlp/models - < Dockerfile.release Просто замените RELEASE и CUDA Build Args на то, что вам нужно. Вы можете проверить доступные теги в Docker Hub, чтобы увидеть, какие версии CUDA доступны для данного RELEASE .
В качестве альтернативы вы можете построить против конкретных коммитов allennlp и allennlp-models с
docker build
--build-arg ALLENNLP_COMMIT=d823a2591e94912a6315e429d0fe0ee2efb4b3ee
--build-arg ALLENNLP_MODELS_COMMIT=01bc777e0d89387f03037d398cd967390716daf1
--build-arg CUDA=10.2
-t allennlp/models - < Dockerfile.commit Просто измените ALLENNLP_COMMIT / ALLENNLP_MODELS_COMMIT и CUDA которые строят аргументы на желаемые версии Commit Shas и Cuda, соответственно.
После того, как вы создали свое изображение, вы можете запустить его так:
mkdir -p $HOME /.allennlp/
docker run --rm --gpus all -v $HOME /.allennlp:/root/.allennlp allennlp/modelsПРИМЕЧАНИЕ.
--gpus allтолько в случае установки времени выполнения Nvidia-Docker.