==== Swiss parliament minutes scraping ====
[[http://parlement.letemps.ch]]
Is the Swiss parliament really useful ? Once elected, what are our councilors talking about ? Who is answering to whom ?
Goal of this project is to answer some of these questions and many more. To do this, we are planning to:
- Scrape the parliament website in order to retrieve councilors bio, topics discussed and minutes
- Structure them in session, intervention (with rank/order), author and text
In order to perform some analysis, as
- from keywords, who talks about what, by parties, cantons and people
- person vs. vocabulary
- dialogue order
- gender
Our NEW [[https://github.com/douglas-watson/parl-scraping|github]] (careful, we had to fork it at the beginning of day 2).
=== Data ===
Raw data are available as one single JSON file, and its .csv counterpart. We had size problems, thus exploring ways to produce several .csv.
**The [[https://github.com/douglas-watson/parl-scraping/tree/master/data|final folder for our data is on github]], the [[https://github.com/douglas-watson/parl-scraping/blob/master/data/with-bio-split-csv.zip|.csv files split by session are here]].**
== Structure of the main JSON (on Giovanni's side, complement with the bio data from the Parliament API) ==
list of interventions, with the following fields:
* Link_subject: link to the page of the subject under discussion (cf. CuriaVista)
* Surname: of the person speaking
* Description: of the subject under discussion
* Bio: link to the page of the person speaking
* Canton: of provenance
* Subject_id: of the subject under discussion (still to be understood: typology)
* Date: of the intervention (DD.MM.YY)
* Group: political group of the person speaking at the moment of the intervention
* Session_title: title of the session (Séance)
* Data: transcript of the intervention
* Name: of the person speaking
== Structure of the Parliament API data via Yannick ==
* [[http://ws.parlament.ch/councillors/823?format=json|Very rich example fields-wise]] (thus almost complete) for one councillor
* [[http://ws.parlament.ch/councillors|All councillors]]
* [[http://www.parlament.ch/e/dokumentation/webservices-opendata/Documents/webservices-info-dritte-e.pdf|API's doc]]
* [[https://github.com/douglas-watson/parl-scraping/tree/master/biography_retrieval|Code on github]]
* From those data, building of a file (light one) describing members of parliament ([[https://github.com/douglas-watson/parl-scraping/tree/master/biography_csv_extract|script on github in the same folder]])
Fields are: id cantonName council firstName lastName party active birthDate gender language maritalStatus militaryGrade partyId salutationLetter workLanguage
== Structure of the final files from Jérémie ==
1 JSON file + its .csv counterpart for each Parliament session of the National Council from 1995.
The same datasets are also available split as one JSON/CSV file per legislative session.
== Graph data for Yannick ==
graph.csv: edgeless with Source (bio url as id of person replying to) - Destination (bio url as id of person talking before) - Subject (id of subject under discussion) - Date (of intervention, YY.MM.DD)
nodes.csv: nodelist with bio id - name - surname - canton - political group
=== Results visualization ===
* Kibana Dashboard iframe:
* [[http://178.62.236.56:3335/#/dashboard/Swiss-parliament-minutes-scraping?_a=(filters:!(),panels:!((col:1,id:Total-count,row:1,size_x:3,size_y:2,type:visualization),(col:9,id:Who,row:3,size_x:4,size_y:4,type:visualization),(col:1,id:Parties,row:3,size_x:4,size_y:4,type:visualization),(col:4,id:Members,row:1,size_x:9,size_y:2,type:visualization),(col:5,id:County,row:3,size_x:4,size_y:4,type:visualization)),query:(query_string:(analyze_wildcard:!t,query:'*')),title:'Swiss%20parliament%20minutes%20scraping')&_g=()|Example of a Kibana Dashboard]]:
* Example viz graph "who talks to who":
* Semantic distance between members of parliament:
* A simple gender gap visualization for the current Parliament that kind of summarizes it all: <[[https://docs.google.com/spreadsheets/d/1MiO6w331UMGX4vYTyhsMs5uUAgAUCJfyzPkRqAUSjww/edit?usp=sharing|gsheet shalf]]>
===== Team =====
* Giovanni Colavizza, [[https://github.com/Giovanni1085|github: Giovanni1085]]
* Pierre-Alexandre Fonta [[https://twitter.com/pa_fonta|@pa_fonta]], [[https://github.com/pafonta|github: pafonta]]
* [[http://shalf.me|Yann Heurtaux]] [[https://twitter.com/shalf|@shalf]], [[https://github.com/shalf|github: shalf]]
* Fabrice Hong, [[https://github.com/fabricehong|github: fabricehong]]
* Jan Iwaszkiewicz, [[https://github.com/jan44|github: jan44]]
* Jérémie Knüsel [[https://twitter.com/ambystome|@ambystome]], [[https://github.com/knuesel|github: knuesel]]
* Sylvain Moesching
* [[user:nray|Nicolas Ray]]
* [[http://yro.ch|Yannick Rochat]] [[https://twitter.com/yrochat|@yrochat]], [[https://github.com/yrochat|github: yrochat]]
* Douglas Watson, [[https://github.com/douglas-watson|github: douglas-watson]]
===== Links =====
* [[http://www.parlament.ch/ab/frameset/f/index.htm|Minutes of the parliament]]
* [[http://ws.parlament.ch/|Parliament API]]
* [[http://www.parlament.ch/e/dokumentation/webservices-opendata/Documents/webservices-info-dritte-e.pdf|API doc]]
{{tag>elections politics}}