<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>情報抽出 on KnightLiブログ</title>
        <link>https://www.knightli.com/ja/tags/%E6%83%85%E5%A0%B1%E6%8A%BD%E5%87%BA/</link>
        <description>Recent content in 情報抽出 on KnightLiブログ</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>ja</language>
        <lastBuildDate>Fri, 01 May 2026 02:58:21 +0800</lastBuildDate><atom:link href="https://www.knightli.com/ja/tags/%E6%83%85%E5%A0%B1%E6%8A%BD%E5%87%BA/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Google LangExtract：LLM で長文から構造化データを抽出する</title>
        <link>https://www.knightli.com/ja/2026/05/01/google-langextract-llm-structured-data-extraction/</link>
        <pubDate>Fri, 01 May 2026 02:58:21 +0800</pubDate>
        
        <guid>https://www.knightli.com/ja/2026/05/01/google-langextract-llm-structured-data-extraction/</guid>
        <description>&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; は、Google が公開している Python ライブラリで、非構造化テキストから構造化情報を抽出するためのものです。&lt;/p&gt;
&lt;p&gt;使い方は分かりやすく、テキスト、プロンプト、少数の例を与えると、大規模言語モデルが定義したフィールドに従って内容を抽出し、後続処理しやすいデータとして整理します。&lt;/p&gt;
&lt;p&gt;普通に「モデルに要約してもらう」のとは違い、&lt;code&gt;LangExtract&lt;/code&gt; は主に 3 つの点を重視します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;固定した構造で情報を抽出する&lt;/li&gt;
&lt;li&gt;抽出結果と原文位置の対応を保つ&lt;/li&gt;
&lt;li&gt;長文ドキュメントと可視化チェックを支援する&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;レポート、論文、診療記録、契約書、ログ、Web ページなどから、エンティティ、イベント、関係、属性をよく抽出するなら、この種のツールは手書きの正規表現より柔軟で、単なるチャット型の質問より後続のデータ処理につなげやすくなります。&lt;/p&gt;
&lt;h2 id=&#34;何を解決するのか&#34;&gt;何を解決するのか
&lt;/h2&gt;&lt;p&gt;多くのテキスト抽出タスクは簡単そうに見えますが、実際には面倒です。&lt;/p&gt;
&lt;p&gt;たとえば、長文から次のようなものを抽出したい場合があります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;人名、組織名、場所&lt;/li&gt;
&lt;li&gt;イベント、時間、参加者&lt;/li&gt;
&lt;li&gt;薬剤、投与量、副作用&lt;/li&gt;
&lt;li&gt;製品型番、パラメーター、価格&lt;/li&gt;
&lt;li&gt;契約条項、義務、期限&lt;/li&gt;
&lt;li&gt;ログ内のエラー種別とコンテキスト&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;形式が固定されていれば、正規表現や従来のパーサーで対応できます。&lt;br&gt;
しかし文章表現が少し自然になるだけで、ルールは急に複雑になります。&lt;/p&gt;
&lt;p&gt;大規模言語モデルは自然言語の理解に向いていますが、単に「抽出して」と頼むだけでは、いくつかの問題が起きやすくなります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出力形式が安定しない&lt;/li&gt;
&lt;li&gt;情報が原文のどこから来たのか分からない&lt;/li&gt;
&lt;li&gt;長文では漏れやすい&lt;/li&gt;
&lt;li&gt;バッチ処理しにくい&lt;/li&gt;
&lt;li&gt;人間が結果をレビューしにくい&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; が解決しようとしているのはこの部分です。LLM の理解力を、より制御しやすい抽出ワークフローとして扱えるようにします。&lt;/p&gt;
&lt;h2 id=&#34;langextract-の特徴&#34;&gt;LangExtract の特徴
&lt;/h2&gt;&lt;h3 id=&#34;1-例で抽出形式を制約する&#34;&gt;1. 例で抽出形式を制約する
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; は、曖昧な一文のプロンプトだけに頼るのではなく、prompt と examples を使ってモデルに次を伝えます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;何を抽出するか&lt;/li&gt;
&lt;li&gt;フィールド名は何か&lt;/li&gt;
&lt;li&gt;各フィールドをどう埋めるか&lt;/li&gt;
&lt;li&gt;不確実な場合にどう扱うか&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この few-shot 方式は情報抽出タスクに向いています。&lt;br&gt;
例が実データに近いほど、モデルは同じ構造で安定して出力しやすくなります。&lt;/p&gt;
&lt;h3 id=&#34;2-抽出結果を原文へ対応付けられる&#34;&gt;2. 抽出結果を原文へ対応付けられる
&lt;/h3&gt;&lt;p&gt;情報抽出で困るのは、「正しそうに見えるが、どこから来たのか分からない」結果です。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; の重要な点のひとつは、抽出結果と原文位置を対応付けることです。後から確認するとき、JSON の結果だけでなく、その情報が原文のどの部分に由来するのかも確認できます。&lt;/p&gt;
&lt;p&gt;これは、医療テキスト、法律文書、研究資料、社内文書など、レビューが必要な場面で重要です。&lt;/p&gt;
&lt;h3 id=&#34;3-長文ドキュメントを扱える&#34;&gt;3. 長文ドキュメントを扱える
&lt;/h3&gt;&lt;p&gt;長文の抽出では、コンテキストウィンドウ、抽出漏れ、重複抽出の問題が起きやすくなります。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; は長文向けの処理方法を提供し、ドキュメントを分割して並列処理し、抽出結果を整理できます。&lt;/p&gt;
&lt;p&gt;そのため、短いテキスト片だけでなく、完全なレポート、論文、長い Web ページ、まとまった資料の処理にも向いています。&lt;/p&gt;
&lt;h3 id=&#34;4-可視化チェックを支援する&#34;&gt;4. 可視化チェックを支援する
&lt;/h3&gt;&lt;p&gt;抽出結果が JSON だけだと、問題を見落としやすくなります。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; は抽出結果の可視化を支援し、モデルがどこから何を抽出したのかを直感的に確認できます。&lt;br&gt;
これは prompt の調整、抽出漏れの確認、誤抽出の確認に役立ちます。&lt;/p&gt;
&lt;h2 id=&#34;どんなときに使うべきか&#34;&gt;どんなときに使うべきか
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; は次のような場面に向いています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自然言語テキストから構造化フィールドを抽出したい&lt;/li&gt;
&lt;li&gt;テキスト形式が完全には固定されていない&lt;/li&gt;
&lt;li&gt;抽出結果と原文の対応関係を残したい&lt;/li&gt;
&lt;li&gt;長いドキュメントを処理したい&lt;/li&gt;
&lt;li&gt;結果に人間のレビューが必要&lt;/li&gt;
&lt;li&gt;後続で表、データベース、データ分析に流したい&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;典型例は次の通りです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;医療テキストから症状、薬剤、投与量、反応を抽出する&lt;/li&gt;
&lt;li&gt;契約書から当事者、義務、金額、期限を抽出する&lt;/li&gt;
&lt;li&gt;論文から研究対象、方法、結論を抽出する&lt;/li&gt;
&lt;li&gt;製品資料から仕様パラメーターを抽出する&lt;/li&gt;
&lt;li&gt;カスタマーサポート記録から問題種別と対応結果を抽出する&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;短いテキストの概要を一時的に知りたいだけなら、普通のチャットモデルで十分です。&lt;br&gt;
テキストを後続処理できるデータに変えたい場合は、&lt;code&gt;LangExtract&lt;/code&gt; のほうが向いています。&lt;/p&gt;
&lt;h2 id=&#34;基本的なインストール&#34;&gt;基本的なインストール
&lt;/h2&gt;&lt;p&gt;プロジェクトは &lt;code&gt;pip&lt;/code&gt; でインストールできます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install langextract
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;ソースからインストールすることもできます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/google/langextract.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; langextract
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install -e .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;モデル API を使う場合は、対応するモデルプロバイダーの API key を設定します。&lt;br&gt;
プロジェクト文書では Gemini 関連の使い方が中心に紹介されており、アダプター経由で他のモデルプロバイダーにも接続できます。&lt;/p&gt;
&lt;h2 id=&#34;基本的な使い方&#34;&gt;基本的な使い方
&lt;/h2&gt;&lt;p&gt;典型的な流れは次のようになります。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;原文テキストを準備する&lt;/li&gt;
&lt;li&gt;抽出対象を明確に書く&lt;/li&gt;
&lt;li&gt;少数の例を与える&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LangExtract&lt;/code&gt; を呼び出して抽出する&lt;/li&gt;
&lt;li&gt;構造化結果を確認する&lt;/li&gt;
&lt;li&gt;必要なら可視化ページを生成してレビューする&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;特に重要なのは 2 番目と 3 番目です。&lt;/p&gt;
&lt;p&gt;プロンプトではタスクを明確に書く必要があります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;テキスト内に明示された情報だけを抽出する&lt;/li&gt;
&lt;li&gt;常識で補完しない&lt;/li&gt;
&lt;li&gt;フィールドが欠けている場合は空にする&lt;/li&gt;
&lt;li&gt;同じ種類のエンティティでは同じフィールド構造を保つ&lt;/li&gt;
&lt;li&gt;出力に原文断片または位置を残す&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例は実際の入力にできるだけ近づけるべきです。&lt;br&gt;
実テキストにノイズ、略語、改行、表の残骸があるなら、例にもそれを反映するとよいです。&lt;/p&gt;
&lt;h2 id=&#34;使うときの注意点&#34;&gt;使うときの注意点
&lt;/h2&gt;&lt;p&gt;第一に、抽出タスクを広くしすぎないことです。&lt;/p&gt;
&lt;p&gt;「有用な情報を抽出する」は広すぎます。&lt;br&gt;
「薬剤名、投与量、投与頻度、副作用を抽出する」のように書くほうがよいです。&lt;/p&gt;
&lt;p&gt;第二に、モデル出力を完全には信頼しないことです。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; は結果と原文を対応付けられますが、モデルが漏れや誤抽出をしないという意味ではありません。重要な場面ではサンプリング確認や人間のレビューが必要です。&lt;/p&gt;
&lt;p&gt;第三に、長い説明より例が有効です。&lt;/p&gt;
&lt;p&gt;情報抽出タスクでは、モデルは出力形式を理解するために例へ強く依存します。&lt;br&gt;
抽象的なルールを長く書くより、高品質な example をいくつか用意するほうが有効です。&lt;/p&gt;
&lt;p&gt;第四に、長文ではコストと速度を見ることです。&lt;/p&gt;
&lt;p&gt;長文分割、並列抽出、モデル呼び出しにはコストがかかります。本格的なバッチ処理の前に、小さなサンプルでプロンプトとフィールド構造を調整するのがよいです。&lt;/p&gt;
&lt;h2 id=&#34;正規表現や従来-nlp-との違い&#34;&gt;正規表現や従来 NLP との違い
&lt;/h2&gt;&lt;p&gt;正規表現は、形式が安定しルールが明確なテキストに向いています。&lt;/p&gt;
&lt;p&gt;従来の NLP パイプラインは、タスク境界が明確で、モデルや辞書がすでに準備されている場面に向いています。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; は、形式がそこまで固定されていないが、意味は比較的明確なテキストに向いています。&lt;br&gt;
すべての表現に対してルールを書くのではなく、LLM が例から抽出対象を理解します。&lt;/p&gt;
&lt;p&gt;ただし、正規表現の完全な代替ではありません。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;固定形式のテキストでは、正規表現のほうが安価で安定している&lt;/li&gt;
&lt;li&gt;高リスク場面では検証とレビューが必要&lt;/li&gt;
&lt;li&gt;大規模バッチ処理ではモデル呼び出しコストを考える必要がある&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;現実的には、ルールが明確な部分はプログラムで処理し、意味の揺れが大きい部分を &lt;code&gt;LangExtract&lt;/code&gt; に任せるのがよいです。&lt;/p&gt;
&lt;h2 id=&#34;どんな開発者に向いているか&#34;&gt;どんな開発者に向いているか
&lt;/h2&gt;&lt;p&gt;次のようなことをしているなら、&lt;code&gt;LangExtract&lt;/code&gt; を試す価値があります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;長文を表に整理する&lt;/li&gt;
&lt;li&gt;文書からエンティティと関係を抽出する&lt;/li&gt;
&lt;li&gt;ナレッジベース投入前のデータクレンジングをする&lt;/li&gt;
&lt;li&gt;業務テキストからフィールドを抽出する&lt;/li&gt;
&lt;li&gt;LLM 駆動の情報抽出プロトタイプを作る&lt;/li&gt;
&lt;li&gt;抽出結果と原文証拠を残したい&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これは「クリックすればすべての文書を理解する」ツールではありません。LLM 抽出フローを工程化するためのライブラリに近いものです。&lt;/p&gt;
&lt;p&gt;それでも、フィールド設計、例の作成、結果確認は必要です。&lt;br&gt;
しかし毎回モデル呼び出しを書き、prompt を組み、出力を解析するより、より完整な抽出フレームワークを提供します。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/google/langextract&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;google/langextract&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最後に&#34;&gt;最後に
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;LangExtract&lt;/code&gt; の価値は、「LLM にテキストから情報を探させる」作業をより制御しやすくすることにあります。&lt;/p&gt;
&lt;p&gt;気軽な要約ではなく、フィールド、根拠、レビュー要求がある情報抽出タスクに向いています。&lt;br&gt;
長文を構造化データに変える仕事が多いなら、試す価値のあるツールです。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
