| @@ -0,0 +1,171 @@ | |||||
| \documentclass{beamer} | |||||
| \usepackage[utf8]{inputenc} | |||||
| \usepackage{listings} | |||||
| \lstdefinestyle{mystyle}{ | |||||
| commentstyle=\color{gray}, | |||||
| keywordstyle=\color{black}, | |||||
| numberstyle=\tiny\color{gray}, | |||||
| stringstyle=\color{black}, | |||||
| basicstyle=\ttfamily\footnotesize, | |||||
| breakatwhitespace=false, | |||||
| breaklines=true, | |||||
| captionpos=b, | |||||
| keepspaces=true, | |||||
| numbers=left, | |||||
| numbersep=5pt, | |||||
| showspaces=false, | |||||
| showstringspaces=false, | |||||
| showtabs=false, | |||||
| tabsize=2 | |||||
| } | |||||
| \lstset{style=mystyle} | |||||
| \begin{document} | |||||
| \begin{frame} | |||||
| \frametitle{Implementierung} | |||||
| \tableofcontents | |||||
| \end{frame} | |||||
| \section{Herunterladen der Protokolle} | |||||
| \begin{frame} | |||||
| \frametitle{Herunterladen der Protokolle} | |||||
| Funktion: \lstinline{fetch_all(download_dir)} | |||||
| \begin{itemize}[<+->] | |||||
| \item Protokolle als XML-Dateien von \url{bundestag.de} herunterladen und | |||||
| in \lstinline{download_dir} speichern. | |||||
| \item Problem: Maschinenunfreundliche Webseite | |||||
| \item Lösung: Source Code von \url{bundestag.de} nach Schnittstelle durchsuchen | |||||
| \end{itemize} | |||||
| \end{frame} | |||||
| \section{Konvertierung der XML-Dateien in tibbles} | |||||
| \begin{frame} | |||||
| \frametitle{Konvertierung der XML-Dateien in tibbles} | |||||
| Funktion: \lstinline{read_all(filepath)} | |||||
| \begin{itemize}[<+->] | |||||
| \item Liest jede XML-Datei in angegebenem Dateipfad einzeln | |||||
| \item Extrahiert Sitzungsdatum, Rednerliste und Sitzungsverlauf | |||||
| \item Konvertiert Rednerliste in eine R Liste. | |||||
| \item Iteriert durch den Sitzungsverlauf, extrahiert Reden, | |||||
| Redebeiträge, Kommentare und Beifall | |||||
| \item Kombiniert alle Redner, Reden, Redebeiträge, Kommentare und Beifall | |||||
| zu 5 tibbles und gibt benannte Liste zurück. | |||||
| \end{itemize} | |||||
| \end{frame} | |||||
| \begin{frame}[fragile] | |||||
| \frametitle{Tabellen} | |||||
| Ergebnis der Konvertierung ist eine benannte Liste \lstinline{res} mit tibbles: | |||||
| \pause | |||||
| \begin{lstlisting}[language=R,basicstyle=\tiny\ttfamily] | |||||
| > res$speaker | |||||
| # A tibble: 1,025 x 7 | |||||
| id prename lastname fraction title role_short role_long | |||||
| <chr> <chr> <chr> <chr> <chr> <chr> <chr> | |||||
| 1 110021 Alterspraesident D Otto Solms NA NA Alterspraesi Alterspraesi | |||||
| 2 110032 Carsten Schneider SPD NA NA NA | |||||
| # with 1,023 more rows | |||||
| \end{lstlisting} | |||||
| \pause | |||||
| \begin{lstlisting}[language=R,basicstyle=\tiny\ttfamily] | |||||
| > res$speeches | |||||
| # A tibble: 25,068 x 3 | |||||
| id speaker date | |||||
| <chr> <chr> <date> | |||||
| 1 ID19100100 11002190 2017-10-24 | |||||
| 2 ID19100200 11002190 2017-10-24 | |||||
| # with 25,066 more rows | |||||
| \end{lstlisting} | |||||
| \pause | |||||
| \begin{lstlisting}[language=R,basicstyle=\tiny\ttfamily] | |||||
| > res$talks | |||||
| # A tibble: 63,663 x 3 | |||||
| speech_id speaker content | |||||
| <chr> <chr> <chr> | |||||
| 1 ID19100100 11002190 "Guten Morgen, liebe Kolleginnen und Kollegen! Nehmen Sie | |||||
| 2 ID19100300 11003218 "Sehr geehrter Herr Praesident! Sehr geehrte Kolleginnen u | |||||
| # with 63,661 more rows | |||||
| \end{lstlisting} | |||||
| \end{frame} | |||||
| \begin{frame}[fragile] | |||||
| \begin{lstlisting}[language=R,basicstyle=\tiny\ttfamily] | |||||
| > res$comments | |||||
| # A tibble: 83,649 x 5 | |||||
| speech_id on_speaker fraction commentator content | |||||
| <chr> <chr> <chr> <chr> <chr> | |||||
| 1 ID19100300 11003218 BUENDNIS 90/D Katrin Goering Was? | |||||
| 2 ID19100300 11003218 CDU/CSU Volker Kauder Warum habt ihr das bei Ge | |||||
| # with 83,647 more rows | |||||
| \end{lstlisting} | |||||
| \pause | |||||
| \begin{lstlisting}[language=R,basicstyle=\tiny\ttfamily] | |||||
| > res$applause | |||||
| # A tibble: 89,586 x 8 | |||||
| speech_id on_speaker CDU_CSU SPD FDP DIE_LINKE BUENDNIS_90_DIE_GRU AfD | |||||
| <chr> <chr> <lgl> <lgl> <lgl> <lgl> <lgl> <lgl> | |||||
| 1 ID19100300 11003218 FALSE TRUE FALSE TRUE TRUE FALSE | |||||
| 2 ID19100300 11003218 FALSE TRUE TRUE TRUE FALSE FALSE | |||||
| # with 89,584 more rows\end{lstlisting} | |||||
| \end{frame} | |||||
| \section{Reparieren von Fehlern} | |||||
| \begin{frame} | |||||
| \frametitle{Reparieren von Fehlern} | |||||
| Problem: Uneinheitliche Schreibweisen / Fehler in den Rednerlisten. | |||||
| \pause | |||||
| Lösung: Funktion: \lstinline{repair_speaker(speakers)} | |||||
| \pause | |||||
| \begin{itemize}[<+->] | |||||
| \item Erhält \lstinline{tibble} von Rednern | |||||
| \item Entfernt Redner mit ungültigen, doppelt vergebenen IDs | |||||
| \item Vereinheitlicht Schreibweisen der Fraktionen, Namen und Titel der Redner | |||||
| \end{itemize} | |||||
| \end{frame} | |||||
| \begin{frame} | |||||
| \frametitle{Reparieren von Fehlern} | |||||
| Problem: Namen in Kommentaren Rednern aus Rednertabelle zuordnen | |||||
| \pause | |||||
| Lösung: Funktion \lstinline{repair_comments(comments, speakers)} | |||||
| \begin{itemize} | |||||
| \item Erstellt für jeden Redner einen Regulären Ausdruck aus dem Namen | |||||
| \item Sucht für jeden Kommentar nach dem entsprechenden Eintrag in der | |||||
| Rednertabelle | |||||
| \end{itemize} | |||||
| \end{frame} | |||||
| \begin{frame} | |||||
| \frametitle{Reparieren von Fehlern} | |||||
| Beide Reparaturschritte werden in der Funktion \lstinline{repair} zusammengefasst. | |||||
| \end{frame} | |||||
| \section{Analyse} | |||||
| \begin{frame} | |||||
| \frametitle{Analyse} | |||||
| Stelle Hilfsfunktionen zur Analyse der Daten zur Verfügung: | |||||
| \begin{itemize}[<+->] | |||||
| \item \lstinline{bar_plot_fractions}: Erstellt ein Balkendiagramm aus einer Tabelle | |||||
| mit Fraktionsdaten | |||||
| \item \lstinline{find_word}: Fügt in der Redebeiträgetabelle zu jedem Redebeitrag | |||||
| die Häufigkeit eines Regulären Ausdrucks hinzu. | |||||
| \item \lstinline{word_usage_by_date}: Zählt an welchen Daten (Tagen) ein regulärer Ausdruck | |||||
| wie oft verwendet wird. | |||||
| \item \lstinline{join_speaker}: Fügt einer Tabelle mit Spalte \lstinline{speaker} die | |||||
| enstprechenden Informationen aus der Rednertabelle hinzu. | |||||
| \end{itemize} | |||||
| \end{frame} | |||||
| \end{document} | |||||