PythonでWordcloudというモジュールを利用したら、文字やテクストは綺麗な絵になります。データ可視化はとても大事なスキルですね。今回、ギャルバースのNFTの説明文から絵を作ります。
データがない場合は、このリンクからダウンロードしてください。そして、コードはすべてColabのノートブックで共有しています。
データのセットアップ
最初に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の変数に変更しています。
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で利用するために変数に定義しています。
from wordcloud import WordCloud, STOPWORDS
stopwords = set(STOPWORDS)
次、WordCloudを使います。WordCloudを動作するために、最初にパラメーターを設定して、.generateでテクストのデータを入り込み、画像が作成します。最頻出語を計算して、画像に変換します。WordCloudのすべての設定を確認したいなら、公式ドキュメントをご確認ください。
wc = WordCloud(
background_color='white',
max_words=2000,
stopwords=stopwords,
max_font_size=40
)
wc.generate(text)
そして、作成した後で、プロットをしましょう。Wordcloudのプロットは軸に関係ないので、軸を無効します。
plt.figure(figsize=(10,10))
plt.imshow(wc)
plt.axis('off')
plt.show()
絵でマスクする
利用した画像はこのリンクでダウンロードしてください
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」というウェブサイトを推します。
マスクの中で、WordCloudのテクストの絵を作ることはとても簡単です。Wordcloudの設定では、maskを設定することだけです。
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(カラーマップ)という設定を変更しました。
ぜひ、自分で作った写真は @JarvisSan22でツイートしてくださいね。