見出し画像

民主主義のコストを支払うのは行政か、新聞社か、国民か

昨日13日に公開された日経ビジネスの連載ですが、なかなか評判良いみたいで安心しました。年末年始にコーディングした甲斐がありました。

今回は、泣く泣くカットした未公開シーンをお届けします。


コーディングにクソほど苦戦した話

質問主意書の分析は、最初はHPからコピー&ペーストしたら済むかと考えていたのですが、量が多過ぎて直ぐに方針転換し、WEBスクレイピングのための実装に切り替えます。

衆議院のホームページ、参議院のホームページそれぞれ見て頂ければ分かるのですが、構成が全く別。なんで一緒じゃないの。

■衆議院質問主意書ページ
http://www.shugiin.go.jp/internet/itdb_shitsumon.nsf/html/shitsumon/menu_m.htm
■参議院質問主意書ページ
https://www.sangiin.go.jp/japanese/joho1/kousei/syuisyo/201/syuisyo.htm

WEBサイトを見ると、回別にWEBページが分かれていて、質問主意書はそれぞれURLが発行されていると分かります。

また、回別の質問主意書一覧のURLが分かりますが、それらを一気に収集できるページはありません。パンくずリストが微妙なんです。

図2

そこで以下のように考えました。

①第1回~第200回国会の質問主意書のURLはCSVファイルに用意する。
②各国会毎にすべてのデータを収集し、うち質問主意書のURLを保存する。
③取得した質問主意書のURLから関係するテキストを保存する。

②については以下のようにRで実装しました。下手くそでゴメンなさい。

library(rvest)
library(readr)

# 衆議院質問主意書
shuin<-read.csv("shuin.csv",stringsAsFactors=F,header=T)
shuin<-data.frame(shuin,stringsAsFactors=FALSE)
l <- nrow(shuin)

# 出力
for (i in 1:l) {
 page <- read_html(shuin$URL[i])
 link <- page %>%
   html_nodes("a") %>%
   html_attr("href")
 results <- subset(link, grepl(".htm$",link))
 results <- subset(results, grepl("^b",results))
 
 # 提出番号の分だけ行数を追加
 dat<-data.frame(results,stringsAsFactors=FALSE)

 # URL生成
 # 衆院の場合は147回以前はURLが違う
 if (i < 147) {
   syuisyo <- "http://www.shugiin.go.jp/internet/itdb_shitsumona.nsf/html/shitsumon"
 } else {
   syuisyo <- "http://www.shugiin.go.jp/Internet/itdb_shitsumon.nsf/html/shitsumon"
 }
 # 結合
 lists <- cbind(syuisyo, results)
 
 # 自動書き出し
 write.table(lists, "shuin_kekka.csv",append=TRUE,sep = ",")
 
 # 3秒待つ
 Sys.sleep(3)
}


# 参議院質問主意書
sanin<-read.csv("sanin.csv",stringsAsFactors=F,header=T)
sanin<-data.frame(sanin,stringsAsFactors=FALSE)
l <- nrow(sanin)

# 出力
for (i in 1:l) {
 page <- read_html(sanin$URL[i], encoding = "UTF-8")
 link <- page %>%
         html_nodes("a") %>%
         html_attr("href")
 results <- subset(link, grepl("touh",link))
 
 # 提出番号の分だけ行数を追加
 dat<-data.frame(results,stringsAsFactors=FALSE)

 # URL生成
 syuisyo <- paste("https://www.sangiin.go.jp/japanese/joho1/kousei/syuisyo", moji$文字列[i],"", sep = "/")
 
 # 結合
 lists <- cbind(syuisyo, results)
 head(lists)
 
 # 自動書き出し
 write.table(lists, "sanin_kekka.csv",append=TRUE,sep = ",")
 
 # 3秒待つ
 Sys.sleep(3)
}

これで質問主意書のURLは完成です。

あとはスクレイピングするのみ。

dat<-read.csv("sanin_kekka.csv",stringsAsFactors=F,header=T)
dat<-data.frame(dat,stringsAsFactors=FALSE)
l <- nrow(dat)

# 出力
for (i in 1:l) {
   html <- read_html(dat$results[i], encoding = "UTF8")
   honbun <-html %>% 
            html_text()
   
   # 自動書き出し
   write.table(honbun[1], "sanin_kaitou.csv",append=TRUE,sep = ",")
   
   # 2秒待つ
   Sys.sleep(2)
}

参議院の場合、たまに文字化けに引っ掛かってしまい苦戦しました。

衆議院の場合、ほとんどが文字化けだらけでread_html()が動いてくれませんでした。色々ググったのですが、解決方法が分からず急遽Pythonで実行しました。

import sys
import csv
import pprint
import requests
import bs4
from time import sleep

with open('shuin_kekka.csv') as f:
   lines = f.readlines()
   lines_strip = [line.strip() for line in lines]

r = requests.get(lines_strip[1])
r.encoding = 'Shift_JIS'

for i in range(1,12679):
   r = requests.get(lines_strip[i])
   with open('shuin_kaito.csv', mode='a', encoding='UTF-8') as f:
       f.write('\n')
       f.write(r.text)
   sleep(1)

コードを読まれたら、思わず「ん?」と感じたかもしれません。実質、生データをそのまま出力しているだけなので、後はSAKURAエディタを使って置換などを行っています。


東京新聞の望月衣塑子さんが好きになれない

テキストデータさえ残っていれば、私のような一般市民でも全体の傾向を精査できます。傾向と兆候はこれで掴めるので、後は新聞記者の出番です。

なぜ鈴木宗男さんは質問主意書を連発していたのに、今はやらないのか。

質問主意書制度を、衆参議長はどう思っているのか。

質問主意書を維持するのに、どれくらいのコストが掛かっているのか。

気になりませんか? 私は気になります。

多少のプログラミング知識は必要かもしれませんが、顧客に提供するサービスを作るわけでもないので、これぐらいのコードはジャーナリストであっても書けて欲しいです。

コードは目的ではなく手段。手段さえ身に付ければ、やれる仕事の範囲は広がります。

とにかくデータさえあれば、切り口はいくらでも生み出せます。

例えば、麻生大臣は直ぐに朝日新聞含めて既存メディアを小馬鹿にした発言をよく口にしますが、その登場頻度がどの財務・大蔵大臣よりも多いかどうかは、記者会見のWEBページからデータ収集すれば分かります

財務省の場合、1998年11月10日まで遡って確認できます。記者との丁々発止のやり取り含め、記者会見にオフレコは存在せず、基本的には記録されていると信じています。

財務省 > 大臣等記者会見
https://www.mof.go.jp/public_relations/conference/

今、一番分析したい記者会見は菅官房長官の記者会見でしょうか。東京新聞や毎日新聞の記者たちとの丁々発止のやり取りを、いかに分析するかは腕の見せ所です。

しかし内閣官房のWEBサイトを見てみると、記者とのやり取りは一切テキストとして記録されていません。これは菅官房長官に限らず、過去に遡って全てです。一方で動画は記録されています。

ただし動画をそのまま分析できないので、まずはテキストデータに置換しなければいけません。そのためには「Amazon Transcribe」「Speech to Text」等の音声をテキストに置換してくれるクラウドサービスを利用しなければいけません。

全てをテキスト化するには、何十万とかかりそうですが、そのためのコストは私が支払わなければならないのでしょうか?

内閣官房、仕事しろよ、と思っています。

で、それは私が言わないといけないのでしょうか? 「第4の権力」たる新聞社が言えよ、と思うのです。

各新聞には、記者との丁々発止のやり取りの結果得られた菅官房長官のコメントが掲載されています。しかし、それらは集計されたインフォメーションであり、私が欲しいのは加工されていない生データです。生データが無いと何も始まりません。

政治的な主張に関係無く、東京新聞の望月記者を好きになれないのは、菅官房長官から何かコメントを引き出そうとする姿勢は良いにしろ、何を語ったのか全てが残されていない中でチョイスされた言葉だけの掲載で良しとする姿勢です。

本当にそれで良いと思ってるのかな、と感じています。

誰もがデータにアクセスでき、誰もが容易に簡単に調べられる。それこそが開かれた民主主義だと思うのですが、なぜそのためのコストを一般人が支払わなければならないのか、議論が必要だと考えています。

1本書くのに、だいたい3〜5営業日くらいかかっています。良かったら缶コーヒー1本のサポートをお願いします。