このガイドでは、Claude の高度な自然言語処理機能を使用して、法律文書を効率的に要約し、重要な情報を抽出して、法律調査を加速する方法について説明します。Claudeを使用することで、契約書のレビュー、訴訟の準備、コンプライアンスを合理化し、時間を節約し、法的プロセスの正確性を確保することができます。 私たちの要約をご覧ください...
私たちのウェブサイトをご覧ください。 抽象的なレシピ Claudeを使った法的要約の実装例を参照。
クロードと組む前に
クロードをリーガル・ブリーフに使用するかどうかの決定
ここでは、クロードのようなLLMを使って法的文書を要約するためのいくつかの重要な指示を示します:
大量の文書を効率的かつ経済的にレビューしたい。
手作業による大規模な文書レビューには時間とコストがかかりますが、Claude は大量の法的文書を迅速に処理して要約することができるため、文書レビューに必要な時間とコストを大幅に削減できます。この能力は、デューデリジェンス、契約分析、訴訟証拠開示など、効率性が重視される業務において特に価値を発揮します。
主要なメタデータを自動的に抽出する必要がある
Claude は、当事者、日付、契約条件、特定の条項など、法律文書から重要なメタデータを効率的に抽出し、分類します。この自動抽出により、情報が整理され、大規模な文書コレクションの検索、分析、管理が容易になります。契約管理、コンプライアンス・チェック、法律情報の検索可能なデータベースの作成に特に役立ちます。
明確で簡潔な標準化された要約を作成したい。
Claude は、事前に定義されたフォーマットに従った構造化された要約を生成し、法律専門家が様々な文書の要点を迅速に把握できるようにします。これらの標準化された要約は読みやすさを向上させ、文書間の比較を容易にし、特に複雑な法律用語や専門用語を扱う場合に全体的な理解を深めます。
抄録の正確な引用を行う必要があります。
法律の要約を作成する場合、適切な表示と引用は、信頼性と法的基準への準拠を保証するために不可欠です。Claudeは、引用されたすべての法律のポイントに正確な引用を提供するように促すことができ、法律の専門家が要約された情報を確認し、検証することが容易になります。
法的調査プロセスを簡素化し、スピードアップしたい。
Claude は、大量の判例、法令、法律評論を素早く分析することで、法律研究を支援します。関連する判例を特定し、重要な法的原則を抽出し、複雑な法的議論を要約します。この機能により、調査プロセスを大幅にスピードアップすることができ、法律専門家はより高度な分析や戦略策定に集中することができます。
要約から引き出したい詳細を特定する
どのような文書であれ、唯一正しい要約というものは存在しない。明確な指示がなければ、クロードはどのような詳細を含めるべきかを判断するのが難しいかもしれない。最良の結果を得るためには、要約に含めたい具体的な情報を特定すること。
例えば、転貸借契約を要約する場合、次のような要点を抜き出すとよい:
詳細_to_extract = [
関連当事者(転借人、転貸人、原賃貸人)」。,
物件の詳細(住所、説明、許可された用途)」。,
期間と賃料(開始日、終了日、月額賃料、保証金)」。,
瑕疵担保責任(光熱費、維持費、修繕費)」。,
同意と通知(家主の同意と通知要件)」。,
特別条項(家具、駐車場、転貸制限)」。
]
成功基準の設定
要約の品質を評価することは、悪名高く困難なタスクである。他の多くの自然言語処理タスクとは異なり、要約の評価には通常明確で客観的な指標がない。このプロセスはしばしば非常に主観的で、読者によってアブストラクトの異なる側面を異なるように評価することがあります。評価する際に期待できることは以下の通りです。 クロード リーガル・ブリーフの実施方法について考慮する必要があると思われる基準。
事実の正確さ
要約は、事実、法的概念、文書の重要なポイントを正確に示すものでなければならない。
法的精度
用語や法令、判例、規則への言及は正確でなければならず、法的基準に従っていなければならない。
シンプルさ
要約は、重要な詳細を省くことなく、法的文書をその核心部分に圧縮すべきである。
一貫性
複数の文書を要約する場合、大きな言語モデルは各要約に対して一貫した構造と処理を維持する必要がある。
可読性
文章は明瞭で理解しやすいものでなければならない。聴衆が法律の専門家でない場合、要約には聴衆を混乱させるような法律用語が含まれてはならない。
バイアスと公平性
抄録は、公正かつ公平な法的論拠と立場を示すものでなければならない。
についての詳細は、ガイドをご覧ください。 成功基準の設定 メッセージだ。
クロードを使って法律文書を要約する方法
適切なクロード・モデルの選択
法的文書を要約する場合、モデルの精度は非常に重要であり、Claude 3.5 Sonnet は高い精度が要求されるこのような使用ケースに最適です。文書のサイズと数が大きく、コストが問題になる場合は、Claude 3 Haiku のような小型のモデルを使用してみることもできます。
これらのコストを見積もるために、SonnetとHaikuを使って1,000件のサブリース契約を要約した場合のコストを比較してみよう:
- コンテンツの規模
- 契約数:1,000件
- 1契約あたりの文字数:300,000文字
- 総文字数:300M
- 推定トークン
- 入力トークン: 86M (仮定1) トークン (3.5文字分)
- 1アブストラクトあたりの出力トークン:350
- 出力トークン合計:350,000
- クロード 3.5 ソネット 見積もり費用
- トークンのコストを入力:86 MTok * $3.00/MTok = $258
- 出力トークンのコスト:0.35 MTok * $15.00/MTok = $5.25
- 総額:$258.00 + $5.25 = $263.25
- クロード3 俳句 見積もり費用
- トークン・コストを入力:86 MTok * $0.25/MTok = $21.50
- 出力トークン・コスト:0.35 MTok * $1.25/MTok = $0.44
- 総費用:$21.50 + $0.44 = $21.96
実際の費用はこれらの見積もりと異なる可能性がある。上記の見積もりは 催促 各章の例。
ファイルをクロードが扱える形式に変換する。
文書の要約を始める前に、データを準備する必要があります。これには、PDFからテキストを抽出し、テキストをクリーンアップし、Claudeで処理できるようにすることが含まれます。
以下は、サンプルPDFでのこのプロセスのデモンストレーションです:
より イオ インポート バイトIO
インポート レ
インポート パイPDF
インポート リクエスト
デフ get_llm_text(pdfファイル):
reader = pypdf.PdfReader(pdf_file)
テキスト "\n".join([page.extract_text() にとって ページ で リーダー.ページ])
# 冗長なスペースを削除
text = re.sub()r, ' 'テキスト)
# ページ番号を削除
text = re.sub()r' \n*s*d+s*n., '\n'テキスト)
戻る テキスト
# GitHubリポジトリから完全なURLを作成する
url = "https://raw.githubusercontent.com/anthropics/anthropic-cookbook/main/skills/summarization/data/Sample サブリース契約書.pdf"
url = url.replace(" ", "%20")
# PDFファイルのメモリへのダウンロード
response = requests.get(url)
# メモリからPDFを読み込む
pdf_file = BytesIO(response.content)
document_text = get_llm_text(pdf_file)
プリント(document_text[.50000])
この例では、まず、サブリース契約書のPDFを以下からダウンロードした。 要約料理本 .この合意は sec.govウェブサイト サブリース契約書
pypdfライブラリを使用してPDFの内容を抽出し、テキストに変換します。テキストデータは、冗長なスペースやページ番号を削除してクリーンアップされます。
強力なキューを作る
Claude は様々な要約スタイルに対応できます。クロードがより詳細または簡潔な内容を生成するように、より多くの専門用語を含むように、またはより少ない専門用語を含むように、またはより高いまたは低いレベルの文脈要約を提供するように導くために、必要に応じてキューワードの詳細を調整することができます。
以下は、サブリース契約の分析時に生成される要約が一貫した構造に従っていることを確認するための、キューワードの作成方法を示す例です:
インポート 人間的
# Anthropicクライアントの初期化
クライアント = Anthropic.Anthropic()
デフ 要約文書(text, details_to_extract, model="claude-3-5-sonnet-20240620"max_tokens=1000):
# キューワードのコンテキストの一部として抽出されるディテールのフォーマット
詳細_to_extract_str = '\n'.join(details_to_extract)
#チップモデル概要サブレット契約書
プロンプト f"""次のサブリース契約を要約しなさい。 これらの重要な側面に注目しなさい。
{details_to_extract_str}。
各セクションのXMLヘッダー内に箇条書きで要約を記述する。 例えば、以下のように。
<関係者
- サブレッサー: [名前]
// 必要に応じて詳細を追加する
</関係者
ドキュメントに明示されていない情報がある場合は、'not stated'とマークする。前置詞は使用しないでください。
サブリース契約の内容
{テキスト}
"""
response = client.messages.create(
model=model、
model=model, max_tokens=max_tokens, system=max_tokens, max_tokens
system=「あなたは不動産法を専門とするリーガル・アナリストで、サブリース契約に関する非常に正確で詳細な要約で知られています。,
messages=[
{役割: 「ユーザー, 「コンテンツプロンプト}, { {
{役割: "アシスタント", 「コンテンツ: 「以下はサブリース契約の概要である。}
],
stop_sequences=[「"]
)
戻る response.content[0テキスト
sublease_summary = summarise_document(document_text, details_to_extract)
プリント(サブリース_概要)
このコードは 要約文書
この関数は、Claude を使ってサブリース契約の内容を要約します。この関数は、テキスト文字列と抽出する詳細のリストを入力として受け取ります。この例では ドキュメント_テキスト
歌で応える 詳細_to_extract
変数がこの関数を呼び出す。
関数内部では、要約される文書、抽出される詳細、文書を要約するための具体的な指示を含むキューワードがClaudeのために生成される。プロンプトは、抽出された各詳細の要約を入れ子のXMLタグとして返すようにClaudeに指示する。
タグの中に要約の各部分を出力することにしたので、後処理のステップで各部分を簡単に解析できる。このアプローチは構造化された要約を生成し、使用シナリオに適応し、各要約が同じパターンに従うことを保証する。
キュー・ワードを評価する
キュー・ワードは通常、本番で使用する前にテストし、最適化する必要がある。ソリューションの準備が整っているかどうかを判断するには、定量的および定性的な方法を組み合わせた体系的なプロセスを使用して、要約の品質を評価する。定義された強力な実証的評価はプロンプトの言葉を最適化するのに役立ちます。評価に含めるとよい指標をいくつか紹介します:
ルージュ・スコア
BLEUスコア
コンテキスト埋め込み類似度
LLMベースの採点
手動評価
配備のヒント
ソリューションを本番環境にデプロイする際には、以下の点に留意してください。
- 責任のリスクがないことを確認する: 抄録に誤りがあった場合、組織や顧客に法的責任が生じる可能性があることを理解する。抄録はAIによって作成されたものであり、法律の専門家によるレビューが必要であるという免責事項または法的声明を提供する。
- 複数のドキュメントタイプを扱う: このガイドでは、PDFからテキストを抽出する方法について説明します。実際には、文書が複数の形式(PDF、Word文書、テキストファイルなど)になっていることがあります。デー タ 抽出処理では、 受信す る 可能性のあ る すべての フ ァ イ ル形式を変換す る よ う に し て く だ さ い。
- クロードのAPIへの並列呼び出し: トークンの数が多い長い文書の場合、Claude がダイジェストを生成するのに1分ほどかかることがあります。大規模なドキュメントコレクションの場合、ダイジェストを適切な時間で完了させるために、ClaudeにAPIコールを並行して送信する必要があるかもしれません。Anthropicの 制限速度 で、並列に実行できるAPIコールの最大数を決定する。
パフォーマンスを向上させる
複雑なシナリオでは、標準的な エンジニアリングのヒント それ以上に、パフォーマンスを向上させるための追加戦略を検討することが有益かもしれない。ここでは、いくつかの高度な戦略を紹介しよう:
長い文書を要約するエグゼクティブ・メタ・サマリー
リーガル・サマリーでは、長い文書や複数の関連文書を処理することが多く、クロードのコンテキスト・ウィンドウの外にある場合があります。このような状況に対処するために、メタダイジェストと呼ばれるチャンキング手法を使うことができます。この手法では、文書を管理しやすい小さな塊に分割し、各塊を個別に処理します。その後、各チャンクからの要約を組み合わせて、文書全体のメタ要約を作成することができます。
以下は、メタ・サマリーの実行方法の例である:
インポート 人間的
# Anthropicクライアントの初期化
クライアント = Anthropic.Anthropic()
デフ チャンク・テキスト(text, chunk_size=20000):
戻る [text[i:i+chunk_size]」。 にとって i で 範囲(0, レン(テキスト), chunk_size)]。
デフ summarize_long_document。(text, details_to_extract, model="claude-3-5-sonnet-20240620"max_tokens=1000):
# 抽出の詳細をプロンプトのコンテキストに配置するための書式設定
詳細_to_extract_str = '\n'.join(details_to_extract)
# ブロックを縦断し、各ブロックを個別にまとめる
chunk_summaries = [summarise_document(chunk, details_to_extract, model=model, max_tokens=max_tokens) にとって チャンク で chunk_text(text)]] 。
最終サマリープロンプト f"""
あなたは複数の関連文書のチャンク化された要約を閲覧しています。
信頼できるさまざまな情報源から集めた以下の文書の要約を、首尾一貫した全体的な要約にまとめます:
<チャンク化された要約
{"".join(chunk_summaries)}。
。
以下の重要な側面に焦点を当てる:
{details_to_extract_str}。)
各セクションのXMLヘッダーの下に箇条書きで要約を記述する。例
<関係当事者
- Sublessee: [name].
// 必要に応じて詳細を追加
</関係者
文書に明示されていない情報がある場合は、「not specified」と記述する。前文は含めない。
"""
response = client.messages.create(
model=model、
model=model, max_tokens=max_tokens, system=max_tokens, max_tokens
system="あなたは文書メモを要約する法律の専門家です",
messages=[
{役割: 「ユーザー, 「コンテンツ: final_summary_prompt}, { { { final_summary_prompt
{役割: "アシスタント", 「コンテンツ: 「以下はサブリース契約の概要である。"}
],
stop_sequences=[「"]
)
戻る response.content[0テキスト
long_summary = summarise_long_document(document_text, details_to_extract)。
プリント(long_summary)
summarize_long_document。
関数は、前回の 要約文書
この関数は、文書を小さな塊に分割し、それぞれの塊を別々に要約する。
このコードでは 要約文書
これを実現するために、この関数は原文書の各20,000文字のブロックに適用される。その後、各ブロックの要約が結合され、これらのブロック要約からなる最終的な要約が作成される。
この例のPDFではsummarize_long_document。
関数は、文書全体がClaudeのコンテキストウィンドウに収まるので、厳密には必要ない。しかし、文書がClaudeのコンテキストウィンドウを超える場合や、関連する複数の文書を要約する必要がある場合には、このアプローチは重要である。いずれにせよ、このメタ要約手法は、以前の単一要約手法では見逃されていた、より重要な詳細を最終要約で捉えることができる場合が多い。
要約索引付き文書を使って大量の文書を探索する
大規模言語モデル(LLM)を用いた文書コレクションの検索では、通常、検索補強生成(RAG)が行われる。しかし、大規模な文書を含むシナリオや、正確な情報検索が重要なシナリオでは、基本的な検索補強生成(RAG)は必要ない。 ラグ メソッドでは不十分かもしれない。要約索引付き文書(Summary Indexed Documents)は先進的なRAG手法であり、従来のRAG手法よりも少ない文脈を利用して、検索のために文書をランク付けする効率的な方法を提供する。この手法では、まずClaudeを使ってコーパスの各文書の簡潔な要約を生成し、次にClaudeを使って各要約とクエリとの関連性をランク付けする。コードベースの例を含む、このアプローチの詳細については 要約料理本 の要約索引文書セクション。
データセットを学習するためにクロードを微調整する
Claudeの要約生成能力を向上させるもう一つの高度なテクニックは、ファインチューニングです。ファインチューニングでは、法的要約のニーズに高度に合致したカスタムデータセットでClaudeをトレーニングし、利用シナリオに適応するようにする。以下はファインチューニングの概要です:
- 誤認である: 要件に合致しないクロード要約の例を集めることから始める。これには、重要な法的詳細の省略、文脈の誤解、不適切な法律用語の使用などが含まれる。
- データセットの準備: これらの問題を特定したら、これらの問題の例を含むデータセットをコンパイルする。このデータセットには、クロードが望ましい行動を学べるように、修正した要約だけでなく、元の法的文書も含めるべきである。
- 微調整の実施: 微調整では、照合したデータセット上でモデルを再トレーニングし、その重みとパラメータを調整します。この再トレーニングは、クロードが法律分野特有の要件をよりよく理解し、基準に従って文書を要約する能力を向上させるのに役立ちます。
- 反復的改善: 微調整は一度だけのプロセスではない。Claudeが要約を生成し続ける中で、その機能をさらに洗練させるために、パフォーマンスの低い新しい例を繰り返し追加することができます。時間の経過とともに、この継続的なフィードバックループは、法律要約タスクに特化した高度に専門化されたモデルを作り出します。
ファイン・チューニングは現在、Amazon Bedrockでのみ購入可能。詳細は AWSパブリッシングブログ.