ChatGPTの出力図／グラフに日本語テキストを使う方法（Kaggle／Code Interpreterの使い方）

## 出力結果に日本語を使えない…？
### 日本語を出力すると…こうなる
ChatGPT「Code Interpreter」を使ってグラフや図を出力しようとすると、こんな風になりました。

![スクリーンショット 2023-07-14 085758.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/82412b91-9563-34d6-7f56-9fbef7727ebf.jpeg)


こちらは、日本語の漢字を「ワードクラウド」として出力したものです。日本語に該当する部分が、「☐」と文字化けして表示されています。…これでは、正直なんの事なのか、さっぱり分かりませんね。

日本語を文字化けすることなく表示させるには、どうしたらいいのでしょうか？

…実は、めちゃくちゃ簡単で。「解析したいデータセットと一緒に、フォントファイルをアップロードするだけ」なんです。

では具体例を元に、この文字化けしてしまった「ワードクラウド」を正しい出力結果にしてみましょう。

***
※ChatGPT「Code Interpreter」とは？

▶「Code Interpreter」の使い方は、[コチラの記事](https://miuradonuts.com/2023/07/09/prompt-003/)をご覧ください。

「Code Interpreter」とは、ChatGPTでPythonでの処理ができるようにするもので、ファイルのアップロードやダウンロード機能も使えるようになります。Pythonでできることは、ざっくり挙げると…

- Word/Excel/Powerpointなどのオフィス系ファイルの加工
- PDFファイルの作成
- 画像加工
- 動画加工
- データ分析
- 機械学習
- 自動化プログラムの作成（処理速度遅め）

つまり、このあたりの操作がChatGPTを通してできるようになる、という理解でOKです。
ここで使うのは、Pythonで可能な「データ分析」領域の機能、ということになりますね。

## 日本語でワードクラウドを出力してもらう
### Kaggleのデータセットを使う
とにかく日本語を出力して欲しかったので、出力結果に日本語しかないデータセットを選ぶことに。今回は、Kaggleで公開されているデータセット「よく使われる日本語の単語29,777語」を題材に選びました。（データセットは[コチラ](https://www.kaggle.com/datasets/dinislamgaraev/popular-japanese-words?resource=download)）

このデータセットに含まれる単語の中で、よく使われる漢字を抽出して、ワードクラウドとして表示してもらいます。

***
※[Kaggle（カグル）](https://www.kaggle.com/)とは？
本来の使い方は、データサイエンティストのコンペ用のプラットフォームとなります。企業や政府といった機関がコンペ形式でデータ分析の課題を掲示し、参加者がその課題を解くというもの。成績に応じて、賞金も出ます。

実は、Kaggleではデータサイエンスと機械学習のデータセットが約50,000件ほど共有されており、分析に役立てることができます。（Kaggleのデータセットは[コチラ](https://www.kaggle.com/datasets)）

【Kaggleのデータセット例】
- Trending Datasets：トレンド（ジャーナリズム関連多い）
- Popular Datasets：定番の人気データセット（ハリウッド市場など）
- Movies and TV Shows：映画やTV番組関するデータセット
- Clothing and Accessories：ファッション系のデータセット
- Economics：経済や企業情報に関するデータセット
- NLP：心理学に関するデータセット
- 医療：がんやコロナに関するデータセット
…etc（他にもあります）


### 実際の手順はコチラ
#### インプット
![写真1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/e4987f62-14f4-36c3-d467-41ba5baed700.jpeg)


下記2ファイルをZIPにしてChatGPTへアップロードする
・解析に用いるデータ：「よく使われる日本語の単語29,777語」（Kaggleのデータセットを利用）
・フォント：Googleフォントの「Noto Sans Japanese」を使用
※「.ttf」形式のフォントファイルを使用します。

![写真2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/41b6bfa5-df59-41e3-0637-46edd893b96a.jpeg)


 
#### プロンプト
```
このデータセットには、よく使われる日本語の単語29,777語が含まれています。このデータセットを解析し、カラム1「word or phrase」に登場する漢字をワードクラウドで示してください。 ワードクラウドへの表示は、zipに格納したフォントを用いてください。
```

![写真3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/70252b55-f313-96e5-4a8a-5720968939a5.jpeg)



#### アウトプット

![写真4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/ef615427-a339-44de-3e17-9f80a6239e26.png)


ワードクラウドが作成されました。使用頻度の高い漢字が、頻度に合わせて大きく表示されています。

※日本語フォントを使用しないと、本記事の冒頭に貼り付けた画像のように、☐☐☐☐だらけの結果になります。

## 内部処理の手順をChatGPTに解説してもらう
せっかくなので、どんな処理が行われていたのか、ChatGPTに解説をしてもらいました。どんな流れで何を使えば、今回のような結果が得られるのか、知っておくのも勉強になります。

```
今の内部処理の手順を、markdown形式で表示してください。
```
![スクリーンショット 2023-07-14 095819.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416622/836e9970-0cab-9b39-d42c-9b0ec536b517.jpeg)


ChatGPTが教えてくれた処理の流れは、下記となります。

#### データの読み込み

まず、ファイル 'Words.csv' をpandasのDataFrameとして読み込みました。データは次の形式で提供されています：

Column1：単語またはフレーズ（「word or phrase」）
Column2：かな表記（'kana'）
Column3：英語による翻訳（'translation'）
Column4：タグ（'tags'）
Column5：使用例（'example of usage'）
このデータセットを使用して、"Column1"に登場する漢字を解析し、ワードクラウドを作成しました。

#### 漢字の抽出と頻度の計算

'word or phrase' カラムの各単語を一文字ずつに分解し、その文字が漢字であるかどうかを確認しました。このチェックは、文字が '一' から '龯' の範囲内にあるかどうかを確認することで行いました。これにより、各単語から漢字だけを抽出することができました。

次に、Pythonの collections.Counter を使用して、各漢字の出現頻度を計算しました。これにより、各漢字がデータセット内で何回出現したかを特定しました。

#### ワードクラウドの生成

wordcloud.WordCloud を使用して、ワードクラウドを生成しました。このワードクラウドは、各漢字の出現頻度に基づいています。つまり、クラウド内で大きく表示される漢字ほど、データセット内で頻繁に使用されています。

ワードクラウドの生成には、指定されたフォントファイル 'NotoSansJP-VariableFont_wght.ttf' を使用しました。

#### ワードクラウドの出力

最後に、生成されたワードクラウドをPNGファイルとして保存しました。


## まとめ
このように、グラフや図などの出力結果に日本語を含めたい場合には、日本語のフォントファイルを一緒に格納してアップロードするだけでよいことが分かりました。

「Code Interpreter」を使ったデータ分析の方法については、Kagggleのデータセットを使って、目的のアウトプットを得られる練習をするのがオススメです。

アウトプットを得た後で、もし処理の流れを勉強したい場合には、ChatGPTに処理の流れを箇条書きで出力してもらうことで追いかけることができます。コチラは、Pythonの学習法としてもオススメです。


この記事は、著者が運営するメディア「ぬるぺでぃあ」でも読むことができます（記事は[コチラ](https://miuradonuts.com/2023/07/14/prompt-005/)）
![](https://miuradonuts.com/wp-content/uploads/2023/06/ヘッダーエリア画像作成.png)