\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 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 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 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 commenter content 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 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}