こんにちは!
なおき(@waste_investor)です!
TwitterのDelelopersアカウントの作成と、Pythonを使って新規にツイートする方法、ツイート内容を取得する方法を記事にしてあるので、まだ読んでいない方はそちらも参考にしてください。
-
-
参考【Twitter応用】PythonでTwitterAPIを叩く
こんにちは! なおき(@waste_investor)です! TwitterのDevelopersアカウントを作成するブログを書いたので、今回はその第2弾です。   ...
続きを見る
このブログではいよいよ取得したツイートを分析してトレンドを絵にします。
WordCloudを使ってこれを作っていこうと思います。
Pythonでツイート分析
Pythonは万能性にとんだプログラミング言語です。
これ一つ使えれば、アルゴリズム開発、クラウド開発、Web開発...etc行うことのできる非常に便利な言語です。フリーなので、家のパソコンにも気軽い入れて遊ぶことができるのがいいですね。
そんなPythonを使って、TwitterAPIを叩いてツイートを取得して、ツイート内容のトレンドを分析してみようと思います。
モジュールの準備
実行するにあたっていくつかモジュールが必要になるので、先にpipでインストールしておきます。今回は主に3つのモジュールを使用します。
tweepy(ツイートの取得)
1 |
pip install tweepy |
MeCab(テキスト分析)
1 |
pip install mecab |
WordCloud(トレンド分析)
1 |
pip install wordcloud |
これでモジュールの準備は完了です。
TwitterAPIでツイートを取得
この関数を呼んで、ユーザーのツイートを取得するか、特定のキーワードを含むツイートを取得します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
import tweepy from enum import IntEnum # Twitter認証コードは別ファイルで管理 import TwitterAPIKey class QUERY_KIND: user = 0 keyword = 1 def get_tweet(keyword, query_kind): """ ツイートを取得する keyword:検索するキーワード query_kind:検索する種類() """ # TwitterAPIのパスワードを取得(別ファイルで保存) consumer_key =TwitterAPIKey.CONSUMER_KEY consumer_secret =TwitterAPIKey.CONSUMER_SECRET access_token=TwitterAPIKey.ACCESS_TOKEN access_secret =TwitterAPIKey.ACCESS_SECRET #認証 auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_secret) api = tweepy.API(auth, wait_on_rate_limit = True) if query_kind == QUERY_KIND.user: # userのツイートを取得する tweets = api.user_timeline(keyword, count=400, page=1) elif query_kind == QUERY_KIND.keyword: # 特定のキーワードのツイートを取得 tweets = tweepy.Cursor(api.search, q=keyword, count=400,tweet_mode='extended').items() else: # エラー tweets = [] return tweets |
WordCloudでツイートを絵にする
取得したツイート内容をMeCabで単語に分けてWordCloudでまとめあげていきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
import MeCab import matplotlib.pyplot as plt from wordcloud import WordCloud def tweets_analyze(tweets, file_name, background_color, color_type): """ ツイートの内容を分析する tweets:取得したツイート file_name:保存するファイル名 background_color:word cloudの背景色 color_type:word cloudの出力色 """ #Mecabを使用して、形態素解析 mecab = MeCab.Tagger("-Ochasen") # 単語を入れる用 words = [] for tweet in tweets: #tweetを分析 node = mecab.parseToNode(tweet) # ツイート内容が終了するまで while node: word_type = node.feature.split(",")[0] # "名詞", "動詞", "形容詞", "副詞"の中で選択したものを抽出 if word_type in ["名詞", "動詞"]: words.append(node.surface) node = node.next # テキストを連結 txts = " ".join(words) #wordcloudで出力するフォントを指定(日本語を出力できるフォントを選択) font_path = r"/Library/Fonts/Arial Unicode.ttf" # ストップワードの設定(特定のワードは入らないように設定) stop_words = ['https', 't', 'co', 'RT'] # WordCloudで出力 wordcloud = WordCloud(background_color=background_color, colormap = color_type, font_path=font_path, stopwords=set(stop_words), width=800, height=600).generate(txts) # 図を出力して保存 fig = plt.figure(figsize=(30, 10)) plt.imshow(wordcloud) plt.axis("off") plt.savefig(file_name,bbox_inches='tight') plt.show() |
ツイートで取得した内容を絵にする
ツイートの取得、WordCloudの関数が書けたので、それを繋ぎ合わします。
(全体的に書き殴りのコードですが、ご容赦ください)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
if __name__ == "__main__": # ツイートを取得 keyword = '@waste_investor' kind = QUERY_KIND.user tweets_all = get_tweet(keyword, kind) # ツイートを格納用 tweets = [] # リプを含めるかどうか is_replay = True # ツイート部分だけ格納 for tweet in tweets_all: # リプを含めず分析するとき if is_replay: tweets.append(tweet.text) else: # @以外のツイートを取得 if '@' not in tweet.text: tweets.append(tweet.text) # ツイート分析 output_name = 'waste_investor.png' background = 'white' color_type = 'tab20' tweets_analyze(tweets, output_name, background, color_type) |
リプを含めずに出力したとき
自分のツイート内容だけでどんな言葉を普段使っているか知ることができます。
こうやって振り返ってみるとおもしろいですね。
リプを含めて出力したとき
よくリプをする人のアカウント名が出てくるようになります。
ほとんどがリプをした人のアカウント名になってしまいましたが、これはこれでよしとしましょう。
特定の単語を調べたとき
高配当で有名な"SPYD"でツイートを取得してみます。
(除外する単語にSPYDを含めて SPYDが出てこないようにしてあります)
ちゃんと高配当という単語がよく使われていることがわかりましたね。
その他の単語は投資の参考になるかというと、うーんという感じですが、ETFや個別銘柄で検索するとどういった内容がツイートされていそうかトレンドを把握することができそうです。
ときどき流行りの銘柄で検索してツイートしようと思うのでお楽しみに。
-
-
参考【ツイート解析】Twitter Developersアカウントを作成方法
こんにちは! なおき(@waste_investor)です! ツイート分析をするために、Twitter Developersアカウントを作成しました。 作成までの手順をまとめておきます。 ...
続きを見る