Este repositório contém os componentes - como classes DatasetReader , Model e Predictor - para aplicar a AllennLP a uma ampla variedade de tarefas de PNL. Ele também fornece uma maneira fácil de baixar e usar modelos pré-treinados que foram treinados com esses componentes.
Esta é uma visão geral das tarefas suportadas pela biblioteca de modelos AllennLP, juntamente com os componentes correspondentes fornecidos, organizados por categoria. Para uma visão geral mais abrangente, consulte a documentação dos modelos AllennLP ou a página PapersWithCode.
Classificação
As tarefas de classificação envolvem a previsão de um ou mais rótulos de um conjunto predefinido para atribuir a cada entrada. Exemplos incluem análise de sentimentos, onde os rótulos podem ser {"positive", "negative", "neutral"} e resposta binária de perguntas, onde os rótulos são {True, False} .
? Componentes fornecidos: Leitores de dados para vários conjuntos de dados, incluindo BOOLQ e SST, bem como um modelo de rede de classificação biatentativa.
Resolução de Coreferência
As tarefas de resolução da Coreference exigem encontrar todas as expressões em um texto que se refere a entidades comuns.
Consulte nlp.stanford.edu/projects/coref para obter mais detalhes.
? Componentes fornecidos: um modelo Geral Coref e vários leitores de conjunto de dados.
Geração
Esta é uma categoria ampla para tarefas como resumo que envolvem geração de texto não estruturado e frequentemente de comprimento variável.
? Componentes fornecidos: vários modelos SEQ2SEQ como BART, COPYNET e um Geral composto seq2seq, juntamente com os leitores de dados correspondentes.
Modelagem de idiomas
As tarefas de modelagem de idiomas envolvem o aprendizado de uma distribuição de probabilidade sobre sequências de tokens.
? Componentes fornecidos: várias implementações de modelos de idiomas, como um LM mascarado e um próximo token LM.
Múltipla escolha
As tarefas de múltipla escolha requerem a seleção de uma escolha correta entre alternativas, onde o conjunto de opções pode ser diferente para cada entrada. Isso difere da classificação em que o conjunto de opções é predefinido e corrigido em todas as entradas.
? Componentes fornecidos: um modelo de múltipla escolha baseado em transformador e um punhado de leitores de conjunto de dados para conjuntos de dados específicos.
Classificação de pares
A classificação de pares é outra categoria ampla que contém tarefas como implicações de texto, que é determinar se, para um par de frases, os fatos na primeira frase implicam os fatos no segundo.
? Componentes fornecidos: leitores de dados para vários conjuntos de dados, incluindo SNLI e paráfrase quora.
Compreensão de leitura
As tarefas de compreensão de leitura envolvem responder a perguntas sobre uma passagem de texto para mostrar que o sistema entende a passagem.
? Componentes fornecidos: modelos como BIDAF e um modelo de controle de qualidade baseados em transformadores, bem como leitores para conjuntos de dados como Drop, Quac e Esquadrão.
Previsão estruturada
A previsão estruturada inclui tarefas como a rotulagem de função semântica (SRL), que é para determinar a estrutura de argumentos do predicado latente de uma frase e fornecer representações que podem responder a perguntas básicas sobre o significado da sentença, incluindo quem fez o que com quem, etc.
? Componentes fornecidos: Leitores de dados para Penn Tree Bank, Ontonotes, etc., e vários modelos, incluindo um para SRL e um analisador de gráficos muito geral.
Marcação de sequência
As tarefas de marcação de sequência incluem reconhecimento de entidade nomeado (NER) e NER de grão fino.
? Componentes fornecidos: um modelo de campo aleatório condicional e leitores de conjunto de dados para conjuntos de dados como CONLL-2000, CONLL-2003, ccgbank e ontonotes.
Texto + visão
Esta é uma categoria Catch-All para qualquer Tarefa multimodal de texto + Vision como Responder (VQA), a tarefa de gerar uma resposta em resposta a uma pergunta de linguagem natural sobre o conteúdo de uma imagem.
? Componentes fornecidos: vários modelos, como um modelo Vilbert para VQA e um para interrupção visual, juntamente com os leitores de dados correspondentes.
Todo modelo pré -terenciado nos modelos AllennLP possui um ModelCard correspondente no allennlp_models/modelcards/ pasta. Muitos desses modelos também estão hospedados na Demo da AllennLP e na AllennLP Project Gallery.
Para listar programaticamente os modelos disponíveis, você pode executar o seguinte a partir de uma sessão Python:
> >> from allennlp_models import pretrained
> >> print ( pretrained . get_pretrained_models ()) A saída é um dicionário que mapeia os IDs do modelo para o seu ModelCard :
{'structured-prediction-srl-bert': <allennlp.common.model_card.ModelCard object at 0x14a705a30>, ...}
Você pode carregar um Predictor para qualquer um desses modelos com o auxiliar pretrained.load_predictor() . Por exemplo:
> >> pretrained . load_predictor ( "mc-roberta-swag" )Aqui está uma lista de modelos pré-treinados atualmente disponíveis.
coref-spanbert -COREF de ordem superior com inferência grossa a fita (com incorporações de Spanbert).evaluate_rc-lerc - Um modelo BERT que obtém respostas do candidato de 0 a 1.generation-bart - BART com uma cabeça de modelo de idioma para geração.glove-sst - LSTM com incorporações de luvas.lm-masked-language-model masked-baseado em Bertlm-next-token-lm-gpt2 -Modelo de idioma GPT-2 do OpenAI que gera o próximo token.mc-roberta-commonsenseqa -Modelo de múltipla escolha de Roberta para Commonsenseqa.mc-roberta-piqa -PIQA-Modelo de múltipla escolha baseado em Roberta para Piqa.mc-roberta-swag -SWAG-Modelo de múltipla escolha de Roberta para Swag.nlvr2-vilbert -Modelo baseado em Vilbert para interrupção visual.nlvr2-vilbert -Modelo baseado em Vilbert para interrupção visual.pair-classification-adversarial-binary-gender-bias-mitigated-roberta-snli -Roberta Finetuned no SNLI com mitigação de viés de gênero binária adversária.pair-classification-binary-gender-bias-mitigated-roberta-snli -Roberta Finetuned no SNLI com mitigação de viés de gênero binária.pair-classification-decomposable-attention-elmo -o modelo de atenção decomposta (Parikh et al, 2017) combinado com incorporações Elmo treinadas no SNLI.pair-classification-esim -LSTM aprimorado treinado no SNLI.pair-classification-roberta-mnli -Roberta FinetUned no mnli.pair-classification-roberta-rte -Um modelo de classificação de pares padronizado após o modelo proposto em Devlin et al, ajustado no superclua RTE Corpuspair-classification-roberta-snli -Roberta Finetuned no SNLI.rc-bidaf-elmo -Modelo BIDAF com incorporações ELMO em vez de luva.rc-bidaf - Modelo Bidaf com incorporações de luvas.rc-naqanet - Uma versão aumentada do Qanet que adiciona capacidade de raciocínio numérico rudimentar, treinado em Drop (Dua et al., 2019), conforme publicado no papel Drop original.rc-nmn - Uma rede de módulos neurais treinada no Drop.rc-transformer-qa -Um modelo de compreensão de leitura padronizado após o modelo proposto em Devlin et al, com melhorias emprestadas do modelo de esquadrão no projeto Transformersroberta-sst -Classificador binário de Roberta para Stanford Sentiment Treebankstructured-prediction-biaffine-parser -Um modelo neural para análise de dependência usando classificadores de biaffina no topo de um LSTM bidirecional.structured-prediction-constituency-parser COMPORTÁRIO COM EMBALAÇÕES COM CARACTERIAS ELMO baseadas em caráterstructured-prediction-srl-bert -Um modelo baseado em Bert (Shi et al, 2019) com algumas modificações (sem parâmetros adicionais além de uma camada de classificação linear)structured-prediction-srl -Uma reimplementação de um modelo de previsão de sequência de bilstm profundo (Stanovsky et al., 2018)tagging-elmo-crf-tagger -Tagger ner usando um codificador de caracteres de unidade recorrente (GRU) fechada (GRU), bem como um codificador de frase GRU, com incorporações de luvas.tagging-fine-grained-crf-tagger -Este modelo identifica uma ampla faixa de 16 tipos semânticos no texto de entrada. É uma reimplementação de Lample (2016) e usa um bilstm com uma camada de CRF, incorporações de caracteres e incorporações de Elmo.tagging-fine-grained-transformer-crf-tagger -modelo NER de grão finove-vilbert -Modelo baseado em Vilbert para interrupção visual.vgqa-vilbert -Vilbert (abreviação de Bert de visão e língua), é um modelo para aprender representações conjuntas agnósticas para tarefas do conteúdo da imagem e da linguagem natural.vqa-vilbert -Vilbert (abreviação de Bert de visão e linguagem), é um modelo para aprender representações conjuntas agnósticas para tarefas do conteúdo da imagem e da linguagem natural. allennlp-models está disponível no Pypi. Para instalar com pip , basta executar
pip install allennlp-models Observe que o pacote allennlp-models está vinculado ao pacote allennlp Core. Portanto, quando você instala o pacote de modelos, obterá a versão correspondente do allennlp (se você ainda não instalou allennlp ). Por exemplo,
pip install allennlp-models==2.2.0
pip freeze | grep allennlp
# > allennlp==2.2.0
# > allennlp-models==2.2.0 Se você pretende instalar o pacote de modelos a partir da fonte, provavelmente também deseja instalar allennlp a partir da fonte. Depois de instalar allennlp , execute o seguinte no mesmo ambiente 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 A variável ALLENNLP_VERSION_OVERRIDE de ambiente garante que a dependência allennlp não seja ingênua para que a instalação local do allennlp seja suficiente. Se, no entanto, você ainda não instalou allennlp e não quiser gerenciar uma instalação local, basta omitir essa variável de ambiente e allennlp será instalada na filial principal no GitHub.
Os allennlp-models allennlp e AllennLP são desenvolvidos e testados lado a lado, para que sejam mantidos atualizados entre si. Se você olhar para o fluxo de trabalho do GitHub Actions para allennlp-models , ele sempre é testado contra a filial principal da allennlp . Da mesma forma, allennlp é sempre testado contra o ramo principal dos allennlp-models .
O Docker fornece uma máquina virtual com tudo configurado para executar a Allennlp- se você aproveitará uma GPU ou apenas executará em uma CPU. O Docker fornece mais isolamento e consistência e também facilita a distribuição de seu ambiente para um cluster de computação.
Depois de instalar o Docker, você pode usar uma imagem pré-edificada a partir de uma liberação ou criar uma imagem localmente com qualquer versão dos allennlp-models allennlp e AllennLP.
Se você tiver GPUs disponíveis, também precisará instalar o tempo de execução do NVIDIA-Docker.
Para construir uma imagem localmente a partir de uma versão específica, execute
docker build
--build-arg RELEASE=1.2.2
--build-arg CUDA=10.2
-t allennlp/models - < Dockerfile.release Basta substituir a RELEASE e CUDA Build Args pelo que você precisa. Você pode verificar as tags disponíveis no Docker Hub para ver quais versões CUDA estão disponíveis para uma determinada RELEASE .
Como alternativa, você pode construir contra compromissos específicos de allennlp e allennlp-models com
docker build
--build-arg ALLENNLP_COMMIT=d823a2591e94912a6315e429d0fe0ee2efb4b3ee
--build-arg ALLENNLP_MODELS_COMMIT=01bc777e0d89387f03037d398cd967390716daf1
--build-arg CUDA=10.2
-t allennlp/models - < Dockerfile.commit Basta alterar o ALLENNLP_COMMIT / ALLENNLP_MODELS_COMMIT e CUDA construem args para as versões de commit e cuda desejadas, respectivamente.
Depois de construir sua imagem, você pode executá -la assim:
mkdir -p $HOME /.allennlp/
docker run --rm --gpus all -v $HOME /.allennlp:/root/.allennlp allennlp/modelsNOTA: O
--gpus allé válido apenas se você instalou o tempo de execução do NVIDIA-Docker.