explosion/spacy-transformers

🛸 Use pretrained transformers like BERT, XLNet and GPT-2 in spaCy

解決する課題

spaCyは自然言語処理(NLP)のための人気のあるPythonライブラリですが、それ自体にはBERT、GPT-2、XLNetのようなtransformerモデルは含まれていません。これらの事前学習済みモデルは深い言語理解を獲得しており、多くのタスクで最先端の成果を上げています。spacy-transformersは、Hugging FaceのあらゆるtransformerをspaCyパイプラインに組み込めるようにすることでそのギャップを埋め、すべてをゼロからトレーニングすることなく強力なNLPアプリケーションを構築できるようにします。

仕組み

このパッケージは、Hugging Faceの transformers ライブラリをラップするspaCyコンポーネントとアーキテクチャを提供します。spaCyパイプラインに transformer コンポーネントを追加すると、事前学習済みモデル(例:BERT、RoBERTa、XLNet)が読み込まれ、テキストに対して実行されます。このコンポーネントは、transformerの出力をspaCyのトークン化と自動的に調整し、コンテキスト化された埋め込み(contextual embeddings)を Doc オブジェクトに保存します。その後、これらの埋め込みを、固有表現抽出(NER)やテキスト分類といった他のspaCyコンポーネントの機能として使用できます。トレーニングにはspaCy v3の設定システムを使用するため、マルチタスク学習のセットアップと実行が容易になります。つまり、複数の下流タスクからの勾配を同じtransformerモデルに逆伝播させることが可能です。また、このパッケージはシリアライズも処理するため、他のspaCyパイプラインと同様にモデルを保存およびパッケージ化できます。

対象ユーザー

すでにspaCyを使用しており、別のフレームワークを併用することなく最新のtransformerモデルをパイプラインに組み込みたい開発者やNLP実務者。NER、テキスト分類、またはリッチな特徴量を必要とするカスタムspaCyコンポーネントなど、コンテキスト化された単語表現から恩恵を受けるタスクに特に役立ちます。spaCyのトレーニングワークフローと統合されているため、独自のデータでtransformerを微調整したいチームにも適しています。

ハイライト

  • 幅広い事前学習済みtransformer(BERT、RoBERTa、XLNetなど)をspaCy内で直接使用可能。
  • トレーニングと評価のためのspaCy v3の設定システムとのシームレスな統合。
  • マルチタスク学習:1つのtransformerが複数の下流コンポーネントに特徴量を提供可能。
  • transformerのサブワードとspaCyのトークン間の自動トークン化調整。
  • Doc オブジェクトに保存するtransformer出力をカスタマイズ可能。
  • シリアライズとモデルパッケージングの組み込みサポート。
  • Python 3.6+、PyTorch 1.5+、spaCy v3+が必要。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト