テキスト中の単語の出現頻度を可視化する方法として、ワードクラウド(word cloud)というのがあります。
要は頻出の単語ほどでっかい面積を占拠できるように可視化する方法ですね。
これをPythonで作る時、その名もズバリ wordcloudというライブラリがあり、非常に手軽に使うことができます。
リポジトリ: amueller/word_cloud
インストールはpipでできます。
$ pip install wordcloud
20newsgroups のデータを使ってやってみましょう。
あまりにもごちゃごちゃすると意味がわからないので、カテゴリを一個に絞ってやってみます。(今回は sci.electronics にしました)
細かいですが、STOPWORDS があらかじめ用意されているのもありがたいですね。
from wordcloud import WordCloud
from wordcloud import STOPWORDS
from sklearn.datasets import fetch_20newsgroups
import matplotlib.pyplot as plt
remove = ('headers', 'footers', 'quotes')
categorys = [
"sci.electronics",
]
twenty_news = fetch_20newsgroups(
subset='train',
remove=remove,
categories=categorys
)
raw_data = twenty_news.data
wordcloud = WordCloud(
stopwords=STOPWORDS, background_color="white"
).generate(" ".join(raw_data))
fig = plt.figure(figsize=(12, 8))
ax = fig.add_subplot(1, 1, 1)
ax.imshow(wordcloud, interpolation='bilinear')
ax.axis("off")
plt.show()
結果がこちらです。