国会議員のTweet40万件分析して支持すべき政治家を探してみた
新型コロナ禍が我が国の政治の深刻な問題をあぶり出しています。一市民としては支持する政治家を本腰入れて検討しなければいけません。
個人的な問題意識は主に「労働」と「財政」にありますので、これらの問題に積極的に取り組んでくれる方がいいです。今回のコロナ禍でこの2つは本当に切実な問題になりました。反対に「脱原発」とか「改憲」はやめてほしいかな……「財政再建」とかも当然ムリ!あ、もちろん国政の話です。
そんな訳でデータの力で問題意識の合う現職国会議員を探してみました。使うのはみんな大好きPython3 on Google colab(Jupyter notebook)です。技術的な話を飛ばして結論だけ見たい方はこちらからどうぞ。
やったこと
まずはTwitterをやっているすべての現職国会議員のTweetを一人当たり最新1000件ほど取得します。現職国会議員のアカウント一覧は国会議員いちらんリスト@standbycitizens様よりお借りしました。
##党員一覧を衆参それぞれに取得 def get_member_list(id): members = [] for member in tweepy.Cursor(api.list_members, list_id=id).items(): members.append(member.screen_name) return members jimin_lower = get_member_list(1062685419437871104) jimin_upper = get_member_list(1062298938223411200) koumei_upper = get_member_list(1062306783929131010) rikken_upper = get_member_list(1062311126208151552) ##...以下続く
Twitterをやっておられない方もおられるので、全アカウント数は522個でした。国会議員は衆参合わせて710名なので、約74%の議員がTwitterをやっていることになります。このリストから各党ごとの人数も算出しておきます。
#党員一人あたりTweetを1000件取得しCSVに格納 def get_tweets(screen_name, party, house): for m in screen_name: for tweet in tweepy.Cursor(api.user_timeline,screen_name = m,exclude_replies = False, wait_on_rate_limit = True).items(1000): tweets = [m, party, house, tweet.id,tweet.created_at+datetime.timedelta(hours=9),tweet.text.replace('\n','')] with open('tweets.csv', 'a') as f: writer = csv.writer(f) writer.writerow(tweets) get_tweets(shamin, 'shamin', 'upper')
1000件も投稿していない方や鍵垢の方もおられるので、実際の件数は408,854件でした。
words_labor = ['ブラック企業', '労働', '賃金', '雇用', '解雇', '待遇', '失業', '派遣切り', '雇い止め'] words_finance = ['財政出動', '給付', '交付金', '減税', 'デフレ'] words_ng = ['改憲', '九条', '脱原発', '財政再建']
関心事リストとNGリストを単語レベルで作成します。単語リストはやはりこうした問題に関心をお持ちの @koshian 様にお手伝い頂きました。できるだけ推進派・賛成派が引っ掛かり、反対派は引っ掛からないような言葉を選んでいます。機械学習な自然言語解析とかはせず原始的な方法で。
df = pd.read_csv('tweets.csv') def get_tweets_by_topic(w_list): df_new = pd.DataFrame() for w in w_list: add = df[df['tweet'].str.contains(w, na = False)] df_new = pd.concat([df_new, add]) return df_new
結果
まずは政党ごとの「労働」問題についてのtweet総数(のべ)です。立憲民主党が最も多く、次に自民党です。
party_names_labor = df_labor['party'].value_counts() print(party_names_labor) -- rikken 3763 jimin 3468 koumei 1720 kyosan 1266 independent 576 ishin 371 kokumin 361 shamin 210 Name: party, dtype: int64
議員一人当たりの件数に直すと毛色が変わってきます。圧倒的なのが社民党の約70件、次いで共産党の50.6件です。左派政党の面目躍如ですね。自民党は最下位でした。
jimin 14.1 rikken 27.7 koumei 35.8 kyosan 50.6 kokumin 27.8 ishin 16.1 shamin 70.0 independent 20.6 dtype: float64
それでは個人だと労働問題について誰が一番発言しているでしょうか?上位10名を確認します。
person_names = df_labor['name'].value_counts() person_names.head(10) -- yamanoikazunori 262 ishibashi2010 174 hanyuda_takashi 156 pru_moriya 150 miyamototooru 136 wako0501 135 kishimakiko_j 132 genkihoriuchi 131 hatanokimie 123 Senator_ISHIDA 113 Name: name, dtype: int64
圧倒的に多いのが立憲民主党の山井和則氏です。延べとはいえ1000件中1/4以上が労働関連のtweetです。
twitter.comその次が同じく立憲民主党の石橋みちひろ氏、そして自民党の羽生田たかし氏と続きます。政党というより、個人間で大きなばらつきがあるようです。
では次に「財政」問題に関心の高い政党を確認しましょう。
df_finance = get_tweets_by_topic(words_finance) party_names_finance = df_finance['party'].value_counts() print(party_names_finance) -- rikken 2543 jimin 2493 koumei 2134 kyosan 924 independent 588 kokumin 390 ishin 286 shamin 41 Name: party, dtype: int64
こちらは全体的に「労働」問題に比べて件数が少ないです。そして一番はやはり立憲民主党ですね。
jimin 10.1 rikken 18.7 koumei 44.5 kyosan 37.0 kokumin 30.0 ishin 12.4 shamin 13.7 independent 21.0 dtype: float64
一人当たりに直すとやはり見える景色が変わってきます。なんと一位は公明党の約44.5件です。次いで共産党の37件、国民民主党の30件と続きます。社民党は維新並みに少なく、財政に弱いというイメージが裏付けられた感じです。そして最下位はやはり自民党なんですが、自民党の方は普段何を話しておられるのでしょうか??
そして個人だと
person_names = df_finance['name'].value_counts() person_names.head(10) -- yamanoikazunori 192 tamakiyuichiro 136 ueno_hiroshi 131 akutsu0626 126 andouhiroshi 120 hisatake_sugi 111 sayaka_sasaki 106 kitagawa_kazuo 95 yasue_nobuo 92 310kakizawa 90 Name: name, dtype: int64
ここでも一位は立憲民主党の山井和則氏でした。2位は国民民主党の玉木雄一郎氏ですね。玉木氏は財政についてたくさん発言されているという印象がありましたが、実はそのはるか上がおり、3位の自民党・上野宏史氏とあまり変わりません。やはり政党というより個人間のばらつきが大きい感じです。なお、玉木雄一郎氏は労働問題については32件投稿されています。
では、NGなトピックについて一番発言している政党の確認です。
df_ng = get_tweets_by_topic(words_ng) party_names_ng = df_ng['party'].value_counts() print(party_names_ng) -- rikken 350 kyosan 276 jimin 135 kokumin 62 shamin 50 ishin 49 independent 39 koumei 38 Name: party, dtype: int64
ぐっと件数は下がったものの、こちらでも立憲民主党がトップでした。どうも立憲民主党は良くも悪くもわたしの関心があるトピックについて語ることが多いようです。ただ、どの党も思ったよりNGな事柄について話していないようなので安心しました。
件数が少ないので、一人当たりの変換はしません。個人の検証に移ります。
person_ng = df_ng['name'].value_counts() person_ng.head(10) -- ShioriYamao 49 tadatomoyoshida 34 yunoki_m 34 pioneertaku84 34 TAMURATAKAAKI 31 ryon_t 22 kondo_shoichi 22 kurabayashia 21 ShiokawaTetsuya 21 kokutakeiji 20 Name: name, dtype: int64
なんと、トップの国民民主党・山尾志桜里氏が国民民主党全件62件のうち49件を稼いでいる!!なるほどですね……
さてここまで来て、わたしが推すべき政党は共産党、政治家は立憲民主党の山井和則氏だということがわかりました。財政と労働、どちらの問題についても積極的なご関心をお持ちのようです。しかし、うーーん共産党は覚悟してたが立憲民主党か……一応、山井氏がNG発言をされていないかどうかを確認します。
person_ng['yamanoikazunori'] -- KeyError: 'yamanoikazunori'
素晴らしい、一件もありません!!
本当に山井氏を推していいかどうか最終確認のために公式サイトを見ます。
yamanoi.net政策を拝見する限り、賃上げや子どもの貧困問題に積極的に取り組んでおられるようです。そこは素晴らしいですね。ただ立憲民主党の政策として事業仕分けや公共事業削減に積極的な点についてはどうお考えなのか気になります。立憲民主党ではなく共産党に移って頂いたら安心できるのかな……
今後の課題
単語でのマッチを見るだけでは主張を解析するのに不十分でしょうから、機械学習での自然言語処理などを使って内容に踏み込んだ主張の解析を行いたいと思います。とはいえそういうことは全然わからないので有識者のご指導ご鞭撻を仰ぎたいところです。chainerとかやればいいのかな……ドキドキ。

- 作者:デヴィッド スタックラー,サンジェイ バス
- 発売日: 2014/10/15
- メディア: 単行本