{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Assignment XML processing\n", "\n", "## Notebook made by \n", "\n", "|** Name** | **Student id** | **email**|\n", "|:- |:-|:-|\n", "|. | | |\n", "| | |. |\n", "\n", "### Pledge (taken from [Coursera's Honor Code](https://www.coursera.org/about/terms/honorcode) )\n", "\n", "\n", "\n", "Put here a selfie with your photo where you hold a signed paper with the following text: (if this is team work, put two selfies here). The link must be to some place on the web, not to a local file. \n", "\n", "> My answers to homework, quizzes and exams will be my own work (except for assignments that explicitly permit collaboration).\n", "\n", ">I will not make solutions to homework, quizzes or exams available to anyone else. This includes both solutions written by me, as well as any official solutions provided by the course staff.\n", "\n", ">I will not engage in any other activities that will dishonestly improve my results or dishonestly improve/hurt the results of others.\n", "\n", "\n", "\n", "### Note\n", "* **Assignments without the selfies or completely filled in information will not be graded and receive 0 points.**\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# XML opdracht\n", "\n", "* We gaan bekijken hoe vaak Wilders onderbroken wordt in de Tweede Kamer en door wie.\n", "* Als input files hebben we de Handelingen van de Tweede Kamer in keurig XML formaat.\n", "* Je kunt die bekijken op [overheid.nl](https://zoek.officielebekendmakingen.nl/zoeken/resultaat?zkt=Uitgebreid&pst=ParlementaireDocumenten&vrt=opening&zkd=AlleenInDeTitel&dpr=AnderePeriode&spd=20140101&epd=20160930&kmr=TweedeKamerderStatenGeneraal&sdt=KenmerkendeDatum&par=Handeling&dst=Onopgemaakt%7cOpgemaakt%7cOpgemaakt+na+onopgemaakt&isp=true&pnr=1&rpp=10)\n", "\n", "* Jouw taak is code te schrijven die 2 dingen doet:\n", "\n", "\n", "### Data voor de opdracht\n", "\n", "\n", "\n", "## Taak 1\n", "Maak uit de XML bestanden in `TK_Handelingen_2013-2016.zip` een bestand `interrupties.csv` met de volgende soort data: de kolommen zijn\n", "`'date','termijn','spreker','rol','indegree','aantal_interrupts','interruptie_volgorde','OnderwerpDebat','url'` en dit is een voorbeeld.\n", " \n", " \n", "```\n", "20122013-10-15,1,Recourt,De heer,3,8,Van Raak-Van Raak-Van Raak-Pechtold-Pechtold-Pechtold-Van Ojik-Van Ojik,Begroting Algemene Zaken en begroting van de Koning,https://zoek.officielebekendmakingen.nl/h-tk-20122013-10-15.html \n", "20122013-10-15,1,Van der Burg,Mevrouw,2,6,Thieme-Thieme-Pechtold-Pechtold-Pechtold-Pechtold,Begroting Algemene Zaken en begroting van de Koning,https://zoek.officielebekendmakingen.nl/h-tk-20122013-10-15.html \n", "20122013-10-15,1,Bosma,De heer,0,0,,Begroting Algemene Zaken en begroting van de Koning,https://zoek.officielebekendmakingen.nl/h-tk-20122013-10-15.html \n", "20122013-10-15,1,Van Toorenburg,Mevrouw,2,5,Pechtold-Pechtold-Pechtold-Bosma-Bosma,Begroting Algemene Zaken en begroting van de Koning,https://zoek.officielebekendmakingen.nl/h-tk-20122013-10-15.html \n", "20122013-10-15,1,Van Raak,De heer,2,6,Recourt-Van der Burg-Van der Burg-Van der Burg-Recourt-Recourt,Begroting Algemene Zaken en begroting van de Koning,https://zoek.officielebekendmakingen.nl/h-tk-20122013-10-15.html \n", "```\n", "* `termijn` is een integer dat de keer in het debat aangeeft dat de spreker vanaf het spreekgestoelte de zaal toespreekt. In de Kamer spreekt men van \"eerste termijn\" en \"tweede termijn\".\n", "* `indegree` betekent hier het aantal mensen dat `spreker` onderbroken heeft. `aantal_interrupts` is het totaal aantal keer dat een spreker onderbroken is.\n", "* Let op, de `date` kolom bevat niet echt een datum, maar is gemaakt van de filenaam: het is dus de periode, gevolgd door de hoeveelste vergadering in die periode, gevolgd het hoeveelste debat in die vergadering. \n", "* Let op, de filenamen zijn net ietsje anders dan deze waardes. Op deze manier is een eenvoudige sort voldoende om ze netjes chronologisch te krijgen.\n", "\n", "#### Let op\n", "Je zal zelf moeten uitvogelen hoe interrupties en sprekers etc in de XML zijn gecodeerd. Doe dit door de PDFs en HTML te bekijken, en desnoods een video van een debat. \n", " \n", " \n", "## Taak 1x\n", "\n", "Voeg een kolom \"interruptors\" toe aan `interrupties.csv` met daarin een dict van de vorm {interruptor : hoe vaak interruptor spreker onderrboken heeft}.\n", "Dus in de eerste regel van dit CSV voorbeeld krijgen we `{u'Van Raak': 3, u'Van Ojik': 2, u'Pechtold': 3}`\n", "\n", "## Taak 2\n", "\n", "Maak uit `interrupties.csv` met Pandas een dataframe wat er net zo uitziet als `Interruptors_van_Wilders.csv `.\n", "Die staat ook op \n", "\n", "\n", "## Taak 3\n", "\n", "* Plot het aantal interrupties van Wilders per debat samen met het gemiddeld aantal interrupties in dat debat.\n", " * Zet de \"datums\" op de x-as, en gebruik alleen die debatten waarin Wilders ook echt gesproken heeft. \n", "\n", "## Taak 4\n", "* Verzin zelf iets bijzonders/geks/leuks met deze data, leg uit wat het betekent, en laat je resultaat grafisch zien.\n", "* Verbind je onderzoeksvraag met de literatuur. \n", "\n", "#### Hier ben je heel vrij.\n", "\n", "Je kunt van alles doen. Dingen gaan tellen, maar allicht ook iets met de gesproken woorden doen. Wat suggesties:\n", "\n", "* Zeggen mannen andere dingen dan vrouwen? \n", "* Debatteren vrouwen anders dan mannen? \n", "* Vind de \"stopwoordjes\" van elke politicus.\n", "* IR-achtig: maak een model van elke politicus op basis van de woorden die zij heeft gezegd, en\n", "kijk dan (bijvoorbeeld met cosine-similarity) wie er veel op elkaar lijken.\n", "* Maak een netwerk van politici en laat zien wie er belangrijk is.\n", "* Bepaal het sentiment van politici, debatten, onderwerpen, ....\n", "\n", "\n", "\n", "# Let op\n", "\n", "* Maak je code zo dat **Wilders** een variabele wordt die aan het begin wordt gezet.\n", "* In jouw code moet ik die variabele kunnen vervangen door **Pechtold** of **Samson** of wie dan ook, dezelfde analyses uit taken 2-4 kunnen doen. " ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "49.980000000000004" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "8.33*6" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.11" } }, "nbformat": 4, "nbformat_minor": 0 }