長い資料をAIに読ませる型。引用を義務づけて、原文にあるか機械で照合する

2026-09-21AIの使い方

長い資料の要点をAIに出させると、もっともらしい文が並ぶ。そこに原文にない話が1行混ざっていても、読んで気づくことはできない。

1行ずつに原文の引用を付けさせて、その引用が原文に実在するかを照合する。94ページ、79,538字のモデル就業規則で試した。作り話の2件は両方とも照合で落ちた。

以下の照合は、2026年9月21日に厚生労働省のモデル就業規則(令和7年12月版)のPDFを文字にして、手元のPythonで実際に走らせた結果だ。要点と引用は、照合の動きを確かめるために自分で書いたものを使った。

要点だけ返させると、確かめようがない

要約の間違いは2種類ある。原文にないことを足すのと、原文の数字を取り違えるのと。どちらも文としては自然に読める。

自然に読めるから、読み返しても見つからない。79,538字の原文に戻って探すのは、要約を頼んだ意味がなくなる。

引用を付けさせると、確かめる対象が変わる。要約が正しいかではなく、引用が原文にあるかを見ればいい。文字列の照合なので機械にできる。

引用が原文にあれば、少なくともその1行の根拠は存在する。引用が見つからなければ、その行は疑う。要約の全体を判断するのではなく、行ごとに切り分ける。

引用を義務づける依頼文

添付の資料から要点を出してください。

・1行につき要点を1つ書く
・各行の末尾に、根拠になる原文を「」でそのまま引用する
・引用は20文字以上にする。要約や言い換えをしない
・引用できない要点は書かない
・原文にない数字、日付、固有名詞を書かない

3行目が効く。短い引用だと、あとの照合が意味をなさない。理由は下に書いた。

4行目も外せない。これがないと、引用のない要点が混ざる。引用がない行は照合できないので、そこから作り話が入る。

そのまま照合すると、本物の引用も外れる

照合は文字列を探すだけだ。ところが、そのままでは通らない。

7件の引用で試した。5件は原文にある本物、2件は私が作った嘘の引用だ。

そのまま探すと、通ったのは2件しかなかった。本物の5件のうち3件が「原文にない」と出る。

原因はPDFの改行だった。79,538字のうち10,111字が空白と改行で、本文の途中に改行が入っている。引用する側は自然な1文として書くので、改行の位置が合わない。

空白と改行を両方から除いてから比べると、本物の5件すべてが通った。嘘の2件は両方とも通らない。

import re, unicodedata
def norm(s):
    return re.sub(r"\s+", "", unicodedata.normalize("NFKC", s))

NFKCで全角と半角も揃える。PDFの資料は英数字が全角になっていることがあるので、ここも合わせておく。

引用は20文字以上にさせる

短い引用でも照合は通る。ただし、通ったことに意味がない。

別の資料から適当に切り出した文字列が、この就業規則の中に偶然あるかを400回ずつ試した。

別の資料から切り出した文字列が偶然一致する割合。4文字で39.5%、8文字で11.2%、12文字で3.2%、20文字で0.0%

4文字だと39.5%が一致する。8文字でも11.2%。12文字で3.2%、15文字で1.5%まで下がり、20文字では400回とも一致しなかった。

つまり、10文字程度の引用は偶然でも当たる。照合が通ったからといって、その要点の根拠があることにはならない。

上の7件でも、「監督若しくは管理の地位にある者」と「労基法第90条」の2件は20文字未満だった。原文にはあるが、短いので根拠としては弱い。依頼文で20文字以上と書いておけば、この2件は最初から出てこない。

照合までの手順

4段階になる。

資料を文字にして、要点と引用を出させ、空白と改行を除いてから原文にあるか照合し、20文字以上かを見る流れ

資料を文字にするところは、PDFならテキストを取り出す。スキャンした画像のPDFだと文字が取れないので、この方法は使えない。取り出した文字を1つのファイルに保存しておく。

要点と引用を出させたら、その結果もファイルに保存する。照合はこの2つのファイルを突き合わせる。

手元ではtools/quote_check.pyという短いスクリプトで走らせている。要点のファイルから「」で囲まれた文字列を拾い、原文にあるかを見て、原文にあった件数、短すぎる件数、原文になかった件数を出す。

原文 79,538字(空白を除くと 69,427字) / 引用 6件
  原文にあった      2件
  短すぎる(20字未満)2件
  原文になかった    2件

原文になかった件数が0になるまで、その行を消すか、引用を直させる。

章で分けてから渡す

79,538字を一度に渡すと、後半の要点が薄くなる。章の区切りで分けて、章ごとに要点と引用を出させる。

分ける前に、章ごとの文字数を数えておく。見出しの位置で切って引き算するだけだ。

このモデル就業規則は14章あった。いちばん長いのが第6章の賃金で16,351字、次が第4章の労働時間、休憩及び休日で14,623字。いちばん短いのは第11章の職業訓練で380字しかない。

1回に渡すのが16,351字なら、要点の粒が揃う。全体の5分の1なので、出てくる要点の数も5倍になる。読む側の手間は増えるが、落ちる情報は減る。

短い章はまとめて渡してよい。380字の章を単独で処理しても、要点は1行か2行にしかならない。5,000字を目安に、そこに届かない章は隣とくっつける。

章の文字数を数えると、その資料のどこが厚いかも分かる。就業規則なら賃金と労働時間で全体の4割近くを占める。読む順番を決めるときの材料になる。

照合を通った引用から一覧を作る

照合まで済んだら、要点と引用を1行1件の表にしておく。あとで使うのはこの表になる。

列は、章、要点、引用、引用の文字数、原文の位置の5つ。原文の位置は、照合したときに見つかった文字数の番号を入れる。

i = nsrc.find(norm(q))

この位置があると、あとで原文に戻るのが速い。要点から条文に飛べる形になっていれば、質問されたときにその場で開ける。

引用の文字数の列は、20文字を下回る行を見つけるために持つ。条件付き書式で20未満を色付けしておけば、弱い根拠の行が一目で分かる。

この表を作ってしまえば、資料そのものを読み直す機会は減る。読み直すのは、照合が通らなかった行と、20文字未満の行だけになる。

照合を通ったあとに残るもの

機械で見られるのは、引用が原文にあるかどうかだけだ。3つは残る。

1つ目は、引用の切り取り方が適切かどうか。条件付きの文から条件の部分を落として引用すると、照合は通るのに意味が変わる。「ただし〜の場合を除く」の前半だけを引くのがこれにあたる。

2つ目は、その要点が資料の中で重要かどうか。細かい規定を要点として並べ、肝心の条文を落としていても、照合は全部通る。

3つ目は、資料そのものが最新かどうか。モデル就業規則は改訂されるので、古い版を読ませれば古い内容の要点が出る。版と日付を自分で確かめる。

数字の照合は別に要る。金額や日付が本文に出てくるなら、AIが書いた文書を照合する記事の方法で当たる。

踏んだ失敗

引用を付けさせずに要点だけ出させていた。読んで違和感がなかったので、そのまま社内の資料に使った。あとで条文を見たら、書かれていない期限が入っていた。自然な文だったので誰も気づかなかった。

そのままの文字列で照合して、本物の引用を作り話だと判断したこともある。上の実験でいえば5件中3件がこれにあたる。全部が嘘に見えて、依頼のしかたが悪いのだと考えていた。原因が改行だと分かるまで時間を使った。

短い引用で満足していたこともある。「労基法第90条」のような引用が並んでいて、全部照合できるので安心していた。条番号だけでは、その要点が正しいかは何も言えない。

資料を分割せずに全部渡していたこともある。94ページを一度に渡すと、後半の要点が薄くなった。章ごとに分けて、章ごとに要点と引用を出させる形に変えた。依頼文に型と引用の義務を書く考え方は議事録の記事と同じだ。

確認していないこと

どの道具に頼むと何が起きるかは確認していない。上の要点と引用は、照合の動きを見せるために自分で書いたものだ。自分の環境で同じ照合をかけて、通らない引用が何件出るかを測ってほしい。

画像だけのPDFは扱えない。文字が取り出せない資料をどうするかは確認していない。

20文字という基準は、この1つの資料での実験から出した数字だ。資料の長さと分野で変わる。短い資料なら偶然の一致はもっと減る。

社外の資料や機密を含む資料を渡してよいかも、ここでは扱っていない。返信の型と同じで、渡す前に社内の規程を見る。メールの場合は問い合わせメールの記事に書いた。

出典(2026年9月21日確認): 厚生労働省のモデル就業規則(令和7年12月版)のPDFを文字にして使った。

AIの使い方要約引用資料確認