このガイドでは、Claude の高度な自然言語処理機能を使用して、法律文書を効率的に要約し、重要な情報を抽出して、法律調査を加速する方法について説明します。Claudeを使用することで、契約書のレビュー、訴訟の準備、コンプライアンスを合理化し、時間を節約し、法的プロセスの正確性を確保することができます。 私たちの要約をご覧ください...
私たちのウェブサイトをご覧ください。 抽象的なレシピ Claudeを使った法的要約の実装例を参照。
クロードと組む前に
クロードをリーガル・ブリーフに使用するかどうかの決定
ここでは、クロードのようなLLMを使って法的文書を要約するためのいくつかの重要な指示を示します:
大量の文書を効率的かつ経済的にレビューしたい。
手作業による大規模な文書レビューには時間とコストがかかりますが、Claude は大量の法的文書を迅速に処理して要約することができるため、文書レビューに必要な時間とコストを大幅に削減できます。この能力は、デューデリジェンス、契約分析、訴訟証拠開示など、効率性が重視される業務において特に価値を発揮します。
主要なメタデータを自動的に抽出する必要がある
Claude は、当事者、日付、契約条件、特定の条項など、法律文書から重要なメタデータを効率的に抽出し、分類します。この自動抽出により、情報が整理され、大規模な文書コレクションの検索、分析、管理が容易になります。契約管理、コンプライアンス・チェック、法律情報の検索可能なデータベースの作成に特に役立ちます。
明確で簡潔な標準化された要約を作成したい。
Claude は、事前に定義されたフォーマットに従った構造化された要約を生成し、法律専門家が様々な文書の要点を迅速に把握できるようにします。これらの標準化された要約は読みやすさを向上させ、文書間の比較を容易にし、特に複雑な法律用語や専門用語を扱う場合に全体的な理解を深めます。
抄録の正確な引用を行う必要があります。
法律の要約を作成する場合、適切な表示と引用は、信頼性と法的基準への準拠を保証するために不可欠です。Claudeは、引用されたすべての法律のポイントに正確な引用を提供するように促すことができ、法律の専門家が要約された情報を確認し、検証することが容易になります。
法的調査プロセスを簡素化し、スピードアップしたい。
Claude は、大量の判例、法令、法律評論を素早く分析することで、法律研究を支援します。関連する判例を特定し、重要な法的原則を抽出し、複雑な法的議論を要約します。この機能により、調査プロセスを大幅にスピードアップすることができ、法律専門家はより高度な分析や戦略策定に集中することができます。
要約から引き出したい詳細を特定する
どのような文書であれ、唯一正しい要約というものは存在しない。明確な指示がなければ、クロードはどのような詳細を含めるべきかを判断するのが難しいかもしれない。最良の結果を得るためには、要約に含めたい具体的な情報を特定すること。
例えば、転貸借契約を要約する場合、次のような要点を抜き出すとよい:
details_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でのこのプロセスのデモンストレーションです:
from io import BytesIO
import re
import pypdf
import requests
def get_llm_text(pdf_file):
reader = pypdf.PdfReader(pdf_file)
text = "\n".join([page.extract_text() for page in reader.pages])
# 去除多余的空格
text = re.sub(r'\s+', ' ', text)
# 去除页码
text = re.sub(r'\n\s*\d+\s*\n', '\n', text)
return text
# 从 GitHub 仓库创建完整的 URL
url = "https://raw.githubusercontent.com/anthropics/anthropic-cookbook/main/skills/summarization/data/Sample Sublease Agreement.pdf"
url = url.replace(" ", "%20")
# 下载 PDF 文件到内存中
response = requests.get(url)
# 从内存加载 PDF
pdf_file = BytesIO(response.content)
document_text = get_llm_text(pdf_file)
print(document_text[:50000])
この例では、まず、サブリース契約書のPDFを以下からダウンロードした。 要約料理本 .この合意は sec.govウェブサイト サブリース契約書
pypdfライブラリを使用してPDFの内容を抽出し、テキストに変換します。テキストデータは、冗長なスペースやページ番号を削除してクリーンアップされます。
強力なキューを作る
Claude は様々な要約スタイルに対応できます。クロードがより詳細または簡潔な内容を生成するように、より多くの専門用語を含むように、またはより少ない専門用語を含むように、またはより高いまたは低いレベルの文脈要約を提供するように導くために、必要に応じてキューワードの詳細を調整することができます。
以下は、サブリース契約の分析時に生成される要約が一貫した構造に従っていることを確認するための、キューワードの作成方法を示す例です:
import anthropic
# 初始化 Anthropic 客户端
client = anthropic.Anthropic()
def summarize_document(text, details_to_extract, model="claude-3-5-sonnet-20240620", max_tokens=1000):
# 将要提取的细节格式化为提示词上下文的一部分
details_to_extract_str = '\n'.join(details_to_extract)
# 提示模型总结转租协议
prompt = f"""Summarize the following sublease agreement. Focus on these key aspects:
{details_to_extract_str}
Provide the summary in bullet points nested within the XML header for each section. For example:
<parties involved>
- Sublessor: [Name]
// 根据需要添加更多细节
</parties involved>
如果文档中没有明确说明某些信息,请标注为「未说明」。不要使用前言。
转租协议内容:
{text}
"""
response = client.messages.create(
model=model,
max_tokens=max_tokens,
system="You are a legal analyst specializing in real estate law, known for highly accurate and detailed summaries of sublease agreements.",
messages=[
{"role": "user", "content": prompt},
{"role": "assistant", "content": "Here is the summary of the sublease agreement: <summary>"}
],
stop_sequences=["</summary>"]
)
return response.content[0].text
sublease_summary = summarize_document(document_text, details_to_extract)
print(sublease_summary)
このコードは summarize_document
この関数は、Claude を使ってサブリース契約の内容を要約します。この関数は、テキスト文字列と抽出する詳細のリストを入力として受け取ります。この例では document_text
歌で応える details_to_extract
変数がこの関数を呼び出す。
関数内部では、要約される文書、抽出される詳細、文書を要約するための具体的な指示を含むキューワードがClaudeのために生成される。プロンプトは、抽出された各詳細の要約を入れ子のXMLタグとして返すようにClaudeに指示する。
タグの中に要約の各部分を出力することにしたので、後処理のステップで各部分を簡単に解析できる。このアプローチは構造化された要約を生成し、使用シナリオに適応し、各要約が同じパターンに従うことを保証する。
キュー・ワードを評価する
キュー・ワードは通常、本番で使用する前にテストし、最適化する必要がある。ソリューションの準備が整っているかどうかを判断するには、定量的および定性的な方法を組み合わせた体系的なプロセスを使用して、要約の品質を評価する。定義された強力な実証的評価はプロンプトの言葉を最適化するのに役立ちます。評価に含めるとよい指標をいくつか紹介します:
ルージュ・スコア
BLEUスコア
コンテキスト埋め込み類似度
LLMベースの採点
手動評価
配備のヒント
ソリューションを本番環境にデプロイする際には、以下の点に留意してください。
- 責任のリスクがないことを確認する: 抄録に誤りがあった場合、組織や顧客に法的責任が生じる可能性があることを理解する。抄録はAIによって作成されたものであり、法律の専門家によるレビューが必要であるという免責事項または法的声明を提供する。
- 複数のドキュメントタイプを扱う: このガイドでは、PDFからテキストを抽出する方法について説明します。実際には、文書が複数の形式(PDF、Word文書、テキストファイルなど)になっていることがあります。デー タ 抽出処理では、 受信す る 可能性のあ る すべての フ ァ イ ル形式を変換す る よ う に し て く だ さ い。
- クロードのAPIへの並列呼び出し: トークンの数が多い長い文書の場合、Claude がダイジェストを生成するのに1分ほどかかることがあります。大規模なドキュメントコレクションの場合、ダイジェストを適切な時間で完了させるために、ClaudeにAPIコールを並行して送信する必要があるかもしれません。Anthropicの 制限速度 で、並列に実行できるAPIコールの最大数を決定する。
パフォーマンスを向上させる
複雑なシナリオでは、標準的な エンジニアリングのヒント それ以上に、パフォーマンスを向上させるための追加戦略を検討することが有益かもしれない。ここでは、いくつかの高度な戦略を紹介しよう:
長い文書を要約するエグゼクティブ・メタ・サマリー
リーガル・サマリーでは、長い文書や複数の関連文書を処理することが多く、クロードのコンテキスト・ウィンドウの外にある場合があります。このような状況に対処するために、メタダイジェストと呼ばれるチャンキング手法を使うことができます。この手法では、文書を管理しやすい小さな塊に分割し、各塊を個別に処理します。その後、各チャンクからの要約を組み合わせて、文書全体のメタ要約を作成することができます。
以下は、メタ・サマリーの実行方法の例である:
import anthropic
# 初始化 Anthropic 客户端
client = anthropic.Anthropic()
def chunk_text(text, chunk_size=20000):
return [text[i:i+chunk_size] for i in range(0, len(text), chunk_size)]
def summarize_long_document(text, details_to_extract, model="claude-3-5-sonnet-20240620", max_tokens=1000):
# 格式化提取细节以放置在提示的上下文中
details_to_extract_str = '\n'.join(details_to_extract)
# 遍历块并分别对每个块进行摘要
chunk_summaries = [summarize_document(chunk, details_to_extract, model=model, max_tokens=max_tokens) for chunk in chunk_text(text)]
final_summary_prompt = f"""
你正在查看多个相关文档的分块摘要。
将以下来自不同可信来源的文档摘要整合成连贯的整体摘要:
<chunked_summaries>
{"".join(chunk_summaries)}
</chunked_summaries>
重点关注以下关键方面:
{details_to_extract_str})
将摘要以嵌套在每个部分的 XML 标头下的项目符号点的形式提供。例如:
<parties involved>
- 转租方:[姓名]
// 根据需要添加更多细节
</parties involved>
如果文档中未明确说明任何信息,请注明「未指定」。不要加入前言。
"""
response = client.messages.create(
model=model,
max_tokens=max_tokens,
system="你是一名总结文档笔记的法律专家。",
messages=[
{"role": "user", "content": final_summary_prompt},
{"role": "assistant", "content": "以下是转租协议的摘要:<summary>"}
],
stop_sequences=["</summary>"]
)
return response.content[0].text
long_summary = summarize_long_document(document_text, details_to_extract)
print(long_summary)
summarize_long_document
関数は、前回の summarize_document
この関数は、文書を小さな塊に分割し、それぞれの塊を別々に要約する。
このコードでは summarize_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パブリッシングブログ.