ついにJリーグが再開!
東京は第2節柏戦で1-0で勝利しましたが、第3節の川崎戦ではボコボコにやられてしまいました…。
そこで今回は再開の喜びと勝利の喜びが混じったつぶやきがあるであろう第2節時点と、完膚なきまでに叩きのめされてしまった第3節のつぶやきをWordcloudを使って比較してみます。
悔しさの余韻がめちゃめちゃ残っていますが、Pythonの勉強も兼ねてやってみます。
環境準備
今回はMecabという形態素解析できるツールをPython環境で使用できるようにします。
参考になる記事はこちらから。今回はつぶやき結果がメインなので環境のほうはサラッと流します。(すいません(;^_^A)
MecabでPython環境が整ったら、Twitterのつぶやきを収集→適当なテキストファイルに保存→形態素解析して多くつぶやかれているワードを抽出→可視化してみる、といった流れでやってみようと思います。
コード
つぶやき収集
今回はTwitterAPIは使わずにつぶやきを取り込みます。出力先はtweets.txt。setQuerySearchで探したいワード。setSince、setUntilで開始日終了日を設定します。
参考サイトはこちら
# -*- coding: utf-8 -*-
import got3 as got
import json
import codecs
import sys
def print_tweets(tweets):
print("取得件数:", len(tweets))
f = codecs.ope n('tweets.txt', 'w', 'utf-8')
for tweet in tweets:
f.write(str(tweet.date))
f.write('\n')
# 期間を指定して取得
tweetCriteria = got.manager.TweetCriteria().setQuerySearch("#fctokyo").setSince("開始日付").setUntil("終了日付").setMaxTweets(5000)
tweets = got.manager.TweetManager.getTweets(tweetCriteria)
print("---------------------------------")
print("期間を指定して取得")
print_tweets(tweets)
wordcloudで解析
stop_wordsで「あれ」とか「それ」といったノイズ単語を除外していきます。読み込むファイルを聞かれるので、先程作成したtweets.txtを指定します。
参考サイトはこちら
import MeCab
import matplotlib.pyplot as plt
import csv
from wordcloud import WordCloud
def analyze_tweet(dfile):
fname = r"'"+ dfile + "'"
fname = fname.replace ("'","")
mecab = MeCab.Tagger("-Ochasen")
words=[]
with o pen (fname, 'r',encoding="utf-8") as f:
reader = f.readline()
while reader:
node = mecab.parseToNode(reader)
while node:
word_type = node.feature.split(",")[0]
if word_type in ["名詞", "動詞", "形容詞", "副詞"]:
words.append(node.surface)
node = node.next
reader = f.readline()
font_path = r"C:\WINDOWS\Fonts\HGRGE.TTC"
txt = " ".join(words)
stop_words = [ 'https','てる','co','the','of','Summit','試合','今日','選手','FC','Tokyo','fctokyo','東京','Japan','RT']
wordcloud = WordCloud(background_color="black",font_path=font_path, stopwords=set(stop_words),
width=800,height=600).generate(txt)
plt.imshow(wordcloud)
plt.axis("off")
plt.show()
if __name__ == '__main__':
print ('====== Enter Tweet Data file =====')
dfile = input('> ')
analyze_tweet(dfile)
結果比較
柏戦
リーグ再開を待ち望む声と、勝ったため、ポジティブ系の単語がよく出ています。ディエゴは前半負傷交代した為、心配するつぶやきが多かったのではないかと思います。
川崎戦
結果として前半と後半で内容がガラリと変わっていたことを指摘するつぶやきが多かったのかと思います。こうやって見ると思いの外ネガティブ系の単語は出ていない印象でした。
そしてやはりディエゴの存在はデカい…。
まとめ
サポーターそれぞれ想いはありますが、こうやって視覚化すると試合を見ていなくても、なんとなく試合状況を妄想できるので、面白いなぁと思いました。
コメント