KINTO Tech Blog

ChatGPT

ChatGPT(GPT-4)のAdvanced Data Analysis(旧Code Interpreter)、日本語フォントでグラフや画像、PDFファイルを出力する方法とTwitterの分析

Aoi Nakanishi
Aoi Nakanishi
Cover Image for ChatGPT(GPT-4)のAdvanced Data Analysis(旧Code Interpreter)、日本語フォントでグラフや画像、PDFファイルを出力する方法とTwitterの分析

はじめに

先週末にOpenAIの発表があり、ChatGPT(GPT-4)のCode Interpreterという機能が公開されました。内部でPythonが動いており日本語や英語で指示するだけでノーコードでデータの分析などを行うことができる便利なサービスです。

そのままではグラフ描画などで日本語の表示ができないのですが、「日本語フォント表示する方法を見つけ出した」のでこちらの記事でご紹介します。

※8月29日にCode InterpreterからAdvanced Data Analysisに名称が変更になりましたが記事中ではCode Interpreterのまま記載しております

この記事で学べること

  1. Advanced Data Analysis(旧Code Interpreter)を使用して日本語フォントでグラフや画像、PDFファイルを出力する手順
  2. Advanced Data Analysis(旧Code Interpreter)でTwitterのログ分析の解析方法

前置き不要という方はCode Interpreterで日本語フォントを使ってグラフや画像、PDFを出力する手順だけを知りたい方はこちらからどうぞ

自己紹介

自己紹介が遅れましたが、KINTO FACTORYのリードエンジニアをしている中西 葵です。本業の開発とは別にテックブログやイベント運営、Twitterアカウントの運用も行っており、いわゆる技術広報的な取り組みも一部行っております。

前提条件

  • ChatGPTに課金していること(ChatGPT Plus)
  • Code Interpreterを有効にしていること

以上の2点です。

Code Interpreterの有効化

Code Interpreterの有効化はSettings -> Beta Features -> Code Interpreterから以下の画像の通りに有効化してください。

ChatGPT4 Beta Feature Settings

日本語化までの道のり

指示なしでは自動的に日本語での描画が行われないことがわかったので、ChatGPTに探りを入れていきましょう。

〇〇を日本語表示して!

まずは「日本語表示して」と指示してみましたが、現在の環境では日本語フォントを埋め込むことができないと返されてしまいました。

CodeInterpreter No Japanese Text

日本語表示できない理由を探る

現在の環境では」という一文に注目し、グラフ画像をどのように生成しているのかを尋ねてみます。

Code Interpreter draw graph with Matplotlib and Seaborn

日本語表示のやり方を聞いてみる

PythonとMatplotlibを使っていることがわかったので日本語表示する方法を聞いてみます。

Matplotlib uses rcParams to apply Japanese fonts

例として出てきたコードがこちらになります。

Code Interpreter cannot access to internet

インターネットアクセスが無効化されているため、フォントのダウンロードやシステムの設定変更はできないと言われてしまいました。ファイルのアップロードは可能ですが、ダウンロード等はできないようです。また別で確認したところ、システム関数なども使えないようになっているようです。

日本語フォントファイルのアップロード

ダウンロードはできない」との事なので逆にアップロードはできるのではないか?との疑問から早速聞いてみます。

日本語フォントファイルをアップロードしてMatplotlibで使えるようにしたい

ファイルのアップロードなら可能とのことなので早速試してみます。

日本語フォントのダウンロード

ChatGPTから教えてもらったサンプルコードにもNoto Sansのフォントが書かれていたので今回はNoto Sansを使うことにします。

https://fonts.google.com/noto/specimen/Noto+Sans+JP
からフォントをダウンロードします(試していませんが他のフォントでも利用可能)

日本語フォントのをアップロードしてmatplotlibの日本語化

早速日本語でグラフを生成してみましょう

日本語フォントのアップロード

画面の下にあるプラスボタンからファイルをアップロードします。合わせて「グラフの描画を行う際にはこちらの日本語フォントを利用してください」のようにグラフ描画時にアップロードした日本語フォントを使用するように指示してください。

Upload file

Choose font

Add message

Result

ChatGPT(GPT-4)のCode Interpreterで日本語フォントをつかう方法のまとめ

以下の手順で日本語のグラフを表示することができるようになりました。

  1. 日本語フォントをローカルにダウンロード
  2. ChatGPTに日本語フォントをアップロード
  3. ChatGPTにグラフ描画時のフォントを指定
  4. 必要なデータをアップロードしてグラフを描画

また、グラフ描画時の凡例が日本語化されない場合は、

凡例も日本語化してください

と伝えて再生成することで凡例部分も日本語化することができます。ポイントはChatGPTにアップロードした日本語フォントファイルを使って日本語を描画するように指示するところです。PDF等も同じ手順で日本語を正しく表示可能なファイルを出力することができます。

Twitterログの分析

日本語で分析結果を出力できる準備が整ったので早速Twitterログの分析を行っていきましょう。

https://twitter.com/KintoTech_Dev

こちらのTwitterアカウントのデータ分析を行います。Twitterアナリティクスから細かなデータをダウンロードして様々な分析を行うことができますが今回は既にパプリックに公開されているデータを元に分析を行います。利用するデータは以下の通りです。

  • ツイート本文
  • ツイート日時
  • リツイート数
  • リプライ数
  • いいね数

これらのデータはアカウントオーナー以外でもアクセスできる一般に公開されているデータとなります。

CSVファイルのアップロード

フォントをアップロードしたとき同様にアップロードボタンからファイルを選択し分析対象のデータをアップロードします。今回はCSVファイルをアップロードしましたが、Pythonで扱えるデータであれば基本的に何でも読み取ることができるようです。またアップロード可能なファイルサイズを確認したところ正確な数字は教えて頂けませんでしたが、数百MBのサイズが受け入れ可能とのことです。

Upload file

ChatGPTにファイルをアップロードし分析を依頼します。いくつかのChatGPTからの質問に答えたあと出てきた分析結果は以下のとおりです。インプレッション数、リツート数、いいね数、本文の分析それぞれの解説もしてもらった結果は以下の通りです。

インプレッション数の分析

Impression

ChatGPT: 特定の時間帯や曜日に明確な傾向は見られません。しかし、火曜日の特定の時間帯では他の時間帯よりもインプレッション数がやや高いようです。

KINTOテクノロジーズでは火曜日に記事出すことが多く、公開と合わせてツイートをしているためにこのような分析結果が出ているようです。

リツイート数の分析

ReTweet

ChatGPT: こちらも特定の時間帯や曜日に明確な傾向は見られません。しかし、火曜日の特定の時間帯では他の時間帯よりもリツイート数がやや高いようです。

インプレッション数と比例してリツート数も多いようです。

いいね数の分析

ReTweet

ChatGPT: いいね数も特定の時間帯や曜日に明確な傾向は見られません。しかし、火曜日の特定の時間帯では他の時間帯よりもいいね数がやや高いようです。

インプレッション数、リツイート数、いいね数はそれぞれ相関があることが見て取れますが、

ChatGPT: 今回の分析ではツイートの数が比較的少ないため、結果はあくまで参考程度に留めていただくことをお勧めします。

と言及されているため分析結果のヒートマップを見てもわかりにくい部分もありますのでまずはツイートやフォロワーを増やして行く必要がありそうですね。

ツイート本文の分析

インプレッション数が高いトップ10のツイートをChatGPTを使ってトピックモデリングで分析した結果を以下に示します。意図した内容が分析結果に反映されていることが分かりました。

項目 説明
注目を引く視覚的な要素 ユーザーの注意を引き、エンゲージメントを向上させる
ハッシュタグの使用 ツイートが見つけやすくなる
記事の主題の明確な紹介 記事の主題が明確に紹介されている
具体的な行動の呼びかけ 「開発環境の構築や管理にお困りの方は是非ご覧ください!」という具体的な行動の呼びかけが含まれている
今後の記事の予告 新しい記事の公開を通知することで、ユーザーの関心を引き、エンゲージメントを向上させる
特定のテーマの強調 テーマを強調するとイベントや企業の内部の活動に関心があるユーザーの関心を引く

ツイート分析結果のまとめ

ここまでの分析結果から投稿時間、ツイート内容、URLの活用がツイートの最適化におけるポイントとなっていることが分かりました。

項目 説明
投稿時間の最適化 顕著に出ているわけではないが木曜日と金曜日の夜にエンゲージメントが高まる傾向がある。週末に向けてフリータイムが増えより多くのコンテンツを探求している可能性がある
ツイート内容の最適化 イベントや新しい記事のトピックが含まれるツイートがエンゲージメントが高い
URLを含むツイート テックブログURLを含むツイートのエンゲージメントが高い

全体のまとめ

本記事ではChatGPTのCode Interpreterを使ってデータ分析を行い日本語でグラフ等の作成を行う方法を解説しました。皆さんの分析ライフにお役に立てましたら幸いです。

これからも続々と役立つ記事を公開していきます。最新情報が気になる方はぜひこちらのアカウントをフォローしてください。

https://twitter.com/KintoTech_Dev

KINTOテクノロジーズでは一緒にモビリティの未来を創る仲間を募集しています。カジュアル面談なども行っておりますのでご興味をお持ち頂けましたらぜひお気軽にご連絡ください。

https://www.kinto-technologies.com/recruit/

KINTOテクノロジーズMeetUp!情シスによる情シスのための事例シェア

関連記事 | Related Posts

We are hiring!

【Webアナリスト】分析G/東京・名古屋・大阪

分析グループについてKINTOにおいて開発系部門発足時から設置されているチームであり、それほど経営としても注力しているポジションです。決まっていること、分かっていることの方が少ないぐらいですので、常に「なぜ」を考えながら、未知を楽しめるメンバーが集まっております。

【分析プロデューサー】分析G/東京・名古屋

分析グループについてKINTOにおいて開発系部門発足時から設置されているチームであり、それほど経営としても注力しているポジションです。決まっていること、分かっていることの方が少ないぐらいですので、常に「なぜ」を考えながら、未知を楽しめるメンバーが集まっております。