対話の時代・ブログ保存ツールからの続き
2022年11月30日にChatGPTが公開されてから,そろそろ3年目を迎える。おかげさまで,このブログがAIとの対話によって侵食されてきた。それを定量的に分析するために,前回ブログ保存ツールで保存したpdfファイルの分析とカウントをするプログラムを作ろう(作らせよう)と考えた。実際の分析は11月の末日を待ってからになる予定。
2日かけて,3回目のリセットでようやく目的のものにたどり着いた。修正を繰り返すとどんどんドツボにハマっていくので,今のレベルでは仕様を再確認してリセット(最初からやり直し)がよい。なお,これは自分専用だ。なぜならば,Q(koshix):,A(ChatGPT):のような構造に準じたものだけをカウントするように設計したためだ。
最初の頃はでき上がったpythonコード(160行ほど)を自分で実行してチェックしていたが,そのうち,あらかじめ正解データを入れて,ChatGPT側でチェックするようにした。途中でOCR機能が必要だとかいいだして実行時間が2桁大きくなってしまったので,それはやめてもらった。ほとんど通常のデバッグ作業のように対話が進んでいく。
Q(koshix):自分のブログの一月分のデータ(pdfファイル)のテキストを分析したいと思います。(1) 毎日のブログで,生成AIとの対話を使っているかどうかを調べます。(2) 当月の1-31日(月末)の各日について,使っていれば○,そうでなければ△のリストを出します。 例えば,以下のような形式のリストのcsvファイルになります。 2023-12 1,○ 2,△ ・・・(3) 日付の区切りは例えば,2 0 2 2 年 1 2 ⽉ 2 ⽇ ⾦ 曜 ⽇,のようなものになります。 ・pdfファイルは当月の末日から初日に向かって並んでいます。 ・pdfファイルの初日以降に前月分のブログがある場合がありますが無視してください。
(4) 判定条件は以下のとおりです。・生成AI発言を使っている場合は,Q: A: の構造が段下げの状態で含まれている。 大文字小文字は区別せずに,{Q,Q Users,Users,Q(koshix): }などと対応する{A,A ChatGPT,ChatGPT,A(ChatGPT-5):} など につづくテキストのブロックがある。 ・ChatGPT-5 のところには,ChatGPT,Gemini,Claude,Perplexity,Grok,DeepSeek,Qwenなどの文字列を含んだ各バージョンの名称が入ることがある。 ・それ以外の要素は加味しなくても良い。(5) これを実行するpythonスクリプト名を ai.py とすれば,コマンドラインで ai.py 2025-10.pdf とかai.py 2024-*.pdf などとすれば,2025年10月分のファイルの分析や,2024年の1月から12月のファイルの分析がワイルドカードでできるようにします。(6) 上記の例で結果出力は,2025-10.csv,2024-01.csv 〜2024-12.csv (12ファイル) が得られます。複数月を指定した場合は,それぞれの月の○の数を集計したものの 月別リストを summary-2024.txt などとしてまとめ出力してください。(7) 見本ファイル(2023-05.pdf)とコメント付きの正解のcsvテキストを添付(省略)します。質問があれば教えてください。A(ChatGPT-5 Thinking,24秒):意図:(回答略)できること:(回答略)スクリプトと実行例:(回答略)使い方:(回答略)実装の要点(抜粋):(回答略)既知の限界と調整ポイント:(回答略)追加の検証や、「この月のこの日が××のはず」などの正解表に合わせた誤判定修正(パターン拡張や閾値変更)もすぐ対応します。まずは上記 ai.py と 2023-05 の結果をご確認ください。Q(koshix):(1) 28,○ と 30,○ が再現できていません。その理由を教えてください。(2) csvファイルの末尾に○の数の集計値を与えてください。(3) 有る年度の複数のpdfファイルを対象にした場合,summary-2023.txtのようなまとめファイルをください。それは,各月名と○の数がならんだcsvファイルです。 2023-01, 5 2023-02, 9 ・・・ 2023-12, 10 などのようなものです。A(ChatGPT-5 Thinking,17秒):ありがとうございます。ご指摘の3点、以下の通り対応しました。(1) 28,○ と 30,○ が再現できていなかった理由(回答略)(2) CSV の末尾に ○ の集計値を追加(回答略)(3) 年度まとめファイル summary-YYYY.txt(回答略)更新済みスクリプト(rev2):ai.py を差し替え済みです。ダウンロードしてそのままお使いください。スクリプト:Download ai.pyサンプル出力(今回のPDFに対する再解析結果)2023-05.csv(末尾に 合計○ を追加済み)summary-2023.txt(CSVスタイル)必要なら、Q/Aラベルの追加(例:質問/回答、ユーザ の表記揺れ、モデル名の拡張など)や、「Q→Aの順序」判定の厳格化/緩和(例えば同一行Q/Aを○とみなす等)も即調整します。Q(koshix):ほとんどよくなりましたが,どうして6が○になりますか。△のはずですが。A(ChatGPT-5 Thinking):ご指摘ありがとうございます。原因の分析と修正を反映しました。なぜ「6」が誤って○になったのか誤判定の典型パターンが当たっていました:「Q&A(イベント案内・章タイトル)」型:本文中に “Q&A” や “Q & A” の語があり、同じ日の本文内に “ChatGPT” 等のモデル名が登場するだけで、「Q→A の対話」と誤認。ラベルなしの一般語:User(ユーザー)や ChatGPT が見出しや説明文中に現れるだけでも、(緩め過ぎた rev2 の)正規表現が「Q/Aラベル」とみなしてしまう。つまり 「Q(やUser)+ … + ChatGPT」 の単なる共起を、「行頭の話者ラベルによる Q→A 対話」と誤解するケースがあり、6日が○に転んでいました。対策(rev3)(回答略)ダウンロード(回答略)仕様の最終確認(回答略)もし「この日も○/△が違う」といった箇所があれば、その日の**短い抜粋(スクショでも可)**をお知らせください。検出器をピンポイントで微調整します。Q(koshix):30が○から△に変わりました。これはなぜですか。テキストを添付します(略)。A(ChatGPT-5 Thinking,9秒):原因はシンプルです。rev3 で検出条件を“行頭ラベル+コロン必須”に厳格化したため、30日の本文にあるUser(単独行、コロンなし)ChatGPT(単独行、コロンなし)という**「見出し型の話者ラベル(コロンなし)」**が Q/A ラベルとして認識されなくなったからです。添付テキストはまさにこの形式で、各ラベルの次の行から本文が始まっています。そのため rev2 では○、rev3 では条件を満たせず△になりました。どう直せば 30 日が○に戻るか(最小変更)(回答略)必要であれば、この修正を組み込んだ ai.py (rev4) をすぐにお渡しします。Q(koshix):ai.py(rev4)をください。A(ChatGPT-5 Thinking):お待たせしました。rev4 を作成して動作確認済みです(5月の○の合計は10に変化:6日=△のまま、30日=○に復帰)。スクリプト本体,検証出力,年次まとめ,rev4の要点など(回答略)
これでほぼできあがり,第3回の所要時間は30-60分ほどだろうか。
図:AIとの対話(Imagenが私の正面写真から生成した横顔)
[1]pdf2aiのソースコード(2025.10.21)

0 件のコメント:
コメントを投稿