今回はワードクラウドの時系列変化を
アニメーション化する事ができるライブラリ
AnimatedWordCloudのご紹介です。
アニメーション化する事ができるライブラリ
AnimatedWordCloudのご紹介です。
解説動画はこちら
ワードクラウドとは
データから単語を抜き出し
画像化したもののことです。
画像化したもののことです。
このワードクラウドをアニメーション化する
ライブラリ「AnimatedWordCloud」を
リリースした方がいました。
ライブラリ「AnimatedWordCloud」を
リリースした方がいました。
Github
早速試してみましょう。
Google Colabで試せるコードになっています。
ライブラリのインストール
!pip install AnimatedWordCloudTimelapse==0.9.5
コマンドでインストールできますが
たまに失敗することもある様です。
Colabのバックエンドが
一定ではないためかと思いますが
何度か再起動してインストールすれば
成功すると思います。
ライブラリの読み込み
ワードクラウドの作成に必要な
ライブラリを全部読み込みします。
from AnimatedWordCloud import animate, Config config = Config(output_path="/content/") import pandas as pd from datetime import datetime as dt from sklearn.feature_extraction.text import CountVectorizerconfigではアウトプット先の設定を行えます。
ワードクラウドに使用するデータの作成は
Pandasデータフレームを用いると楽です。
単語のカウント用に CountVectorizer を用います。
サンプルデータの読み込み
ここからは製作者様のコードを
一部引用させていただいています。
githubに付属されていた
イーロンマスクのツイートデータ(2012 - 2018)
の読み込みです。
df = pd.read_table("https://raw.githubusercontent.com/konbraphat51/AnimatedWordCloudExampleElon/main/elonmusk_tweets.csv",sep=",")
df["created_at"] = pd.to_datetime(df["created_at"])
df.head()
結果が出ていれば読み込み成功です。
ワードクラウド作成用のデータ構造
このライブラリでアニメーションワードクラウドを
作成するには、データ構造を合わせないといけません
このデータは次の様なデータ構造になっています。
[
(数値(年度),
{'ワード' : 数値(回数) , ・・・ }
) , ・・・
]
2つの要素を持ったタプルが複数格納されたリストで
リストの要素のタプルは
1.数値型の時系列
2.キー:ワード , 値:回数の辞書
という構造になっています。
ちょっと複雑な構造体ですので
形に合わせる集計が必要になっています。
データの加工
こちらも元のコードを参考にしたコードとなります。
dfs_by_year = []
for year in range(2012, 2018):
df_year = df[dt(year, 1, 1) <= df["created_at"] ]
df_year = df_year[dt(year+1, 1, 1) > df_year["created_at"]]
dfs_by_year.append(df_year)
print(df_year.shape)
stopwords = ["the", "co", "http", "to", "of", "and", "on", "for", "just", "that", "with", "by", "is", "in", "at", "will"]
min_df = 10
counter = CountVectorizer(stop_words=stopwords)
dicts_by_year = []
for cnt in range(len(dfs_by_year)):
np_year = counter.fit_transform(dfs_by_year[cnt]["text"]).toarray()
df_year = pd.DataFrame(np_year, columns=counter.get_feature_names_out())
sr_sum = df_year.sum(axis=0).sort_values(ascending=False)
sr_sum = sr_sum[sr_sum >= min_df]
#to dictionary
dict_year = sr_sum.to_dict()
dicts_by_year.append(dict_year)
wordvector_timelapse = []
for cnt in range(len(dicts_by_year)):
year = 2012 + cnt
wordvector_timelapse.append((year, dicts_by_year[cnt]))
ワードクラウドの作成
変数 = animate(データ, config) でワードクラウドの作成
configで指定したパスに
output.gif が保存される仕組みです
output.gif が保存される仕組みです
result = animate(wordvector_timelapse, config)
イメージの再生
出来上がったら見てみましょう。
from IPython.display import display, Image
with open('/content/output.gif','rb') as f:
display(Image(data=f.read(), format='png',width=600))

ワードクラウドがアニメーション表示されると思います。
ツイートのデータなどは
良くワードクラウドで表現される事が多いかと思いますが
それを時系列でアニメーション化させる
表現手法は作成するのに結構手間がかかると思います。
それを少しのコードだけで
作成する事ができるのは
めちゃくちゃ便利だと思います。
このライブラリを公開された方のような人が
今後沢山出てきていただけると嬉しいですね。
今回は
アニメーションワードクラウドを
作成出来る
AnimatedWordCloud
のご紹介でした。
それでは







