該存儲庫包含將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)在snli上進行了對抗性二進制性別偏見的減輕。pair-classification-binary-gender-bias-mitigated-roberta-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運行時才有效。