Twitter API を利用して、ツイートの検索結果からワードクラウドを生成します。
(とはいえ、ツイート取得とワードクラウド生成のプログラムは分けているので、ツイートじゃなくてもテキストファイルさえあればそれを基に生成できます。テキストファイルからワードクラウドを生成する場合は、使い方の2のAPI関連の入力と、3の手順を飛ばします。)
$ python --version
Python 3.9.13 # neologdnの都合上、Python 3.9までしか動作しません
$ pip install tweepy wordcloud mecab-python3 unidic-lite neologdn
(Pythonに詳しくないため、依存関係情報が足りなかったら申し訳ありません…)
- config_sample.json を config.json にリネームします。
- config.json に、Twitter API のキーやトークン、ワードクラウド生成に使用するフォントのパスを入力します。
python tweepy_savefulltxt.py
を実行します。- "Enter Search KeyWord"と出てきたら、検索する文字列を入力
- "Enter Tweet Data file"と出てきたら、検索結果を保存するファイル名を入力
- wordcloud_fromtxt.py をいい感じにいじります。
- 画像内に含まないようにする単語を stop_words に入れておきます。コード内では私が使ったものに特化しているので、人によって調整が必要です。
- 文字色や出力サイズなども適宜変更
python wordcloud_fromtxt.py
を実行します。- "Enter Tweet Data file"と出てきたら、3 で出力した検索結果を保存したファイル名を入力
- ワードクラウドの画像が生成されます。
- デフォルトのファイル名はタイムスタンプです。
- デフォルトだと色がランダムに選ばれるので、何度か同じファイルで生成すると印象が変わったりします。
- WordCloud for Python documentation
- Python Twitter からツイートを取得してテキスト分析(wordcloud で見える化)
- Python で WordCloud を作成してみました
- 形態素解析前の日本語文書の前処理 (Python)
- mecab-python3で-Ochasenを再現する方法
現状、画像サイズの設定が怪しいです。直しました。URL とかRT の除外ができていないので、生成されるワードクラウドにノイズが混ざりがちです…><- RT は検索ワードに "-RT"を入れれば除外できますが、コード上で除外することはしていません。
- URL はワードクラウド生成時に除外するようにしました!
mecab-python3対応のなんやかんやで、本来はunidicが推奨されていますが、現状ipadicを使用した上でChasen形式に変換しています。将来的にはunidicを使うように修正したい。多分修正できました。