python: wordcloud テキストを可視化しましょう。ギャルバースの説明文は絵になります

PythonでWordcloudというモジュールを利用したら、文字やテクストは綺麗な絵になります。データ可視化はとても大事なスキルですね。今回、ギャルバースのNFTの説明文から絵を作ります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/999291/4b9b02f9-d1e7-af25-e868-5cd2a3076271.png)
データがない場合は、この[リンク](https://drive.google.com/file/d/1-19NWWHfCPF9GNUA15s0vlx8sL0TcGvp/view)からダウンロードしてください。そして、コードはすべて[Colabのノートブック](https://colab.research.google.com/drive/13wm2ID2X-k2gSyE7Lcfx9aopiyBp7Z5m?usp=sharing)で共有しています。

# データのセットアップ
最初にwordcloudをインストールします。

```
!pip install wordcloud
```

次データを読み込めます。今回 pandasを使って、CVSからデータを読み込めます。
```
import pandas as pd
import numpy as np
import cv2
import matplotlib.pyplot as plt


file="/content/drive/MyDrive/Galverse_data/gal_data.csv"
df=pd.read_csv(file)
```

しかし、wordcloudはstrのデータが使用しているので、利用したいテクストデータはpandasからstrの変数に変更しています。

```python
text=" ".join(i for i in df["description"])
vals=["!",'"',".","-","\\","...","(",")","'","?",":",",","_",";"]
for v in vals:
  text=text.replace(v,"")
text=text.lower()
```

「" ".join(i for i in df["description"]」の部分は、データのすべての説明のデータは、総合的なstrのテクストのデータに変更しました。次は、いろいろな文節はテクストから削除します。最後にすべてのテクストは小文字に変換します。

# wordcloudの基本

最初に、WordCloudをインポートします。ともに、STOPWORDSをインポートします。これは常用語句リストです。英語の場合は「a,be, the.....」という言葉です。STOPWORDSはset形式に変更して、wordcloudで利用するために変数に定義しています。

```python
from wordcloud import WordCloud, STOPWORDS
stopwords = set(STOPWORDS)
```

次、WordCloudを使います。WordCloudを動作するために、最初にパラメーターを設定して、.generateでテクストのデータを入り込み、画像が作成します。最頻出語を計算して、画像に変換します。WordCloudのすべての設定を確認したいなら、[公式ドキュメント](https://amueller.github.io/word_cloud/generated/wordcloud.WordCloud.html#wordcloud.WordCloud)をご確認ください。

```python
wc = WordCloud(
    background_color='white',
    max_words=2000,
    stopwords=stopwords,
    max_font_size=40
)
wc.generate(text)

```
そして、作成した後で、プロットをしましょう。Wordcloudのプロットは軸に関係ないので、軸を無効します。
```python
plt.figure(figsize=(10,10))
plt.imshow(wc)
plt.axis('off')
plt.show()
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/999291/7abccbc4-2f86-85b9-7c2b-a6a137263bd0.png)
# 絵でマスクする

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/999291/6c6feafb-3dc0-208e-6bbb-7b9964a78eb3.png)


利用した画像は[このリンク](https://drive.google.com/file/d/1-G_WywrxnaMQ6g8ek7BRhLvGQPI093nV/view)でダウンロードしてください
```python
mask=cv2.imread("/content/drive/MyDrive/Kurumi_labs/Gal_pics/kurumi_noback.png",0)
mask=cv2.GaussianBlur(mask, (9, 9), 3)
mask[mask>0]=255
plt.imshow(mask)
```
他の写真を使うのはいいですけど、自分の写真を使いたいなら、背景なしの写真は最適です。このために「[remove.bg](https://www.remove.bg/ja/upload)」というウェブサイトを推します。

マスクの中で、WordCloudのテクストの絵を作ることはとても簡単です。Wordcloudの設定では、maskを設定することだけです。

```python
wc = WordCloud(
    background_color='black',
    max_words=3000,
    stopwords=stopwords,
    max_font_size=60,
    collocations=False,
    mask=np.invert(mask),
    colormap="spring"
)
```

collecationsという設定は無効して、これは一つの単語が2回表示されるのを止めるものです。そして、きれいなプロットを作るために、background_color(背景の色)とcolormap(カラーマップ)という設定を変更しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/999291/440f6243-7d19-745b-e018-eef01c92b8fa.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/999291/7991a43c-ae5b-6c4e-ca8b-455f43b15d1b.png)



ぜひ、自分で作った写真は [@JarvisSan22](https://twitter.com/JarvisSan22)でツイートしてくださいね。