该存储库包含将AllennLP应用于各种NLP任务的组件,例如DatasetReader , Model和Predictor类类。它还提供了一种简单的方法,可以下载和使用经过这些组件培训的预训练模型。
这是AllennLP模型库支持的任务以及按类别组织的相应组件的概述。有关更全面的概述,请参见“ Allennlp模型文档”或“论文”页面。
分类
分类任务涉及从预定义集合中预测一个或多个标签以分配给每个输入。示例包括情感分析,其中标签可能为{"positive", "negative", "neutral"} ,以及二进制问题回答,标签在哪里{True, False} 。
?提供的组件:各种数据集的数据集读取器,包括Boolq和SST,以及双次分类网络模型。
核心分辨率
核心分辨率任务需要在文本中查找参考共同实体的所有表达式。
有关更多详细信息,请参见NLP.Stanford.edu/projects/coref。
?提供的组件:一般的CoreF模型和几个数据集读取器。
一代
这是诸如摘要之类的任务的广泛类别,涉及生成未受到的且通常可变的长度文本。
?提供的组件:几种SEQ2SEQ模型,例如BART,COURPERNET和一般组成的SEQ2SEQ,以及相应的数据集读取器。
语言建模
语言建模任务涉及学习代币序列的概率分布。
?提供的组件:几种语言模型实现,例如蒙版的LM和下一个令牌LM。
多项选择
多项选择任务需要在替代方案之间选择正确的选择,在替代方案中,每个输入的选择可能都不同。这与分类不同,其中选择集的组合是预定义的,并固定在所有输入中。
?提供的组件:基于变压器的多项选择模型和少数用于特定数据集的数据集读取器。
一对分类
对分类是另一个包含文本含义等任务的广泛类别,即确定第一句话中的事实是否意味着第二句话中的事实。
?提供的组件:几个数据集的数据集读取器,包括SNLI和Quora释义。
阅读理解
阅读理解任务涉及回答有关文本段落的问题,以表明系统理解段落。
?提供的组件:诸如BIDAF和基于变压器的QA模型之类的模型,以及诸如Drop,Quac和Squad之类的数据集的读者。
结构化预测
结构化预测包括诸如语义角色标签(SRL)之类的任务,该任务用于确定句子的潜在参数结构,并提供可以回答有关句子含义的基本问题的表示,包括谁对谁做了什么,
?提供的组件: Penn Tree Bank,Ontonotes等的数据集读取器,以及几种模型,包括SRL和一个非常通用的图形解析器。
序列标记
序列标记任务包括命名实体识别(NER)和细粒度NER。
?提供的组件:用于数据集的条件随机字段模型和数据集读取器,例如Conll-2003,Conll-2003,CCGBANK和ONTONOTES。
文本 +视觉
这是任何文本 +视觉多模式任务(例如视觉质疑)(VQA)的所有类别,这是响应有关图像内容的自然语言问题生成答案的任务。
?提供的组件:几种模型,例如VQA的Vilbert模型,以及一个用于视觉上的模型,以及相应的数据集读取器。
AllennLP模型中的每个预估计的模型都有allennlp_models/modelcards/文件夹中的相应ModelCard 。这些模型中的许多也托管在Allennlp演示和Allennlp Project Gallery上。
要编程列出可用模型,您可以从Python会话中运行以下内容:
> >> from allennlp_models import pretrained
> >> print ( pretrained . get_pretrained_models ())输出是词典,将模型ID映射到其ModelCard :
{'structured-prediction-srl-bert': <allennlp.common.model_card.ModelCard object at 0x14a705a30>, ...}
您可以使用pretrained.load_predictor()助手为这些模型中的任何一个加载Predictor 。例如:
> >> pretrained . load_predictor ( "mc-roberta-swag" )这是当前可用的预训练模型的列表。
coref-spanbert具有粗到细推理的高阶Coref(带有Spanbert嵌入)。evaluate_rc-lerc一个BERT模型,该模型得分为0到1。generation-bart - 带有语言模型的巴特。glove-sst带手套嵌入的LSTM二进制分类器。lm-masked-language-model - 基于BERT的蒙版语言模型lm-next-token-lm-gpt2 -OpenAI的GPT-2语言模型,生成下一个令牌。mc-roberta-commonsenseqa基于Roberta的CONSENSENSESQA多项选择模型。mc-roberta-piqa基于Roberta的PIQA多项选择模型。mc-roberta-swag基于罗伯塔的赃物多项选择模型。nlvr2-vilbert VILBERT-基于Vilbert的视觉模型。nlvr2-vilbert VILBERT-基于Vilbert的视觉模型。pair-classification-adversarial-binary-gender-bias-mitigated-roberta-snli - 罗伯塔(Roberta-roberta)在snli上进行了对抗性二进制性别偏见的减轻。pair-classification-binary-gender-bias-mitigated-roberta-snli snli)在SNLI上进行了二元性别偏见。pair-classification-decomposable-attention-elmo可分解的注意模型(Parikh等,2017)与在SNLI上训练的Elmo嵌入式相结合。pair-classification-esim在SNLI上训练的LSTM。pair-classification-roberta-mnli - 罗伯塔在Mnli上进行了冠军。pair-classification-roberta-rte以Devlin等人的拟议模型形式模型的成对分类模型,在超级lue rte语料库上进行了微调pair-classification-roberta-snli -Roberta在SNLI上进行了冠军。rc-bidaf-elmo带Elmo嵌入而不是手套的BIDAF模型。rc-bidaf带手套嵌入的BIDAF模型。rc-naqanet QANET的增强版本,添加了基本的数值推理能力,经过滴滴的培训(Dua等,2019),如原始Drop Paper上发表。rc-nmn经过滴滴训练的神经模块网络。rc-transformer-qa一种按照Devlin等人的拟议模型模式模式的阅读理解模型,从变形金刚项目中的小队模型借用了改进roberta-sst斯坦福情感树库的总部位于罗伯塔的二进制分类器structured-prediction-biaffine-parser - 一种用于依赖性解析的神经模型,使用双向LSTM的Biaffine分类器进行解析。structured-prediction-constituency-parser基于角色的Elmo嵌入structured-prediction-srl-bert基于BERT的模型(Shi等,2019),具有一些修改(除线性分类层外没有其他参数)structured-prediction-srl深度比尔斯特序列预测模型的重新成像(Stanovsky等,2018)tagging-elmo-crf-tagger使用门控复发单元(GRU)字符编码器以及带有手套嵌入的gru短语编码器。tagging-fine-grained-crf-tagger该模型在输入文本中标识了16种语义类型的广泛范围。这是Lample(2016)的重新成真,并使用带有CRF层,字符嵌入和Elmo嵌入的Bilstm。tagging-fine-grained-transformer-crf-tagger细粒度的NER模型ve-vilbert基于维尔伯特的视觉范围模型。vgqa-vilbert -VILBERT(视觉和语言BERT的简称)是学习图像内容和自然语言的任务无知的联合表示的模型。vqa-vilbert -Vilbert(视觉和语言BERT的缩写)是学习图像内容和自然语言的任务无关联合表示的模型。 PYPI上可用allennlp-models 。要与pip安装,只需运行
pip install allennlp-models请注意, allennlp-models软件包与allennlp Core软件包有关。因此,当您安装模型包时,您将获得allennlp的相应版本(如果尚未安装allennlp )。例如,
pip install allennlp-models==2.2.0
pip freeze | grep allennlp
# > allennlp==2.2.0
# > allennlp-models==2.2.0如果您打算从源安装模型包,则可能还需要从源安装allennlp 。安装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 ,并且不想管理本地安装,则只需省略此环境变量,并且将从Github的主分支上安装allennlp 。
allennlp和allennlp-models均已开发和并排测试,因此应将它们保持最新。如果您查看allennlp-models的GitHub操作工作流程,则始终对allennlp的主要分支进行测试。同样, allennlp始终针对allennlp-models的主要分支进行测试。
Docker提供了一台虚拟机,其中设置了所有用于运行AllennLP的所有设置 - 无论您将利用GPU还是在CPU上运行。 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 Arg则用您需要的内容。您可以检查Docker Hub上的可用标签,以查看可用于给定RELEASE的CUDA版本。
另外,您可以与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 build arg更改为所需的提交shas和cuda版本即可。
构建图像后,您可以这样运行:
mkdir -p $HOME /.allennlp/
docker run --rm --gpus all -v $HOME /.allennlp:/root/.allennlp allennlp/models注意:
--gpus all仅在安装了NVIDIA-DOCKER运行时才有效。