LLMによるテキスト構造化を容易に

LangExtract: LLMを活用したテキスト構造化の効率化

LangExtractは、最先端のオープンソースPythonライブラリです。ユーザーが非構造化テキストから構造化情報を、これまでにない精度と容易さで抽出できるようにします。大規模言語モデル(LLM)の力を活用したこのツールは、臨床記録、レポート、文学作品など、多様なテキスト形式を処理し、主要な詳細を、一貫性があり利用可能なスキーマに整理するために設計されています。

LangExtractを選ぶ理由

LangExtractは、そのユニークな機能セットによって際立っています。

  • 正確なソースグルーディング: 抽出された情報はすべて、元のテキスト内の正確な位置に細心の注意を払ってマッピングされます。これにより、ソースドキュメント内での検証と視覚的なハイライトが容易になり、トレーサビリティが確保されます。
  • 信頼性の高い構造化出力: Google Geminiのようなサポートされているモデルで、少数ショットの例と制御された生成を利用することにより、LangExtractは一貫した出力スキーマを強制し、堅牢で予測可能な構造化結果につながります。
  • 長文ドキュメントに最適化: このライブラリは、テキストチャンキング、並列処理、および複数の抽出パスを含む効率的な戦略により、大規模テキストからの情報抽出という課題に取り組み、リコールを大幅に向上させます。
  • インタラクティブな視覚化: LangExtractは、自己完結型のインタラクティブなHTMLファイルを生成し、元のテキストコンテキスト内での数千もの抽出されたエンティティの視覚化とレビューを簡素化します。
  • 柔軟なLLMサポート: GeminiのようなクラウドベースLLMまたはOllama経由のローカルオープンソースモデルのいずれを好む場合でも、LangExtractは幅広い互換性を提供し、他のサードパーティAPIに拡張できます。
  • あらゆるドメインに適応: モデルのファインチューニングの必要性をなくし、わずか数個の例で任意のフィールドの抽出タスクを定義できます。

LangExtractの始め方

インストールはpipで簡単に行えます。

pip install langextract

クラウドベースのモデルの場合、通常はAPIキーの設定が必要です。LangExtractは、環境変数または.envファイル経由でのAPIキーの設定をサポートしており、安全な管理が可能です。オプションには、AI StudioまたはVertex AI経由のGeminiモデル、およびOpenAIモデルが含まれます。

基本的な使用方法は、プロンプトで抽出タスクを定義し、例を提供することを含みます。

import langextract as lx
import textwrap

# 抽出タスクを定義
prompt = textwrap.dedent("""
登場順にキャラクター、感情、関係を抽出してください。
抽出には正確なテキストを使用してください。言い換えたり、エンティティを重複させたりしないでください。
コンテキストを追加するために、各エンティティに意味のある属性を提供してください。"""
)

# ガイダンスとなる例を提供
examples = [
    lx.data.ExampleData(
        text="ROMEO. But soft! What light through yonder window breaks? It is the east, and Juliet is the sun.",
        extractions=[
            lx.data.Extraction(extraction_class="character", extraction_text="ROMEO", attributes={"emotional_state": "wonder"}),
            lx.data.Extraction(extraction_class="emotion", extraction_text="But soft!", attributes={"feeling": "gentle awe"}),
            lx.data.Extraction(extraction_class="relationship", extraction_text="Juliet is the sun", attributes={"type": "metaphor"})
        ]
    )
]

# 入力テキスト
input_text = "Lady Juliet gazed longingly at the stars, her heart aching for Romeo"

# 抽出を実行
result = lx.extract(
    text_or_documents=input_text,
    prompt_description=prompt,
    examples=examples,
    model_id="gemini-2.5-flash",
)

# 結果を保存して視覚化
lx.io.save_annotated_documents([result], output_name="extraction_results.jsonl")
html_content = lx.visualize("extraction_results.jsonl")
with open("visualization.html", "w") as f: f.write(html_content)

このプロセスにより、インタラクティブなHTMLファイルが生成され、抽出されたエンティティのレビューと分析が容易になります。

高度な機能

LangExtractは、長文ドキュメントで優れたパフォーマンスを発揮し、URL(例:Project Gutenberg)からの直接処理をサポートし、パフォーマンスとリコールの最適化のためのextraction_passesmax_workersなどのパラメータを提供します。また、このライブラリは、医薬品抽出や、Hugging Face Spacesで利用可能な放射線レポートの構造化のためのデモであるRadExtractなどの専門的なアプリケーションも紹介しています。

GitHubリポジトリを通じてプロジェクトに貢献し、高度な使用方法と自然言語処理およびデータ構造化タスクにおける強力な機能に関する洞察のための詳細な例を探索してください。

この記事を共有