SpaCyは、数年前からエンティティ抽出プロジェクトを立ち上げようとするすべての企業にとってデファクトスタンダードとなっています。何がspaCyをこれほどまでに普及させたのでしょうか?また、2023年にエンティティ抽出プロジェクトを始めようとする人にとって、spaCyの良い代替品はあるのでしょうか?この記事では、これらの点について議論してみましょう。
2015年にspaCyの最初のバージョンがリリースされ、瞬く間にエンタープライズグレードのエンティティ抽出(NERとも呼ばれる)の標準フレームワークとなった。
構造化されていないテキスト(例えばウェブからのもの)があり、そこから日付、名前、場所などの構造化されたデータを抽出したい場合、spaCyは非常に良いソリューションです。
SpaCyが面白いのは、約20の言語に対応した学習済みモデルがいくつか用意されていることです。 (詳しくはこちらをご覧ください)。 つまり、エンティティ抽出のためのモデルを必ずしも独自に学習する必要はないのです。また、独自のモデルを学習する場合、ゼロから始めるのではなく、事前に学習したモデルから始めることができるので、時間を大幅に短縮できる可能性があるということです。
SpaCy は、非常に高速で信頼性が高く、包括的なドキュメントが付属しているため、「プロダクショングレード」のフレームワークと見なされています。
しかし、spaCyの学習済みモデルがサポートするデフォルトのエンティティでは不十分な場合、独自のモデルを学習させるために「データアノテーション」(「データラベリング」とも呼ばれる)の作業が必要になります。この作業は非常に時間がかかり、多くの企業内エンティティ抽出プロジェクトがこの課題により失敗しています。
例えば、あるテキスト(履歴書や会社のウェブページなど)から職種名を抽出したいとします。spaCyの事前学習済みモデルはデフォルトでそのようなエンティティをサポートしていないので、spaCyにどのようにジョブタイトルを認識するかを教える必要があります。そのためには、数千の役職名抽出例を含むトレーニングデータセットを作成する必要があります(もしかしたらもっと多いかもしれません!)。Prodigy(spaCyチーム製)のような有料のアノテーションソフトを使うこともできますが、それでも多くの人間の作業が必要です。実際、企業がデータアノテーションのプロジェクトを実施するために、何人かの契約社員を数ヶ月間雇うことはよくあることです。このような仕事は繰り返しが多く退屈なので、出来上がったデータセットには多くの間違いが含まれていることが多いのです...。
2023年、どの代替策を試せるか見てみよう
Stanford CoreNLPの最初のバージョンは2013年にリリースされました。これはJavaのフレームワークで(一方、spaCyはPythonのもの)、非常に良い結果でエンティティ抽出を行うことができます。
Stanford CoreNLPもプリトレーニングモデルを提案するが、spaCyより少ない。 (詳しくはこちらをご覧ください)。
このフレームワークの精度はspaCyと似ていますが、分析するデータに依存します。例えば、Stanford CoreNLPは法律関係のデータでより良い結果を出しています。また、エンティティによっては、spaCyとは若干異なるアドレスが設定されている点にも注意が必要です(例えばGPEエンティティの場合など)。
パフォーマンスに関しては、Stanfordは明らかにspaCyより遅いようで、非常に高いスループットに到達しようとすると問題になるかもしれません。
Flairは、深層学習フレームワーク「PyTorch」をベースにした、より新しいPythonフレームワーク(2018年リリース)です。
spaCyと比較して、多くの言語で高い精度に達するため、多くの人気を集めています。事前に学習されたモデルがいくつか提案されている (詳しくはこちらをご覧ください)。
しかし、この精度の向上は、速度と引き換えに行われます。スループットはspaCyと比較してかなり低くなります。
数年前、新しい種類のAIモデルが登場した。生成モデルである。このモデルは当初、テキスト生成のために作られましたが、すぐに、このモデルが固有表現抽出を含むあらゆる自然言語処理のユースケースに非常に適していることに気付きました。
現在、最も人気のある生成モデルは、GPT-3、GPT-J、GPT-NeoX、T5、Bloomです。これらの深層学習モデルはすべて、2017年にGoogleが発明した「Transformerアーキテクチャ」を採用しています。
この新世代のAIモデルは、動作が非常に重く、高価です。通常、1つまたは複数のGPUをベースにしたハイエンドなハードウェアを必要とします。また、spaCyのようなフレームワークよりも遅いです。しかし、これらのモデルのおかげで、専用のモデルを学習させることなく、あらゆる種類の実体を抽出することが可能になりました
数撃ちゃ当たる学習により、専用のモデルを作成することなく、任意のエンティティを抽出することが可能である。この手法は、実行時に数個の例を作るだけで、やりたいことを素早くモデルに示すことができる。 数撃ちゃ当たるの学習についてはこちらをご覧ください。
職種の抽出の例に戻ると、GPT-Jのようなモデルで職名を抽出する場合、データにアノテーションを付ける必要はありません。そして、数週間から数ヶ月の人手による作業を削減することができます。また、精度はspaCyを使ったエンティティ抽出よりもはるかに高くなるでしょう。
SpaCyは自然言語処理のフレームワークで、現在多くの企業でエンティティ抽出タスクのために実運用されている優れたフレームワークです。
しかし、spaCyやStanford CoreNLPやFlairのような代替モデルは精度に限界があり、新しいエンティティを抽出するために面倒なアノテーション作業が必要です。2023年には、GPT-J、GPT-NeoX、GPT-3などのテキスト生成に基づく代替モデルが、アノテーションなしでエンティティ抽出に使用できるようになります。これらの新しいモデルは、より多くの企業が固有表現抽出プロジェクトを成功させるために、本当に役に立つことでしょう。
GPT-JとGPT-NeoXを使いたい方は、NLPクラウドAPIでお試しください。 (こちらでお試しください)!
Juliette
NLPクラウド社 マーケティングマネージャー