このリポジトリには、ALLENNLPを多種多様なNLPタスクに適用するためのコンポーネント( DatasetReader 、 Model 、およびPredictorクラスなど)が含まれています。また、これらのコンポーネントでトレーニングされた事前に訓練されたモデルをダウンロードして使用する簡単な方法を提供します。
これは、ALLENNLPモデルライブラリによってサポートされているタスクの概要と、カテゴリごとに編成された対応するコンポーネントです。より包括的な概要については、AllENNLPモデルのドキュメントまたはPaperSwithCodeページを参照してください。
分類
分類タスクには、事前定義されたセットから1つ以上のラベルを予測して、各入力に割り当てることが含まれます。例には、ラベル{"positive", "negative", "neutral"}である可能性のあるセンチメント分析、およびラベルが{True, False}であるバイナリ質問の回答が含まれます。
?提供されるコンポーネント: BoolqやSSTを含むさまざまなデータセットのデータセットリーダー、および隔離分類ネットワークモデル。
コアレファレンス解像度
Coreference Resolutionタスクでは、一般的なエンティティを参照するテキスト内のすべての式を見つける必要があります。
詳細については、nlp.stanford.edu/projects/corefを参照してください。
?提供されるコンポーネント:一般的なCoreFモデルといくつかのデータセットリーダー。
世代
これは、非ストラクチャー、しばしば可変長さのテキストを生成することを含む要約などのタスクの幅広いカテゴリです。
?提供されたコンポーネント: BART、Copynet、および一般的な構成Seq2SeqなどのいくつかのSeq2Seqモデルと、対応するデータセットリーダー。
言語モデリング
言語モデリングタスクには、トークンのシーケンス上の確率分布を学習することが含まれます。
?提供されるコンポーネント:マスクされたLMや次のトークンLMなど、いくつかの言語モデルの実装。
複数選択
複数選択タスクでは、選択肢のセットが入力ごとに異なる場合がある場合、代替案から正しい選択を選択する必要があります。これは、選択のセットが事前に定義され、すべての入力で固定されている分類とは異なります。
?提供されたコンポーネント:トランスベースの複数選択モデルと、特定のデータセット用のデータセットリーダーのほんの一握り。
ペア分類
ペアの分類は、テキストの絡み合いなどのタスクを含むもう1つの広範なカテゴリです。これは、一対の文で、最初の文の事実が2番目の事実を意味するかどうかを判断することです。
?提供されるコンポーネント: SNLIやQuoraの言い換えなど、いくつかのデータセットのデータセットリーダー。
読解
読解タスクには、システムが通過を理解していることを示すために、テキストの通過に関する質問に答えることが含まれます。
?提供されるコンポーネント: BidafやトランスベースのQAモデルなどのモデル、およびDrop、Quac、Squadなどのデータセットのリーダー。
構造化された予測
構造化された予測には、セマンティックロールラベル付け(SRL)などのタスクが含まれます。これは、文の潜在的な述語引数構造を決定し、誰が何をしたかなどを含む文の意味に関する基本的な質問に答えることができる表現を提供するためです。
?提供されるコンポーネント: Penn Tree Bank、Ontonotesなどのデータセットリーダー、およびSRL用の1つと非常に一般的なグラフパーサーを含むいくつかのモデル。
シーケンスタグ付け
シーケンスタグ付けタスクには、名前付きエンティティ認識(NER)と細粒のNERが含まれます。
?提供されるコンポーネント: CONLL-2000、CONLL-2003、CCGBANK、ONTONOTESなどのデータセットの条件付きランダムフィールドモデルとデータセットリーダー。
テキスト +ビジョン
これは、視覚的な質問応答(VQA)などのテキスト +ビジョンマルチモーダルタスクのキャッチオールカテゴリであり、画像の内容に関する自然言語の質問に応じて答えを生成するタスクです。
?提供されるコンポーネント: VQAのVilbertモデルや視覚的誘惑用のモデル、対応するデータセットリーダーなどのいくつかのモデル。
ALLENNLPモデルのすべての前提型モデルにはallennlp_models/modelcards/ folderに対応するModelCardがあります。これらのモデルの多くは、AllennlpデモとAllennlpプロジェクトギャラリーでもホストされています。
利用可能なモデルをプログラム的にリストするには、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>, ...}
これらのモデルのいずれかのPredictorをpretrained.load_predictor()ヘルパー。例えば:
> >> pretrained . load_predictor ( "mc-roberta-swag" )以下は、現在利用可能な事前に訓練されたモデルのリストです。
coref-spanbert粗から洗練された推論を備えた高次のcoref(spanbert埋め込み)。evaluate_rc-lerc候補者の回答を0から1にスコアリングするBERTモデル。generation-bart生成のための言語モデルヘッドを備えたBART。glove-sst -LSTMグローブ埋め込みを備えたLSTMバイナリ分類器。lm-masked-language-modelバートベースのマスク言語モデルlm-next-token-lm-gpt2次のトークンを生成するOpenaiのGPT-2言語モデル。mc-roberta-commonsenseqa Commonsenseqaのロベルタに拠点を置く複数選択モデル。mc-roberta-piqa PiqaのRobertaに拠点を置く複数選択モデル。mc-roberta-swag盗品用のロベルタに拠点を置く複数選択モデル。nlvr2-vilbert視覚的誘惑のためのVilbertベースのモデル。nlvr2-vilbert視覚的誘惑のためのVilbertベースのモデル。pair-classification-adversarial-binary-gender-bias-mitigated-roberta-snli -robertaは、敵対的なバイナリ性別バイアス緩和でSNLIでFinetunedを獲得しました。pair-classification-binary-gender-bias-mitigated-roberta-snli SNLIでFintunedを獲得しました。pair-classification-decomposable-attention-elmo分解可能な注意モデル(Parikh et al、2017)とSNLIで訓練されたELMO埋め込み。pair-classification-esim SNLIでトレーニングされたLSTMの強化。pair-classification-roberta-mnli -MnliでRoberta Finetuned。pair-classification-roberta-rteスーパーグローRTEコーパスで微調整されたDevlinらの提案されたモデルの後にパターン化されたペア分類モデルpair-classification-roberta-snli -Roberta Finetuned on Snli。rc-bidaf-elmoグローブの代わりにElmo Embeddingsを備えたBidafモデル。rc-bidafグローブ埋め込みを備えたBidafモデル。rc-naqanetのドロップペーパーで公開されているように、ドロップで訓練された初歩的な数値推論能力を追加するQANETの拡張バージョン。rc-nmnドロップでトレーニングされたニューラルモジュールネットワーク。rc-transformer-qa -DEVLINらの提案されたモデルをパターン化した読解モデル、Transformersプロジェクトの分隊モデルから改善された改善roberta-sst -Stanford Sentiment TreeBankのロベルタに拠点を置くバイナリ分類器structured-prediction-biaffine-parser双方向LSTMの上にBiaffine分類器を使用した依存性解析のためのニューラルモデル。structured-prediction-constituency-parser - キャラクターベースのELMO埋め込みを備えた選挙区パーサーstructured-prediction-srl-bertいくつかの修正を伴うBERTベースのモデル(Shi et al、2019)(線形分類層を除く追加のパラメーターはありません)structured-prediction-srl -deep bilstmシーケンス予測モデルの再実装(Stanovsky et al。、2018)tagging-elmo-crf-tagger -nerタガーゲート再生ユニット(GRU)文字エンコーダーと、グローブ埋め込みを備えたGRUフレーズエンコーダーを使用しています。tagging-fine-grained-crf-taggerこのモデルは、入力テキストに16のセマンティックタイプの広範な範囲を識別します。これは、Lample(2016)の再実装であり、CRF層、キャラクターの埋め込み、ELMO埋め込みを備えたBilstmを使用しています。tagging-fine-grained-transformer-crf-tagger細粒NERモデルve-vilbert -Vilbertベースの視覚化のためのモデル。vgqa-vilbert -Vilbert(Vision-and-Language Bertの略)は、画像内容と自然言語のタスクに依存しない共同表現を学習するためのモデルです。vqa-vilbert -Vilbert(Vision-and-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をインストールすることもできます。 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は、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 Argsが必要なものに交換してください。 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 argsをそれぞれ希望のコミットシャーとCUDAバージョンに変更してください。
画像を作成したら、次のように実行できます。
mkdir -p $HOME /.allennlp/
docker run --rm --gpus all -v $HOME /.allennlp:/root/.allennlp allennlp/models注:
--gpus all、nvidia-dockerランタイムをインストールした場合にのみ有効です。