OpenAIのCode Interpreterを使ってみたら、すごいアクセス解析ツールが作れそうだった!

OpenAIのCode Interpreterを使ってみたら、すごいアクセス解析ツールが作れそうだった!

2023-08-28

突然ですが、Excelの集計作業は好きですか?
私は嫌いじゃないです(面倒だけど)。

しかし、ChatGPTの「Code Interpreter(※コードインタープリター)」を使ってみて、実は嫌いだったのだと気づきました。

(※コードインタープリター)は「Advanced Data Analysis」に改名されました。

2023/8/29追記:この記事を公開した翌日に「Code Interpreter」は「Advanced Data Analysis」に名前が変わっていました。変化のスピードの速さが嬉しくも記事が1日で古くなり悲しいです笑。名前からして、今後はより今回のようなデータ分析方向が強化されるのだと思います。楽しみです。

【前段】Code Interpreterとは何か?

Chat GPTに二つの機能を追加する、OpenAI公式のプラグインのようなものです。有償プランの設定でONにすると使えます。

ONにすると

下記ができるようになります。

  • 大きなファイルのアップロード(512MBまで) ※2023/8/24現在
  • Pythonによるプログラムコードの実行

何が凄いのか?

ChatGPTでもできることCode InterpreterをON
マクロなどのプログラム作成そのプログラムをChatGPT上で実行してしまう
少量のデータの分析や要約大量のデータも分析や要約対象にできる

Code Interpreterで、小さな巨人が「巨人族」に変貌する

今までのChatGPTは「もう少し大量の仕事をしてくれたらめっちゃ楽なのに!」ということが多いです。たとえるなら、世界中の叡智をもつ「小さな巨人」。

ところが、Code Interpreterを使うと、大量のデータを処理できるようになります。そして、どんどん自分でプログラムを作りながら、勝手に要約や分析の作業を進めてくれます。

つまり、ChatGPTが大量の仕事をこなす「巨人族」に進化するのです。これは熱い。

どんな分析をやってくれるのか?

言葉で指示するだけで、ものすごい分析作業をやってくれます。そもそもPythonは、数学に強いプログラミング言語ですので、できない処理がないと言っても過言ではありません。以下に例をあげてみますね。

使うデータ

Googleサーチコンソールのデータを使います。ゴルフサイトです。

やってみた分析は4種類です。

  1. 数値の分析
  2. クラスター分析
  3. 単語の分析
  4. 感情分析

1.数値の分析

よくあるケースの「順位が高いのにクリック率が低いデータ」「順位が低いのにクリック率が高いデータ」を抽出してもらいました。

「やってみてください」とお願いするだけの、とても簡単なお仕事です。

2.クラスター分析

データを似たもの同士のグループにわけるクラスター分析。階層クラスターか非階層クラスターをまず考え、行列計算を・・・とよく分からないので「クラスター分析をやってくれ」とお願いします

でてきたクラスターは当たり前といえば当たり前。でも自動でやってくれるのが凄いですね。

各クラスターに含まれる単語を抽出させるのも簡単です。

3.単語の分析

各クラスタに含まれる単語を抽出し、推測してもらうこともできます。

クラスター分析の結果をまとめると、こんな感じ。

  • クラスタ0・・・高いクリック数と表示回数。ゴルフの装備や場所に関するもの
  • クラスタ1・・・中程度のクリック数と表示回数。ゴルフの社交的側面や初心者向けの情報
  • クラスタ2・・・低いクリック数と表示回数。ゴルフの技術や打ち方に関する情報

4.感情分析

最後に、各クラスタにおいて感情を表すような単語の傾向があるかを調べました。

Code Interpreterができない処理

今まで見て貰ったように、Code Interpreterを使えば、文章で指示するだけで、驚く程の分析を勝手にやってくれます。しかし、改めてみてみると完璧な訳でもありません。

適当に指示しても意味がない

今回、Googleサーチコンソールのクエリデータを元にクラスター分析を行いましたが、よく見てみれば、クラスターの分類は誰でも思いつくようなものです。クリック数が多ければ、表示回数も多いのは当たり前ですね。つまり、やる前から答えが決まっているわけで、そのようなデータをクラスター分析するのは無意味です。

解釈をそのまま信じると危険

無意味なクラスター分析を続けた結果、最終的にこんな傾向がでました。

  • クラスタ0・・・高いクリック数と表示回数。特に感情傾向はない。
  • クラスタ1・・・中程度のクリック数と表示回数。ゴルフを楽しむことを求めている(?)
  • クラスタ2・・・低いクリック数と表示回数。感情傾向はない。

ゴルフが楽しい記事をかけば、中程度のクリックになる => やばいアナリストの分析

こんな分析は使えないですね。やはり、どのようなデータを使っていて、どのような分析をすべきか?という推測が最初にないと、イマイチな回答になってしまいます。

日本語が弱い

残念ながら、ChatGPTは日本語が苦手でエラーがでやすいです。
本格的に文章の感情分析をやりたい場合は、形態素解析をやる必要があるのですが、日本語だとやってくれません。

(余談)Code Interpreterが実際に行った「形態素解析に近い方法」とは?

実際にどんな処理をしたかは、下記の「Show work」ボタンを押すと表示されます。

Pythonのコードが表示されます。変数などはその前の処理から引き継ぎ、一定期間保持されます。

Excelの集計が時代遅れになる?

とはいえ、データを分析したかった人にとってCode Interpreterは強力すぎるツールです。

冒頭で「Excelの集計が嫌いだったことに気づいた」と書いたのは、自然文で命令すれば、様々な集計を行ってくれるCode Interpreterの挙動を目の当たりにしたからです。

どうやら私の「Excel作業」は下記のようになっていたようです。

  1. Excelでデータを整形する(嫌い)
  2. データを集計する観点を思いつく(好き)
  3. Excelでクロスとかいろいろ手探りで集計してみる(嫌い)
  4. 新しい発見があり、さらに新しい観点を思いつく(好き)
  5. Excelでいろいろ集計してみる(嫌い)

(嫌い)のところは「時間のかかる作業」です。これがCode Interpreterを使うと下記になります。

  1. ChatGPTに「整形せよ!」と命ずる(便利)
  2. データを集計する観点を思いつく(好き)
  3. ChatGPTに「○○で集計せよ!」と命ずる(便利)
  4. 新しい発見があり、さらに新しい観点を思いつく(好き)
  5. ChatGPTに「○○で集計せよ!」と命ずる(便利)

好きな作業だらけになり、自分でやるには骨が折れた統計や機械学習的な計算まで命令すれば自動でやってくれます。特に感情分析までできるのは凄いです。まだまだエラーも出やすいですが、すごい未来です。

もちろん、私はExcelやその開発に関わったJoel Spolskyを尊敬していますし、Excelは革命を起こしたソフトだと思っています。しかし、Excelが馬車だったすれば、Code Interpreterは自動車です。そもそもの輸送手段を変えてしまいます。

すごいアクセス解析ツールが作れる

QA開発チームは「レベルがあがるウェブ分析ツール」を作りたいと考えています。QAを使う各チームメンバーの施策アイディアが、データを武器にどんどんレベルアップするようなツールです。

この時、悩みの種だったのが、従来のグラフや表だけの数学っぽいツールでは、その目標は達成できないということでした。データを使う前にやる気がなくなるからです。そこで、QA ZEROではヒートマップやセッションリプレイ機能も保有し、より視覚的なデータを用いて、アイディア出しのお手伝いをしています。

しかし、本来であれば、今回ご紹介したような感情分析やクラスター分析などが使えるにこしたことはありません。この分析が使えれば、よりデータに基づく思考力はパワーアップします。そしてQA ZEROはGoogleサチコのキーワードや、自社サイトの文章データも大量に保存するため、今回おみせした言語解析系の処理と組み合わせると、とても高度な推測が可能となります。

いよいよ材料が揃ってきました。

ChatGPTとAPI連携させれば、誰でも高度な分析を使いこなし、より良い施策アイディアを生み出す未来を創ることができます。もちろん事前のデータ整形(形態素解析など)が必要なことは多いですが、これはQA側で実行すれば実現可能です。また仮にChatGPTのパフォーマンスに問題があったとしても、最近はオープンソースのAI(LLM)も出てきたりしますので、いろいろ試しながら、いつかは完成するでしょう。

「すべての人にデータに基づくインスピレーションを」を合い言葉に、QA ZEROは開発を続けていきます。