diff --git a/inst/reports/implementierung.pdf b/inst/reports/implementierung.pdf new file mode 100644 index 0000000..f35108c Binary files /dev/null and b/inst/reports/implementierung.pdf differ diff --git a/inst/reports/implementierung.tex b/inst/reports/implementierung.tex new file mode 100644 index 0000000..bfc9c18 --- /dev/null +++ b/inst/reports/implementierung.tex @@ -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 + +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 commentator 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}