Python

ツイートから WordCloud を作成する

by

in

Twitter API が取れたので早速利用してみようと思います。今回はツイートから WordCloud を作成してみます。

import json
import MeCab
from requests_oauthlib import OAuth1Session
from wordcloud import WordCloud

CONSUMER_KEY = 'Twitter API CONSUMER KEY'
CONSUMER_SECRET = 'Twitter API CONSUMER SECRET'
ACCESS_KEY = 'Twitter API Access Key'
ACCESS_KEY_SECRET = 'Twitter API Access Key Secret'

twitter = OAuth1Session(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_KEY, ACCESS_KEY_SECRET)
name = 'アカウント名'
params = {
        'screen_name': name,
        'count': 3200,
        'exclude_replies': True,
        'include_rts': False
}
res = twitter.get('https://api.twitter.com/1.1/statuses/user_timeline.json', params=params)

texts = []
if res.status_code == 200:
    timelines = json.loads(res.text)
    for data in timelines:
        texts.append(data['text'])
else:
    print('ERROR: %d' % res.stasus_code)

tagger = MeCab.Tagger('-Ochasen -d /opt/homebrew/lib/mecab/dic/mecab-ipadic-neologd')
nodes = tagger.parseToNode(' '.join(texts))
words=[]
while nodes:
    features = nodes.feature.split(',')
    if features[0] == '名詞':
        words.append(features[6])

    nodes = nodes.next

wordcloud = WordCloud(background_color='white', font_path='/System/Library/Fonts/ヒラギノ角ゴシック W3.ttc', width=800, height=600).generate(' '.join(words))
wordcloud.to_file('./wordcloud.png')

以上のプログラムで任意のアカウントでのツイートから WordCloud が作成されます。

自分のツイートで WordCloud を作ってみると

@yonda の WordCloud

ちなみにフォントを指定しないと日本語が文字化けしてしまいます。

また、この状態だと「の」や「ん」URL のプロトコルを表す「HTTPS」も表示されてしまうので対策を考えていかないと… 。