google/langextract
A Python library for extracting structured information from unstructured text using LLMs with precise source grounding and interactive visualization.
LangExtract – LLMによる構造化抽出
機能 – LangExtractは、非構造化テキスト(臨床メモ、文学作品、レポートなど)から構造化情報(エンティティ、属性、関係)を抽出できるPythonライブラリです。テキストを少数ショットのプロンプトとともに大規模言語モデル(LLM)に送信し、返された各データを元のドキュメント内の正確な文字スパンにマッピングします。また、インタラクティブなHTMLビジュアライザーを生成し、各抽出結果をコンテキスト内でハイライト表示できます。
重要性 –
- グラウンデッドな結果: 各抽出結果がソース位置にリンクされ、検証が容易になり、トレーサビリティが必要なダウンストリームパイプライン(例:医療監査)をサポートします。
- 長文ドキュメントに対応: テキストは自動的にチャンク分割され、並列処理され、再現性を向上させるために複数回のパスを実行できます。
- モデル非依存: Google Gemini(クラウド)、OpenAIモデル、Ollama経由のローカルモデルをサポート。プラグインシステムによりカスタムプロバイダーも追加可能です。
- ファインチューニング不要: プロンプトと少数の例を提供するだけで、LLMの世界知識をプロンプトエンジニアリングで活用します。
始め方 –
pip install langextract(またはソース/Docker)でインストール。- 抽出タスクを説明する短いプロンプトを書き、望ましい出力形式を示す1つ以上のExampleDataオブジェクトを提供します。
lx.extract(text_or_documents, prompt_description, examples, model_id=…)を呼び出します。lx.io.save_annotated_documentsで結果をJSONLファイルに保存し、lx.visualizeで視覚化HTMLファイルを生成します。
典型的なワークフロースニペット
import langextract as lx, textwrap
prompt = "登場順にキャラクター、感情、関係を抽出してください。正確なテキストを使用してください。"
examples = [
lx.data.ExampleData(
text="ROMEO. But soft! …",
extractions=[
lx.data.Extraction("character", "ROMEO", {"emotional_state": "wonder"}),
lx.data.Extraction("emotion", "But soft!", {"feeling": "gentle awe"}),
],
)
]
result = lx.extract(
text_or_documents="Lady Juliet gazed longingly at the stars…",
prompt_description=prompt,
examples=examples,
model_id="gemini-3.5-flash",
)
lx.io.save_annotated_documents([result], "extraction_results.jsonl")
html = lx.visualize("extraction_results.jsonl")
open("visualization.html", "w").write(html.data)
サポートされているバックエンド –
- Google Gemini(クラウド、
LANGEXTRACT_API_KEYが必要)。 - OpenAI(
gpt‑4o、gpt‑4o‑miniなど。オプションでlangextract[openai])。 - Ollama(
gemma2:2bなどのローカルモデル向け。APIキー不要)。 - カスタムプロバイダーは、軽量プラグインレジストリを介して別パッケージとして追加できます。
スケーラビリティ機能 –
- 並列チャンク処理(
max_workers)。 - 複数抽出パス(
extraction_passes)。 - Vertex AIバッチAPI統合によるコスト効率の高い大規模ジョブ。
詳細情報 –
- ライブデモ: https://google‑langextract.hf.space/(ブラウザでロミオとジュリエット抽出)。
docs/フォルダ内の完全なドキュメント(スキーマ使用法、バッチAPI、プロバイダープラグインガイドを含む)。- 長文テキスト、薬剤抽出、放射線レポート構造化(RadExtract)のサンプルノートブック。
コミュニティと貢献 – リポジトリにはコミュニティ構築のモデルプロバイダーリストが含まれており、プルリクエストを歓迎します。貢献にはコントリビューターライセンス契約が必要です。
LangExtractは、LLMを利用した情報抽出を目指す本物のオープンソースプロジェクトであり、AI/MLツール分野に完全に適合しています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト