タイトル画像が今回のゴールになります。
自分がツイッターでツイートした内容を可視化して、画像を作成する方法を紹介します。
特定のツイッターのツイート内容を形態素解析して分解し、必要な名詞のみを取り出して頻繁に出現する名詞は文字サイズを大きく表します。
コンテンツ
環境
環境は以下になります。ちなみにヒロヤンの場合はpipenvでの環境開発を行っています。
・OS Mac
・python 3.8
開発に必要なキー
上記の環境とは別にTwitterAPIを実行するに際して次の2種類4項目が必要です。
・User authentication: 特定のユーザーに紐づいた認証
・Application-only authentication: 特定のユーザーに紐づかない認証
認証にはアプリケーション単位で発行される、上記で取得したAPIキーとAPI Secret Key、ユーザー単位で発行されるAccess Token と Access Token Secretの4つを入手する必要があります。
取得の方法は以下から確認できます。
モジュールインストール
ヒロヤンの場合はpipenv環境下で使用をしているのでpipenvにインストールを実行します。
$pipenv install tweepy
$pipenv install MeCab
$pipenv install Pillow
$pipenv install wordcloud
$pipenv install matplotlib
これで必要な準びはできました。
実際のコード
import sys
import tweepy
import MeCab
import numpy
import matplotlib.pyplot as plt
from PIL import Image
from wordcloud import WordCloud, STOPWORDS # 単語の頻出頻度の可視化
# 取得した各種キーを格納-----------------------------------------------------
CONSUMER_KEY = "自分のconsumer key"
CONSUMER_SECRET = "自分のconsumer secret key"
ACCESS_TOKEN = "自分のaccess token"
ACCESS_TOKEN_SECRET = "自分のaccess token key"
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
api = tweepy.API(auth)
Account = "Hiroyan_python" # 検出したアカウントID入力
tweets = api.user_timeline(Account, count=200, page=1)
num = 1
text = ''
for tweet in tweets:
text += tweet.text
j = " ".join([i.split("\t")[0] for i in text.split("\n")]) # \n改行除去 \t空白除去
add_STOPWORDS = ["Hiroyan", "https"] #表示させないキーワードを追加する
for word in add_STOPWORDS:
STOPWORDS.add(word)
# 形態素解析
# Taggerというクラスのインスタンスを生成し、parseというメソッドを呼ぶことで解析。結果が文字列として取得できる。
tagger = MeCab.Tagger()
tagger.parse('')
node = tagger.parseToNode(j)
# 画像作成
# nodeを順番に読み取り品詞が名詞、且つ含めたくないワードを除外
word_list = []
while node:
word_type = node.feature.split(',')[0]
word_surf = node.surface.split(',')[0]
if word_type == '名詞' and word_surf not in add_STOPWORDS:
word_list.append(node.surface)
node = node.next
word_chain = ' '.join(word_list)
word_cloud = WordCloud(
width=640,
height=360,
# background_color = "white",
max_words = 2000,
font_path = "/Library/Fonts//ヒラギノ丸ゴ ProN W4.ttc"
)
word_cloud.generate(word_chain)
word_cloud.to_file('sample.jpg')
img = Image.open('sample.jpg')
img.show() # 画像を開く
# フォントパスはインストールしていない。最初からあるやつ。
# キータの奴を参考にして作成していく
備考としてコードの横にコメントを書きましたが、注意点を追加で下記に書き記します。
- 10-13行目に取得した各種キーを入力してください。
- 20行目は取得したいアカウント名を入力してください。今回は私ヒロヤンのアカウントを入力しています。つまり私に限らず特定のアカウントIDを入力すればその人のツイートを取得できます。
- 21行目でcount=200としていますが、こちらはツイッターのタイムラインの投稿を取得するのですが制限が200となっているので上限値を入力しています。
- 他の同様の記事だとフォントをいちいちインストールしていますが、元々のMac内蔵のフォントを利用します。なのでMacではない人はフォントの設定が必要になります。
最後に
以上のコードで実際に動かすと、時間は少しかかりますが画像がカレントディレクトリに保存され、また自動で画像が開くようになっています。
以上が、【Python】wordcloudで自分のツイートを可視化する、の紹介記事になります。
スクールを利用して本格的に学ぶ
いかがでしたでしょうか?
10人中9人が挫折すると言われるプログラミングを、ヒロヤンも実はプログラミングスクールで学習をしてきたからで、結果、今はPythonエンジニアとして働いています。
挫折率が高いプログラミングこそお金を払ってメンターを付けて、道を見失わないように環境を構築する必要があるのではないでしょうか。
これはダイエットで自分一人では痩せられないけど、トレーナーを付けて否が応でもせざるを得ない環境を作ると一緒ですね。
ヒロヤンもプログラミング勉強開始直後はあれこれ悩みましたが、悩むよりも手っ取り早くスクールに登録した方が最短ルートで勉強できるのではないかと考え、結果挫折せずに今に至っています。
今なら無料でキャリアカウンセリングを行っているCodeCampのPythonコースのようなプログラミングスクールもありますのでこれを機会に是非カウンセリングだけでも受けてみてはいかがでしょうか?
上記リンク先から無料相談ができます。
またこちら(↓)ではPython専用のプログラミングスクールをまとめ紹介しています。





コメントを残す