Claude Media
Claudeでインタビュー逐語録を横断分析する手順と引用の原文照合

Claudeでインタビュー逐語録を横断分析する手順と引用の原文照合

10本前後のインタビュー逐語録をClaudeに渡し、テーマ別に発言を束ねて食い違いを一覧にする手順。引用が原文と一致するかを機械で照合する方法も載せます。

逐語録の横断分析をClaudeに任せる流れ

ステークホルダーインタビューが10本前後たまると、1本ずつ読み返す作業より、全体を貫くテーマと発言者ごとの食い違いを見つける作業のほうが重くなります。逐語録をファイルとしてClaudeに渡せば、テーマ別に発言を引用付きで束ね、食い違いを表にするところまでを会話で進められます。

ただし、Claudeが画面に出す引用は、原文と一字違わない保証がありません。Claudeは権威ありげに見える引用を出すことがあるが、事実に基づかない場合もある、という注意がヘルプセンターにも書かれています。そこで、この手順では「引用に発言IDを付けさせ、スクリプトで原文と突き合わせる」工程を最後に置きます。

手順

横断分析の4段階

  1. 1

    逐語録に発言IDを振る

    行ごとに「インタビュー番号 + 行番号」のIDを埋め込み、あとで引用の出どころを機械で引けるようにします。

  2. 2

    1本ずつ発言を抜き出す

    テーマ候補とともに、発言をID付きの原文引用で表にします。

  3. 3

    テーマを統合し、食い違いを並べる

    全員分の表を合わせてコードブックを作り、同じテーマで意見が割れた箇所を一覧にします。

  4. 4

    引用を原文と照合する

    スクリプトで、引用が該当行にそのまま存在するかを確かめます。

逐語録の置き場所はチャット添付かProjectsか

10本程度ならチャットへの添付でも足ります。チャットに上げられるファイルは1チャット20個まで、1ファイル500MBまでです。対応する形式にはPDF、DOCX、CSV、TXT、HTML、ODT、RTF、EPUB、JSONが含まれ、PDF以外の文書からはテキストだけが抽出されます。埋め込み画像や図表は読まれないため、逐語録は文字として持っているTXTかDOCXで渡すのが安全です。

分析を何日かに分けるなら、Projectsに置く選択肢があります。プロジェクトのファイルは1つ30MBまでで、個数に決まった上限はありませんが、内容の合計がコンテキストウィンドウに収まる必要があります。Projectsは無料アカウントでも使えますが、作れるのは5つまでです。

プロジェクトの知識が検索に切り替わると、全発言の網羅には向かない

有料プラン(Pro、Max、Team、Enterprise)では、プロジェクトの知識がコンテキストウィンドウの上限に近づくと、Claudeが自動でRAGのモードに切り替わります。このモードでは、全文を一度に読み込む代わりに、プロジェクト知識の検索ツールで関連しそうな部分だけを取り出して答えます。容量は最大10倍に広がり、知識が上限を下回れば自動でもとの方式に戻ります。

大量の資料から質問に合う箇所を探す用途には便利な仕組みです。一方、「10本の全発言を漏れなくテーマに振り分ける」作業は、取り出された範囲に結果が左右されます。逐語録が長く、プロジェクトにRAGの表示が出ているときは、次の運用に寄せると取りこぼしを避けやすくなります。

  • 手順2の抜き出しを、1回の依頼で1本に限る
  • 抜き出した表(短い)を新しいチャットで統合する
  • 全体を見たい質問は、表のほうを材料にする

RAGの仕組みと全文投入の違いはClaude ProjectsのRAG検索の仕組みに詳しくあります。ファイル上限の全体像はClaudeファイル上限の一覧で確認できます。

手順1: 逐語録を整えて発言IDを振る

RAG向けのベストプラクティスとして、ヘルプセンターは分かりやすいファイル名をつけること、質問でファイル名を指定することを挙げています。横断分析でもこれは効きます。ファイル名には、後で人が見て分かる情報だけを入れます。

ファイル名の例
I01_経営企画_部長_2026-09-12.txt
I02_営業_課長_2026-09-13.txt
I03_情報システム_担当_2026-09-15.txt

実名や社名は、ファイルを渡す前に伏せ字へ置き換えておく進め方があります。誰の発言かを追えれば分析には十分なので、「営業部門の課長」程度の属性だけを残します。

次に、各行へ発言IDを埋め込みます。次のスクリプトは、transcripts フォルダのTXTを読み、行番号つきのIDを先頭に付けて tagged フォルダへ書き出します。空行はIDを付けずに飛ばしますが、行番号は元ファイルのままです。

add_ids.py
import sys
from pathlib import Path
 
src, dst = Path(sys.argv[1]), Path(sys.argv[2])
dst.mkdir(exist_ok=True)
 
for i, f in enumerate(sorted(src.glob("*.txt")), 1):
    lines = f.read_text(encoding="utf-8").splitlines()
    out = [
        f"[I{i:02d}-L{n:04d}] {t}"
        for n, t in enumerate(lines, 1)
        if t.strip()
    ]
    name = f"I{i:02d}_{f.name}"
    (dst / name).write_text("\n".join(out), encoding="utf-8")
python add_ids.py transcripts tagged

tagged の中の10ファイルをClaudeに渡します。ファイル名の先頭にある I01 などの番号が、引用のIDと対応します。

手順2: 1本ずつ発言を抜き出す

最初から10本を横断させず、1本ごとに「論点になりそうな発言」を引用付きで抜き出させます。後の統合は、この表を材料にして行います。

発言の抜き出しプロンプト(例)
添付した I03 の逐語録から、導入判断・費用・運用負荷・リスクに
関する発言を抜き出してください。次の列の表にします。
 
- ID: 行頭の [I03-L0042] の形のIDをそのまま
- 発言者の属性: ファイル名にある部署と役職
- 引用: その行の原文をそのまま。要約や言い換えはしない
- テーマ候補: 1〜3語
 
引用は1行の範囲に収めてください。複数行にまたがる場合は、
行ごとに別の行として出し、中略の「…」は使わないでください。

指示のポイントは、引用を原文のままにすることと、1行の範囲に収めさせることです。次の照合で行単位に比べるため、この制約が効きます。

手順3: テーマを統合して食い違いを並べる

10本分の表がそろったら、新しいチャットに表を貼るか、表をまとめたファイルを渡して統合します。

テーマ統合のプロンプト(例)
添付した10本分の発言表を統合してください。
 
1. テーマ候補を整理し、5〜8個のテーマに束ねてください。
   各テーマに、定義を1文で付けます。
2. テーマごとに、該当する発言のIDと引用を並べてください。
   表に載っていないIDは使わないでください。
3. 1つのテーマに言及した発言者の数を、属性別に数えてください。
4. どの発言も、どのテーマにも入らないものは
   「未分類」としてIDだけ列挙してください。

数え上げは、Claudeが勘定を間違えやすい部分です。テーマごとの発言者数は、ID一覧から手元でも数え直しておきます。

取りこぼしを統合の直後に確かめる

統合したテーマ表の「発言者」欄を見て、10本すべてのインタビューが1回以上登場しているかを確認します。特定の番号だけ出てこないときは、その逐語録の抜き出しが浅いか、IDの付け方がずれています。その1本だけ、手順2に戻って抜き出し直します。

もう1つの確認は、元の抜き出し表の行数と、統合後に使われたIDの数の比較です。統合の過程で落ちた発言があれば、差分として見つかります。差分は「未分類」に回されているのか、黙って捨てられたのかを、ID単位で追えます。

食い違いの一覧にまとめる

テーマが固まったら、同じテーマの中で意見が割れた箇所を表にします。依頼するときは、食い違いの種類を先に決めておくと読みやすくなります。

食い違い一覧のプロンプト(例)
テーマごとに、発言者の間で意見が食い違っている箇所を
次の列の表にしてください。
 
- テーマ
- 主張A: 発言者の属性、ID、引用
- 主張B: 発言者の属性、ID、引用
- 食い違いの種類: 事実認識の違い / 優先順位の違い /
  手段の違いのいずれか
- 判断メモ: 追加で聞くべき内容を1文で

出力の形は、たとえば次のようになります(内容は例示用の架空のものです)。

テーマ主張A主張B種類
導入費用主張A経営企画部長(I01-L0031)「初年度は予算内に収まる」主張B情報システム担当(I03-L0058)「保守費を入れると予算を超える」種類事実認識
運用負荷主張A営業課長(I02-L0044)「現場の入力は増えない」主張B情報システム担当(I03-L0072)「データ整備を現場に頼むことになる」種類事実認識

「種類」の列を付けると、事実を確かめれば解決する食い違いと、利害の調整が要る食い違いを分けて読めます。事実認識の違いは、追加の資料やデータで片が付くことがあります。優先順位の違いは、次の打ち合わせで話し合う論点になります。

手順4: 引用を原文と照合する

食い違い一覧は、そのまま報告書の根拠になります。だからこそ、引用が原文にあるかを確かめる工程が欠かせません。ここは人が読み比べるより、スクリプトで行を引いて比べるほうが確実です。

手順2と3でClaudeに出させた引用を、次の形のJSONにまとめます。表からの転記もClaudeに頼めますが、その場合も照合の対象です。

quotes.json(例)
[
  {"id": "I01-L0031", "quote": "初年度は予算内に収まる"},
  {"id": "I03-L0058", "quote": "保守費を入れると予算を超える"}
]

照合スクリプトは、IDの行を探し、空白を除いて引用が含まれているかを比べます。一致しなかったときは、別の行にあったのか、どこにもないのかを区別して出します。

verify_quotes.py
import json
import re
import sys
from pathlib import Path
 
 
def norm(s):
    return re.sub(r"\s+", "", s)
 
 
quotes = json.loads(Path(sys.argv[1]).read_text(encoding="utf-8"))
files = {f.name[:3]: f for f in Path(sys.argv[2]).glob("I??_*.txt")}
tag = re.compile(r"^\[(I\d\d-L\d{4})\] ?")
 
lines_by_file = {}
for key, f in files.items():
    rows = {}
    for row in f.read_text(encoding="utf-8").splitlines():
        m = tag.match(row)
        if m:
            rows[m.group(1)] = tag.sub("", row)
    lines_by_file[key] = rows
 
bad = 0
for q in quotes:
    rows = lines_by_file.get(q["id"][:3], {})
    q_norm = norm(q["quote"])
    if q_norm in norm(rows.get(q["id"], "")):
        continue
    bad += 1
    elsewhere = any(q_norm in norm(t) for t in rows.values())
    where = "同じファイルの別の行にある" if elsewhere else "ファイルのどこにもない"
    print(f'{q["id"]}: 不一致({where}) {q["quote"][:30]}')
 
print(f"{len(quotes)}件中 {bad}件が不一致")
python verify_quotes.py quotes.json tagged

出力は、問題がなければ「N件中0件が不一致」の1行だけです。不一致の見方は次の2通りです。

  • 「別の行にある」: 発言の取り違えか、IDの付け間違いです。引用は実在するので、IDを直せば使えます
  • 「どこにもない」: 要約や言い換えが混ざったか、存在しない発言です。引用として使わず、原文を探し直します

空白を除いて比べるため、改行位置やスペースの違いは無視されます。一方、言い換え、句読点の差、「…」による中略は一致しません。この厳しさが目的なので、一致しない引用は報告書に載せる前に原文へ戻します。

照合が通ったあとも、人の目は残します。引用が実在しても、前後の発言を切り落とすと意味が変わることがあるためです。食い違い一覧の「主張A」「主張B」は、前後の数行を読んで文脈を確かめておきます。

つまずきやすい点

発言者の取り違えは、横断分析で最も起きやすい誤りです。同じテーマを複数人が話すため、IDなしの引用だと誰の発言か判別できなくなります。ID付きで抜き出させる理由はここにあります。

テーマに言及した人数が多いことは、重要度が高いことを意味しません。経営企画部長が1回だけ強く言った論点が、担当者5人の軽い言及より意思決定に効くことがあります。発言者数は表に残したうえで、ステークホルダーの立場の違いを併記して読みます。

食い違いの「判断メモ」はClaudeの提案にすぎません。誰に追加で聞くかは、ステークホルダー間の関係を知っている人が決めます。

分析の結果をチームで見るなら、Team・Enterpriseプランでは、プロジェクトを共有できます。閲覧のみの権限(Can view)では内容の確認とチャットができ、編集権限(Can edit)ではプロジェクトの指示や知識も変えられます。逐語録そのものは編集させず、閲覧権限で共有する運用が考えられます。

同じ要領で、アンケートの自由記述をテーマ別に分ける手順は研修後アンケートの集計・分析にあります。会議1回分の文字起こしを要約するだけなら、Claude議事録の実践プロンプトのほうが短く済みます。

横断分析の型を再利用する

上の4段階は、インタビューの本数や題材が変わっても使えます。次回に回すときは、プロンプトの「テーマの個数」「列の見出し」「食い違いの種類」だけを差し替えます。IDを振る、1本ずつ抜き出す、統合する、機械で照合する、という順序は変えずに残してください。引用の照合を最後に置くことで、報告書に載る一文一文が原文に戻れる状態になります。

この記事を共有:XはてブLinkedIn