[Python]sklearn, pytagcloudでワードクラウド作ってみた

今回はPythonでワードクラウドを作ってみました。ワードクラウドとは
追記:英語のみ対応です。ライブラリ(pytagcloud)が日本語に対応していないので…。日本語に対応させたいなら描画のところは自前で書く必要がありますね(^^;

 

全体の流れは

という感じです。こんな感じの画像を生成できます。

 

使うライブラリは以下の通りです。

sklearn 機械学習ライブラリ
pytagcloud ワードクラウド描画ライブラリ
numpy 数値計算ライブラリ
urllib インターネットからページを取得する用

 

ライブラリのインストール方法についての説明は省略します。pip installなどで必要なライブラリは用意してください。

pipのインストールについて
sklearnのインストールについて
pytagcloudのインストールについて(英語サイト)
urllibのインストールについて

 

 

ドキュメント読み込み

これは単純にファイルパスを指定して読み込むだけです。

 

 

ベクトル生成

ドキュメントを単語ごとに分けて、出現頻度のベクトルを生成します。

はじめにストップワードを取り除く必要があります(ストップワードとは、私、です、ます、などの出現頻度が高く不要な語)。
日本語のストップワードはインターネットなどから入手する必要があります。今回はSlothLibのページからストップワードを取得します。
SlothLibのページ

 

次に、取得したストップワードを用いてsklearnのCountVectorizerを使ってベクトル化します。先ほど生成したストップワードとmin_dfを指定します。min_dfを指定すると、指定した値より出現回数の低い単語を無視します。
最終的には、ワードクラウドを生成するのに必要な、単語と出現頻度ベクトルの数値を合わせたタプルを生成します。
最後に昇順ソートをしておきます。キー関数を使用しています。キー関数についてはこちらを参考にしてください。

 

 

ワードクラウド描画

生成した単語と出現頻度ベクトルを合わせたタプルのリストを用いてワードクラウドを作成します。この例では上位30個の単語をピックアップします。
また、2行目の引数のminsize, maxsizeはワードクラウドの画像中の単語の大きさの最大値、最小値を表します。

まとめ

PDFやワードファイルに対応できると色んなドキュメントのワードクラウドが見れて面白いかもしれませんね。

最後にまとめたコードを示します。