LoginSignup
2
2

More than 1 year has passed since last update.

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

Posted at

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

image.png
データがない場合は、このリンクからダウンロードしてください。そして、コードはすべて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()

image.png

絵でマスクする

image.png

利用した画像はこのリンクでダウンロードしてください

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(カラーマップ)という設定を変更しました。
image.png

image.png

ぜひ、自分で作った写真は @JarvisSan22でツイートしてくださいね。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2