WordCloudで可視化してみた

## はじめに
今回はWordCloudで好きな文章やテキストファイル、CSV、JSONファイルなどを可視化します。
文章はそもそも可視化されてるんじゃないかとツッコまれるかもしれませんが、最終的にはTwitterのAPIを使ってTweetを抽出してそれを可視化することを目的としているためこのように表現します。
WordCloudでは使われている文字の頻度によって表示される文字の大きさがかわるため何を伝えたいかなどがわかりやすくなります。

## 環境
```
macOS Ventura 13.0.1
Google Colaboratory
```

## 構成
Google　Colaboratoryで使うPythonファイルと同じディレクトリにテキストファイルを事前に用意しておきます。
```
.
├── WordCloud.ipynb
└──  BigBen.txt
```

## ゴール
今回のゴールはテキストファイルを読み込んでそれを画像表示することです。

## WordCloudに使うテキストの資料
今回WordCloudに使うテキストは私個人が好きなスポーツのNFLから抜粋しています。
私の大好きな選手が今年引退をしてその時のコメントを下記のページからテキストファイルにまとめました。

https://www.nfl.com/news/steelers-qb-ben-roethlisberger-officially-announces-retirement-after-18-seasons


このまとめたテキストファイルを "BigBen.txt" とファイルに名前を付けています。
ここはお好きなテキストファイルをお好きな名前で使って下さい。

## コード
①〜④はコードブロックを分けて作成したため番号を振っています。
一つのブロックで実行しようとしたらエラーが出てたので分けて実行をすると動かすことができました。
```python
①
from google.colab import drive
drive.mount('/content/drive')
②
cd drive/My Drive
③
cd WordCloud
④
from wordcloud import WordCloud
from matplotlib import pyplot as plt

with open("BigBen.txt", "r", encoding="utf-8")as f:
     text=f.read()

# ワードクラウドの作成
wordcloud =WordCloud( 
    background_color="white").generate(text)

plt.imshow(wordcloud)
```
### GoogleDriveのimport
ここはGoogle　Colaboratoryを使う方は同様にして下さい。
今回使うテキストファイルをGoogleDriveに入れる場合に必要です。
```python
from google.colab import drive
drive.mount('/content/drive')
```
GoogleDriveをimportしようとすると、下記の画像のように承認を求められますので、問題なければそのまま進んでください。

![スクリーンショット 2022-12-18 23.42.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2741139/df7c3549-c030-9635-8bea-1fb7b1d7dac3.png)

![スクリーンショット 2022-12-18 23.43.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2741139/a558745e-2ebf-f138-6a45-23de3886de06.png)

![スクリーンショット 2022-12-18 23.44.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2741139/5fd96b7f-b45e-817b-4d26-94c04c08b370.png)


マウントが無事に完了するとコードの実行結果でマウントができたことがわかります。

![スクリーンショット 2022-12-18 23.45.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2741139/18c07fec-5a66-df74-e5b7-7abc440de8a2.png)

あくまでGoogleDriveからファイルを読み込める状態にしただけですので、ディレクトリを変えたい方は変更をお願いします。

### ディレクトリの変更
上記のコードはGoogleDriveをimportしただけでディレクトリの移動を行っていないためディレクトリの変更を行います。
```python
cd drive/My Drive
```
```python
cd WordCloud
```

### import
WordCloudライブラリを使うためのインポートと、実行結果をノートブック上で確認できるようにするためにmatplotlibをインポートします。
実行結果をノートブック上で確認せずに、画像ファイルとして保存する場合であればmatplotlibのインポートは必要ありません。

```python
from wordcloud import WordCloud
from matplotlib import pyplot as plt
```

### テキストファイルの読み込み
with openメソッドでテキストファイルを指定して読み込みを行っています。
open()の引数modeを"r"とすると読み込み用ファイルとして開かれます。
デフォルト値が"r"なのでそのまま使用します。

```python
with open("BigBen.txt", "r", encoding="utf-8")as f:
     text=f.read()
```

### WordCloudの作成
作成したいWordCloudの設定をここに書き込みます。
今回は背景色だけ指定しました。
細かく設定することも可能ですので色々試してみると面白いかもしれません。

```python
wordcloud =WordCloud( 
    background_color="white").generate(text)
```

### ノートブック上での描画
最後の１行でノートブック上での描画をしています。
```python
plt.imshow(wordcloud)
```
### 実行結果
![qiita_wordcloud .png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2741139/dbc57401-250f-b796-f339-16373db7ff1a.png)

Pittsburgh Steelersというチーム名の選手なのですが、
love, football, organization, thankなどアメフトや組織に対する感謝や愛を伝えているのかなと感じられるのではないでしょうか。

### 画像として保存したい場合
例えばノートブック上での表示だけでなく画像として保存したい場合は、
```python
wordcloud.to_file('wc.png')
```
()内はファイル名になりますので好きなファイル名を指定して下さい。

### WordCloudの設定を色々した場合
```python
wordcloud =WordCloud( 
    # 背景色の指定
    background_color="gray",
    # 横幅の指定 
    width=480,
    # 高さの指定
    height=320,
    # マスクの輪郭を描画する時の幅
    contour_width=5, 
    # 輪郭を描画する色
    contour_color='blue').generate(text)
```
実行結果は下記です。
![qiita_wordcloud2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2741139/f8ae9d1e-2119-08e3-541f-13619892b0bb.png)

## まとめ
WordCloudは実行結果が毎回かわるのも面白みの一つだと思います。
今回は英文をそのまま使っているので「said」などの動詞もたくさん使われているからWordCloudの結果内で大きくなってしまいます。
動詞を取り除く処理の追加が今後必要ですね。
また日本語をWordCloudを使って可視化したい場合はMeCabというライブラリを使うことによって日本語を分解してつかうことができますので、そちらもやってみたいですね。