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から直接引用したものであり、外部の仮定は追加されていません。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト