![見出し画像](https://assets.st-note.com/production/uploads/images/173271215/rectangle_large_type_2_f675522929e82929d38ce85c4f7a69b2.png?width=1200)
ChatGPTに、webデータから超簡単に統計解析をやってもらう話
エクセルでの集計作業、そろそろAIで効率化しませんか?
今回は、ChatGPTを「統計処理アシスタント」として活用する方法を分かりやすく解説します。
本記事は以下の記事に触発されて書きました。
この記事では、ウェブサイト上のデータを取り込んで集計する話が取り上げられています。これをChatGPTなどの話題の生成AIでやろうとなさっています。
目の付け所は間違っていません。が、惜しい! もう少しの工夫で、より短時間で結果を得ることが出来た状況でした。
しかし、これは生成AIを実務に活かす好例であり、ケーススタディとして誠に手頃なネタとも言えます。そこで、このネタをそのまま使わせていただき、同じことを私なりの方法で再現してみようと思います。
問題提起
さて、当該記事の中で筆者の足立さんは次のように仰っています。
ただ、ChatGPTは、てきとーランキングなので、微妙に違うところがあるので、やっぱ、生成AIでは、こういう数字がシビアな内容のやりとりはちょっと難しいですね・・・
ざっくりしたプロンプトを与えると、たしかにChatGPTはそこまで厳密な仕事が求められているとは判断せずに、あたかも目視で資料を斜め読みしただけの人間のような「てきとー」モードで回答を寄越すことがあります。そんなところまで人間を真似せんでもええんじゃが。
これは仕方がないことなのでしょうか。諦めるしかないのでしょうか?
答えは、ノーです! 工夫次第で「てきとー」を打破することは可能なのです。
ChatGPTには「プログラムを作って実行」させる
元来、ChatGPTはデータをもっと厳格に扱う能力を持っています。裏でしっかりしたpythonプログラムを走らせて、その結果を回答に活かすことができるのです。ただし、そのような指示を受ければの話!
つまり適切なプロンプトが必要なのです。
最終的に欲しいものをダイレクトにAIに突きつけるのを止めてみましょう。その代わり、欲しい結果を出すためのプログラムを作って実行するように要求するのです。
実践
ひとまずデータを持ってくる
まずはhttps://fandy.online/project/kizuna/からデータを取得。ブラウザ上で当該データをコピーし、PC上のエディタにペーストし、テキストファイルとして保存。この手順は、足立明穂さんの記事で言及されているのと同じです。
みーちゃん『私らしく輝く人生の見つけ方 ~50代からの勇気ある一歩が導いた宝物 ~』に投票する
無料
残り:99,548個
これを選択する
支援者:451人
盛田紗八『ご縁学』method of 【G o e n】~Humanity Connectionsに投票する
無料
残り:98,439個
これを選択する
支援者:1,560人
稲月仁一『絆を深める言葉の裏側~挑戦する勇気×チャット GPT がつなぐ心の対話~』に投票する
無料
残り:99,688個
これを選択する
支援者:311人
こんな感じで630行ですね。
ひとまずデータを観察する
データを持ってきたら、まずやるべきことはその内容・構造の観察です。本件では、次のようなポイントを押さえることができますね。
5行でワンセットとなり、ひとつのレコードを表現している。
各レコードの一行目に応募者名とタイトルが含まれている。そのうち左鉤括弧の左側が応募者名である。
各レコードの5行目に支援者数が含まれている。数値は3桁ごとにカンマが入った半角数字で表現されている。
perlやpythonを知っていれば、すかさずここからtsv、csvファイルを作るスクリプトを作ってしまうところですが、今回は後学のため、ChatGPTに全面的に頼り、あえて自力ではプログラムコードを一切書かないという方針で行きたいと思います。
いよいよChatGPTに仕事してもらう
ChatGPTにアクセスします。私は月20ドルの有料会員ですが、今回は手順のお試しということで、あえて無料枠でログインして作業を進めてみます。
セーブしたテキストファイルをアップロード機能を使ってChatGPTに提示。その上で、以下のようにプロンプトを投入しました。
![](https://assets.st-note.com/img/1738712529-LxD9a80YNpQ5dusAlZGj1W6X.png?width=1200)
すると、ChatGPTは何やらプログラムを書き始め、実行・結果の要約の出力と、指示したとおりに作業を進めてくれたようです。
![](https://assets.st-note.com/img/1738712573-VHwvhCqD4maS923Rkb0juPNf.png)
最終的に「上野利恵子さん」という人がベストであるという結果を出してきました。
しかし、ここでそれを鵜呑みにしてはいけないのでした。
問題発生?
参照先のサイトを直接チェックすると、最多支援者数を獲得しているのはこの方。
![](https://assets.st-note.com/img/1738712833-AfCupjlc6P8Hz71T0tB3YiWv.png)
にもかかわらず、今しがたのチェックでは全く別の人が最上位との結果が出てきました。間違った結果を出してきているのです。
一体どういうことか? 数分考えて思い出しました。
各レコードの5行目に支援者数が含まれている。数値は3桁ごとにカンマが入った半角数字で表現されている。
最初にこの様に観察していたにもかかわらず、プロンプトでは「5行目の数値が支援者数である」としか説明していませんでした。3桁ごとに入るカンマの説明を忘れているじゃありませんか。
ChatGPTはこのプロンプトの文言を愚直に守ろうとしました。「当該行にて最初に見つかる0-9までの数字の列」を拾うようにプログラムを組んでしまったのです。これでは、"2,069人"という文字列からは、"2069"でも"2,069"でもなく、"2"という数値しか拾われない結果となってしまいます。
もっと高性能なAIモデルなら、この辺も自律的にうまく判断して処理してくれたのかもしれませんが、ここは人間が教え諭し導いてやらねばならないようです。ここはチェックが甘かった。というか自分で事前チェックした結果をフォローできていなかった。反省しつつプロンプトを追加投入します。
![](https://assets.st-note.com/img/1738712636-SAxmQWDZqXUKPn5pV3EMwIus.png)
さあ、どうでしょう。もういちどレスポンスを待ちます。
![](https://assets.st-note.com/img/1738712655-2xljRQDhvZSTobwCHXzrN4Au.png)
今度はうまくいったようです。
一度でうまく行くと思うな
このように、段階ごとにAIのふるまいをチェックすることは重要です。
このため、最終的に欲しいのが「最多支援者数を獲得した応募者」だけであったとしても、「すべての応募者のリストを支援者数でソートしたもの」をまず要求してみています。過程を幾つかのステップに分割し、それぞれのステップでこういうチェックポイントを設けるといいと思います。
今のところ有料課金しないと使えませんが、最新のo3だと、まずAIモデル自身の思考の過程を丁寧に表明してくれます。どこかで道を間違えた場合の軌道修正が、さらに効率的に進められることになります。
道を間違え始めたら、その直前のステップから再挑戦です。
教訓
これまでの流れの中でも、生成AIの使いこなしに関して留意すべきポイントがいくつもありました。
仕事は分割して統治しろ。
一度でうまく行くと思うな。外堀から攻めろ。指示を繰り返せ。
人間がやるべきことは人間がやれ。AIにさせるな。
AIに任せるべきことはAIにやらせろ。人間が手を出すな。
まとめ
今回は、ChatGPTを使ってウェブサイト上のデータを集計する方法をご紹介しました。ポイントの一つは、ChatGPTに「プログラムを作ってもらう」こと。あえてすこし回り道させることで結果の確実性を確保できることもあることがわかりました。そして、そのプログラムが意図通りに動作するか「ステップバイステップで確認する」ことの重要性もわかりました。人間には監督としての重要な役割があります。
ChatGPTをはじめとする生成AIは強力な助手になります。ただ、それは指示次第です。指示が不適切だとAIも的外れな結果を返してきがちなのは、人間の部下や業者に仕事を任せようとする場合と変わりありません。
今回の記事を参考に、ぜひAIとの付き合い方についての理解を深め、活用してみてください。そして、紙の帳簿やエクセルからの心地よい開放感を体感しましょう!