fastino-ai/GLiNER2

Unified Schema-Based Information Extraction

GLiNER2 – 統一されたスキーマベースの情報抽出と分類

何ができるか(平易な説明)

GLiNER2は、ローカルで動作するPythonベースのライブラリであり、生のテキストから構造化された情報を抽出できます。従来の固有表現抽出(人物、企業、日付)から、本格的なレコード抽出、関係検出、テキスト分類まで対応可能です。これらのタスクはすべて定義した単一の schema を共有し、同じモデルで一度の推論パスで処理できます。

なぜ重要なのか

  • 1つのモデルで多くの仕事 – NER、分類、関係抽出のモデルを個別に学習させる必要はありません。スキーマを一度定義すれば、ライブラリが要求されたすべてのフィールドを予測します。
  • 2つの推論スタイル –
    • Span (GLiNER2) – 固定幅のグリッドで、レガシーなチェックポイントに有用です。
    • Boundary (GLiNER2.5) – スパースな開始/終了ペアのアーキテクチャで、任意の長さのspanを表現でき、長いエンティティに対してより良いカバレッジを提供します。
  • CPUファースト – 通常のCPUで高速に動作するように設計されており、GPUは追加の速度が必要な場合のオプションです。
  • プライバシーファースト – すべての処理はローカルで行われ、データがマシンから外部へ送信されることはありません。

使用方法(クイックスタート)

# コアライブラリ – 重い依存関係なし
pip install gliner2

# ローカル推論を追加 (PyTorch + オプションの flash-attention)
pip install "gliner2[local]"
from gliner2 import AutoExtractor

# 既製の英語モデルをロード (boundary アーキテクチャ)
model = AutoExtractor.from_pretrained("fastino/gliner2.5-base-v1")

text = "Apple CEO Tim Cook announced iPhone 15 in Cupertino yesterday."
result = model.extract_entities(text, ["company", "person", "product", "location"])
print(result)
# → {'entities': {'company': ['Apple'], 'person': ['Tim Cook'], ...}}

同じ AutoExtractor で、span専用のチェックポイント、セキュリティ/PIIモデル、分類特化型チェックポイントもロード可能です。

主な機能(READMEより)

機能 提供される価値
統一スキーマAPI エンティティ、分類、レコード、関係、span属性を単一のJSONライクなスキーマで定義。
制約付きデコード Classifier はタスク間のラベルルールを強制し、JointIE は型付きのエンティティ・関係グラフを構築。
長文ドキュメント対応 チャンク・オーバーラップAPI (extract_entities_long) により、モデルのコンテキストウィンドウを超えるテキストを処理しつつ、グローバルな文字オフセットを保持。
カスタム単語分割 空白区切りと文字単位のトークン化を切り替え可能(中国語やその他の非空白言語に有用)。
量子化とコンパイル オプションのfp16量子化と torch.compile による高速なGPU推論。
セキュリティとPIIモデル 事前微調整済みチェックポイント (gliguard-LLMGuardrails, gliner2-privacy-filter-PII) による個人データの編集やガードレールの適用。
LoRAアダプター [train] エクストラを通じたパラメータ効率の良い微調整。

利用可能なモデル(概要)

モデル パラメータ アーキテクチャ 言語 一般的な用途
gliner2-base-v1 205 M Span 英語 一般的なIE (レガシー)
gliner2.5-base-v1 194 M Boundary 英語 デフォルトのマルチタスクIE
gliner2.5-multi-v1 287 M Boundary 多言語 多言語IE
GLiNER2.5-Decide 340 M Span 英語 テキスト分類専用
gliguard-LLMGuardrails-300M ~300 M Span – セキュリティ / 有害性フィルタリング
gliner2-privacy-filter-PII-multi 205 M Span 多言語 PII検出

GLiNER2を選ぶべき理由

  • ローカル推論が必要(クラウドAPIなし、GDPR準拠)。
  • 下流タスクでエンティティ抽出、分類、関係データが混在している(例:パンフレットから製品カタログを抽出しつつ感情をタグ付けする)。
  • CPUのみのサーバーやエッジデバイスで実行し、かつ十分な速度を維持したい。
  • NER、分類器、関係抽出のパイプラインを個別に構築するのではなく、単一のスキーマ駆動型インターフェースを求めている。

制限事項(記載内容)

  • Boundaryアーキテクチャ (GLiNER2.5) は [local] エクストラ (PyTorch) を必要とします。コアの gliner2 パッケージ単体では、スキーマユーティリティとクラウドAPIクライアントのみを提供します。
  • 推論時に単語分割器を切り替えると、モデルが同じ分割器で学習されていない限り、精度が低下する可能性があります。
  • 英語IEで最高の精度を得るには、READMEでは gliner2.5-base-v1 チェックポイントを推奨しています。小さいモデルは速度と引き換えに性能が低下します。

上記の詳細はすべてプロジェクトのREADMEから直接引用したものであり、外部の仮定は追加されていません。

関連

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