Remove CSFR from GET and redo indentation fpr HTML files.

This commit is contained in:
Stephan Porada 2020-08-02 14:35:41 +02:00
parent acc210ee47
commit ff26bc2a37
16 changed files with 1320 additions and 1330 deletions

View File

@ -5,95 +5,95 @@
{% block content %} {% block content %}
<div class="parallax-container"> <div class="parallax-container">
<div class="section white"> <div class="section white">
<div class="row "> <div class="row ">
<div class="container grey-text text-darken-3 lighten-3"> <div class="container grey-text text-darken-3 lighten-3">
<h4 class="header black-text">Die Masterarbeit</h4> <h4 class="header black-text">Die Masterarbeit</h4>
<p>Diese Webseite sowie die für diese benötigten Daten sind im Rahmen einer Masterarbeit entstanden. In der Arbeit sind die Funktionsweise <p>Diese Webseite sowie die für diese benötigten Daten sind im Rahmen einer Masterarbeit entstanden. In der Arbeit sind die Funktionsweise
der Software für die automatische Auszeichnung der der Software für die automatische Auszeichnung der
Bundestagsplenarprotokolle sowie die der Webanwendung Bundestagsplenarprotokolle sowie die der Webanwendung
beschrieben. Die Arbeit kann <a href="https://gitlab.ub.uni-bielefeld.de/sporada/bundesdata_web_app/raw/24641c2959796659d428514c9cdd3782d4248da0/2019-02-04_Stephan_Porada_Masterthesis_semi.pdf?inline=false">hier gelesen</a> werden.<p> beschrieben. Die Arbeit kann <a href="https://gitlab.ub.uni-bielefeld.de/sporada/bundesdata_web_app/raw/24641c2959796659d428514c9cdd3782d4248da0/2019-02-04_Stephan_Porada_Masterthesis_semi.pdf?inline=false">hier gelesen</a> werden.<p>
<p>Weiter unten sind einige grundlegende Aspekte des Projekts kurz beschrieben. Ebenfalls kann dort der Quellcode der Webanwendung und der Software für die automatische Auszeichnung heruntergeladen werden.</p> <p>Weiter unten sind einige grundlegende Aspekte des Projekts kurz beschrieben. Ebenfalls kann dort der Quellcode der Webanwendung und der Software für die automatische Auszeichnung heruntergeladen werden.</p>
</div> </div>
</div>
</div> </div>
<div class="parallax"><img src="{% static "/blog/images/4094966.jpg" %}"></div> </div>
<div class="parallax"><img src="{% static "/blog/images/4094966.jpg" %}"></div>
</div> </div>
<div class="parallax-container"> <div class="parallax-container">
<div class="section white"> <div class="section white">
<div class="row "> <div class="row ">
<div class="container grey-text text-darken-3 lighten-3"> <div class="container grey-text text-darken-3 lighten-3">
<h4 class="header black-text">Datengrundlage</h4> <h4 class="header black-text">Datengrundlage</h4>
<p>Die Ausgangsdaten, welche für das Projekt genutzt wurden, sind für <p>Die Ausgangsdaten, welche für das Projekt genutzt wurden, sind für
alle Bürger und Bürgerinnen auf der alle Bürger und Bürgerinnen auf der
<a href="https://www.bundestag.de/service/opendata">Webseite des Bundestag</a> <a href="https://www.bundestag.de/service/opendata">Webseite des Bundestag</a>
frei zugänglich.</p> frei zugänglich.</p>
<p>Im Rahmen einer Open <p>Im Rahmen einer Open
Data-Initiative stellt der deutsche Bundestag alle Plenarprotokolle Data-Initiative stellt der deutsche Bundestag alle Plenarprotokolle
sowie die biografischen Daten aller Abgeordneten seit 1949 als sowie die biografischen Daten aller Abgeordneten seit 1949 als
XML-Dateien zur Verfügung.</p> XML-Dateien zur Verfügung.</p>
<p> <p>
Das Projekt Bundesdata umfasst alle XML-Protokolle der Wahlperioden 1. Das Projekt Bundesdata umfasst alle XML-Protokolle der Wahlperioden 1.
bis 18. und deckt somit den Zeitraum von 1949 bis 2017 ab.<p> bis 18. und deckt somit den Zeitraum von 1949 bis 2017 ab.<p>
</div> </div>
</div>
</div> </div>
<div class="parallax"><img src="{% static "/blog/images/4094966.jpg" %}"></div> </div>
<div class="parallax"><img src="{% static "/blog/images/4094966.jpg" %}"></div>
</div> </div>
<div class="parallax-container"> <div class="parallax-container">
<div class="section white"> <div class="section white">
<div class="row "> <div class="row ">
<div class="container grey-text text-darken-3 lighten-3"> <div class="container grey-text text-darken-3 lighten-3">
<h4 class="header black-text">Automatische Auszeichnung</h4> <h4 class="header black-text">Automatische Auszeichnung</h4>
<p>Da die von derBundesregierung bereitstellen XML-Protokolle nur wenig <p>Da die von derBundesregierung bereitstellen XML-Protokolle nur wenig
bis keine maschinenlesbare Informationen dazu enthalten, welcher bis keine maschinenlesbare Informationen dazu enthalten, welcher
Abgeordnete oder welche Abgeordnete zu welchem Zeitpunkt einen Redebeitrag Abgeordnete oder welche Abgeordnete zu welchem Zeitpunkt einen Redebeitrag
im Bundestag hatte, sind die Ausgangsdaten im Rahmen des Projekts im Bundestag hatte, sind die Ausgangsdaten im Rahmen des Projekts
automatisch mit weiteren Informationen angereichert und strukturiert automatisch mit weiteren Informationen angereichert und strukturiert
worden. Hierfür wurde eine eigene Software entwickelt, die die öffentlich verfügbaren XML-Protokolle automatisch mit zusätzliche Metadaten auszeichnet. Diese Auszeichnung ermöglicht es die Protokolle auf der Website strukturiert darzustellen und durchsuchbar zu machen. Ebenfalls können so auch erst die N-Gramme für den Ngram Viewer berechnet werden.</p> worden. Hierfür wurde eine eigene Software entwickelt, die die öffentlich verfügbaren XML-Protokolle automatisch mit zusätzliche Metadaten auszeichnet. Diese Auszeichnung ermöglicht es die Protokolle auf der Website strukturiert darzustellen und durchsuchbar zu machen. Ebenfalls können so auch erst die N-Gramme für den Ngram Viewer berechnet werden.</p>
</div> </div>
</div>
</div> </div>
<div class="parallax"><img src="{% static "/blog/images/4094966.jpg" %}"></div> </div>
<div class="parallax"><img src="{% static "/blog/images/4094966.jpg" %}"></div>
</div> </div>
<div class="parallax-container"> <div class="parallax-container">
<div class="section white"> <div class="section white">
<div class="row "> <div class="row ">
<div class="container grey-text text-darken-3 lighten-3"> <div class="container grey-text text-darken-3 lighten-3">
<h4 class="header black-text">Quellcode für Software und Webanwendung</h4> <h4 class="header black-text">Quellcode für Software und Webanwendung</h4>
<p> <p>
Der Quellcode für die eigens entwickelte Software, welche die automatische Der Quellcode für die eigens entwickelte Software, welche die automatische
Auszeichnung erstellt hat, kann auf <a href="https://gitlab.ub.uni-bielefeld.de/sporada/bundesdata_markup_nlp_software">GitLab</a> eingesehen und Auszeichnung erstellt hat, kann auf <a href="https://gitlab.ub.uni-bielefeld.de/sporada/bundesdata_markup_nlp_software">GitLab</a> eingesehen und
heruntergeladen werden. Der Quellcode für die Webseite ist ebenfalls heruntergeladen werden. Der Quellcode für die Webseite ist ebenfalls
auf <a href="https://gitlab.ub.uni-bielefeld.de/sporada/bundesdata_web_app">GitLab</a> verfügbar.</p> auf <a href="https://gitlab.ub.uni-bielefeld.de/sporada/bundesdata_web_app">GitLab</a> verfügbar.</p>
</div> </div>
</div>
</div> </div>
<div class="parallax"><img src="{% static "/blog/images/4094966.jpg" %}"></div> </div>
<div class="parallax"><img src="{% static "/blog/images/4094966.jpg" %}"></div>
</div> </div>
<div class="parallax-container"> <div class="parallax-container">
<div class="section white"> <div class="section white">
<div class="row "> <div class="row ">
<div class="container grey-text text-darken-3 lighten-3"> <div class="container grey-text text-darken-3 lighten-3">
<h4 class="header black-text">Download der ausgezeichneten Daten</h4> <h4 class="header black-text">Download der ausgezeichneten Daten</h4>
<p> <p>
Die für das Projekt mittels der eigenen Software erstellten XML-Protokolle sowie weitere Forschungsdaten können <a href="https://gitlab.ub.uni-bielefeld.de/sporada/bundesdata_markup_nlp_data"> hier heruntergeladen werden</a>.</p> Die für das Projekt mittels der eigenen Software erstellten XML-Protokolle sowie weitere Forschungsdaten können <a href="https://gitlab.ub.uni-bielefeld.de/sporada/bundesdata_markup_nlp_data"> hier heruntergeladen werden</a>.</p>
</div> </div>
</div>
</div> </div>
<div class="parallax"><img src="{% static "/blog/images/4094966.jpg" %}"></div> </div>
<div class="parallax"><img src="{% static "/blog/images/4094966.jpg" %}"></div>
</div> </div>
<div class="parallax-container"> <div class="parallax-container">
<div class="section white"> <div class="section white">
<div class="row "> <div class="row ">
<div class="container grey-text text-darken-3 lighten-3"> <div class="container grey-text text-darken-3 lighten-3">
<h4 class="header black-text">Fehlerquoten und Probleme der Ausgangsdaten</h4> <h4 class="header black-text">Fehlerquoten und Probleme der Ausgangsdaten</h4>
<p>Die automatische Auszeichnung der Protokolle ist nicht gänzlich fehlerfrei. <p>Die automatische Auszeichnung der Protokolle ist nicht gänzlich fehlerfrei.
Somit können Fehler bei der Darstellung der Reden auf der Website auftreten. Somit können Fehler bei der Darstellung der Reden auf der Website auftreten.
Wie hoch genau die einzelen Fehlerqouten sind, ist in der <a href="#">Masterarbeit</a> beschrieben</p> Wie hoch genau die einzelen Fehlerqouten sind, ist in der <a href="#">Masterarbeit</a> beschrieben</p>
</div> </div>
</div>
</div> </div>
<div class="parallax"><img src="{% static "/blog/images/4094966.jpg" %}"></div> </div>
<div class="parallax"><img src="{% static "/blog/images/4094966.jpg" %}"></div>
</div> </div>
{% endblock content %} {% endblock content %}

View File

@ -9,94 +9,94 @@ Also all needes JavaScript and CSS is laoded here.-->
<html lang="ger"> <html lang="ger">
<head> <head>
<!-- Required meta tags --> <!-- Required meta tags -->
<meta charset="utf-8"> <meta charset="utf-8">
<!--Let browser know website is optimized for mobile--> <!--Let browser know website is optimized for mobile-->
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!--Import materialize.css--> <!--Import materialize.css-->
<link type="text/css" rel="stylesheet" href="{% static "blog/materialize/css/materialize.css" %}" media="screen,projection" /> <link type="text/css" rel="stylesheet" href="{% static "blog/materialize/css/materialize.css" %}" media="screen,projection" />
<!-- import materialize icons css --> <!-- import materialize icons css -->
<link type="text/css" rel="stylesheet" href="{% static "blog/material-design-icons/iconfont/material-icons.css"%}"> <link type="text/css" rel="stylesheet" href="{% static "blog/material-design-icons/iconfont/material-icons.css"%}">
<!-- Import own css --> <!-- Import own css -->
<link type="text/css" rel="stylesheet" href="{% static "blog/main.css" %}" media="screen,projection" /> <link type="text/css" rel="stylesheet" href="{% static "blog/main.css" %}" media="screen,projection" />
{% if title %} {% if title %}
<title>Bundesdata {{ title }}</title> <title>Bundesdata {{ title }}</title>
{% else %} {% else %}
<title>Bundesdata</title> <title>Bundesdata</title>
{% endif %} {% endif %}
<link rel="apple-touch-icon" sizes="180x180" href="{% static "blog/images/favicon/apple-touch-icon.png" %}"> <link rel="apple-touch-icon" sizes="180x180" href="{% static "blog/images/favicon/apple-touch-icon.png" %}">
<link rel="icon" type="image/png" sizes="32x32" href="{% static "blog/images/favicon/favicon-32x32.png" %}"> <link rel="icon" type="image/png" sizes="32x32" href="{% static "blog/images/favicon/favicon-32x32.png" %}">
<link rel="icon" type="image/png" sizes="16x16" href="{% static "blog/images/favicon/favicon-16x16.png" %}"> <link rel="icon" type="image/png" sizes="16x16" href="{% static "blog/images/favicon/favicon-16x16.png" %}">
<link rel="manifest" href="{% static "blog/images/favicon/site.webmanifest" %}> <link rel="manifest" href="{% static "blog/images/favicon/site.webmanifest" %}">
</head> </head>
<body class="blue-grey lighten-5"> <body class="blue-grey lighten-5">
<!-- Dropdown Structure --> <!-- Dropdown Structure -->
<ul id="dropdown_protocols" class="dropdown-content"> <ul id="dropdown_protocols" class="dropdown-content">
<li><a href="{% url "Protokoll-list" %}"><i class="material-icons left"">insert_drive_file</i>Protokolle</a></li> <li><a href="{% url "Protokoll-list" %}"><i class="material-icons left"">insert_drive_file</i>Protokolle</a></li>
<li><a href="{% url "Reden" %}"><i class="material-icons left"">insert_comment</i>Reden</a></li> <li><a href="{% url "Reden" %}"><i class="material-icons left"">insert_comment</i>Reden</a></li>
</ul> </ul>
<nav class="light-green darken-1 nav-extended"> <nav class="light-green darken-1 nav-extended">
<div class="container"> <div class="container">
<div class="nav-wrapper"> <div class="nav-wrapper">
<a href="/" class="brand-logo">Bundesdata</a> <a href="/" class="brand-logo">Bundesdata</a>
<a href="#" data-target="mobile-demo" class="sidenav-trigger"><i class="material-icons">menu</i></a> <a href="#" data-target="mobile-demo" class="sidenav-trigger"><i class="material-icons">menu</i></a>
<ul class="right hide-on-med-and-down"> <ul class="right hide-on-med-and-down">
<li><a href="{% url "MdBs" %}"><i class="material-icons left"">account_circle</i>MdBs</a></li> <li><a href="{% url "MdBs" %}"><i class="material-icons left"">account_circle</i>MdBs</a></li>
<!-- Dropdown Trigger --> <!-- Dropdown Trigger -->
<li><a class="dropdown-trigger" href="#!" data-target="dropdown_protocols"><i class="material-icons left"">insert_drive_file</i>Dokumente<i class="material-icons right">arrow_drop_down</i></a></li> <li><a class="dropdown-trigger" href="#!" data-target="dropdown_protocols"><i class="material-icons left"">insert_drive_file</i>Dokumente<i class="material-icons right">arrow_drop_down</i></a></li>
<li><a href="{% url "ngram-viewer-jahr" %}"><i class="material-icons left"">trending_up</i>Ngram Viewer</a></li> <li><a href="{% url "ngram-viewer-jahr" %}"><i class="material-icons left"">trending_up</i>Ngram Viewer</a></li>
<li><a href="{% url "about-page" %}"><i class="material-icons left"">info_outline</i>Info</a></li> <li><a href="{% url "about-page" %}"><i class="material-icons left"">info_outline</i>Info</a></li>
</ul> </ul>
</div> </div>
{% block nav-tabs %} {% block nav-tabs %}
{% endblock nav-tabs %} {% endblock nav-tabs %}
</nav> </nav>
<ul id="dropdown_protocols_side" class="dropdown-content"> <ul id="dropdown_protocols_side" class="dropdown-content">
<li><a href="{% url "Protokoll-list" %}"><i class="material-icons left"">insert_drive_file</i>Protokolle</a></li> <li><a href="{% url "Protokoll-list" %}"><i class="material-icons left"">insert_drive_file</i>Protokolle</a></li>
<li><a href="{% url "Reden" %}"><i class="material-icons left"">insert_comment</i>Reden</a></li> <li><a href="{% url "Reden" %}"><i class="material-icons left"">insert_comment</i>Reden</a></li>
</ul> </ul>
<ul class="sidenav" id="mobile-demo"> <ul class="sidenav" id="mobile-demo">
<li><a href="/" class="brand-logo">Bundesdata</a></li> <li><a href="/" class="brand-logo">Bundesdata</a></li>
<li><a href="{% url "MdBs" %}}"><i class="material-icons"">account_circle</i>MdBs</a></li> <li><a href="{% url "MdBs" %}}"><i class="material-icons"">account_circle</i>MdBs</a></li>
<li><a class="dropdown-trigger" href="#!" data-target="dropdown_protocols_side"><i class="material-icons left"">insert_drive_file</i>Dokumente<i class="material-icons right">arrow_drop_down</i></a></li> <li><a class="dropdown-trigger" href="#!" data-target="dropdown_protocols_side"><i class="material-icons left"">insert_drive_file</i>Dokumente<i class="material-icons right">arrow_drop_down</i></a></li>
<li><a href="{% url "ngram-viewer-jahr" %}"><i class="material-icons"">trending_up</i>Ngram Viewer</a></li> <li><a href="{% url "ngram-viewer-jahr" %}"><i class="material-icons"">trending_up</i>Ngram Viewer</a></li>
<li><a href="{% url "about-page" %}"><i class="material-icons"">info_outline</i>Info</a></li> <li><a href="{% url "about-page" %}"><i class="material-icons"">info_outline</i>Info</a></li>
</ul> </ul>
<main> <main>
{% block content %} {% block content %}
{% endblock content %} {% endblock content %}
</main> </main>
<footer class="page-footer light-green darken-1"> <footer class="page-footer light-green darken-1">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col s12"> <div class="col s12">
<h5 class="white-text">Bundesdata</h5> <h5 class="white-text">Bundesdata</h5>
<p class="grey-text text-lighten-4">Ein Projekt für Politikinteressierte.</p> <p class="grey-text text-lighten-4">Ein Projekt für Politikinteressierte.</p>
</div>
</div>
</div> </div>
<div class="footer-copyright"> </div>
<div class="container"> </div>
© 2019 Copyright <a class="grey-text text-lighten-4" href="#">Stephan Porada</a> <div class="footer-copyright">
<a class="grey-text text-lighten-4 right" href="{% url "impressum" %}">Impressum</a> <div class="container">
</div> © 2019 Copyright <a class="grey-text text-lighten-4" href="#">Stephan Porada</a>
</div> <a class="grey-text text-lighten-4 right" href="{% url "impressum" %}">Impressum</a>
</footer> </div>
<!-- Optional JavaScript --> </div>
<script src="{% static "blog/materialize/js/materialize.min.js" %}"></script> </footer>
<script> <!-- Optional JavaScript -->
M.AutoInit(); <script src="{% static "blog/materialize/js/materialize.min.js" %}"></script>
M.Dropdown.init( <script>
document.querySelectorAll('.dropdown-trigger'), M.AutoInit();
{"coverTrigger": false} M.Dropdown.init(
) document.querySelectorAll('.dropdown-trigger'),
document.addEventListener('DOMContentLoaded', function() { {"coverTrigger": false}
M.Slider.init(document.querySelectorAll('.slider'), {}); )
}); document.addEventListener('DOMContentLoaded', function() {
</script> M.Slider.init(document.querySelectorAll('.slider'), {});
<script src="{% static "blog/chartjs/Chart.bundle.js"%}"></script> });
</script>
<script src="{% static "blog/chartjs/Chart.bundle.js"%}"></script>
</body> </body>
</html> </html>

View File

@ -1,11 +1,11 @@
{% extends "blog/base.html" %} {% extends "blog/base.html" %}
<!-- For now unsed tempalte for blog pages. --> <!-- For now unused template for blog pages. -->
{% block content %} {% block content %}
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<h1>Blog page!</h1> <h1>Blog page!</h1>
</div> </div>
</div> </div>
{% endblock content %} {% endblock content %}

View File

@ -7,173 +7,173 @@ app.-->
{% block content %} {% block content %}
<div class="parallax-container"> <div class="parallax-container">
<div class="parallax"> <div class="parallax">
<img src="{% static "/blog/images/4116197.jpg" %}"> <img src="{% static "/blog/images/4116197.jpg" %}">
</div>
<div class="section white hide-on-large-only">
<div class="row container">
<ul class="collection">
<li class="collection-item avatar">
<a href="{% url "MdBs" %}"><i class="material-icons circle blue-grey">account_circle</i>
<span class="title">Abgeordnete (MdBs)</span></a>
<p class="grey-text text-darken-3 lighten-3">Profile aller Mitglieder des Deutschen Bundestags von 1949 bis heute.</p>
<p class="grey-text text-darken-3 lighten-3">Durchsuch- und sortierbare Liste.</p>
</li>
<li class="collection-item avatar">
<a href="{% url "Protokoll-list" %}"><i class="material-icons circle blue-grey">insert_drive_file</i>
<span class="title">Protokolle</span></a>
<p>Liste der Plenarprotokolle von 1949 bis einschließlich 2017.</p>
</li>
<li class="collection-item avatar">
<a href="{% url "Reden" %}"><i class="material-icons circle blue-grey">insert_comment</i>
<span class="title">Reden</span></a>
<p>Übersicht über alle einzelnen Reden und Redebeiträge der Mitglieder des Bundestags von 1949 bis 2017.</p>
</li>
<li class="collection-item avatar">
<a href="{% url "ngram-viewer-jahr" %}"><i class="material-icons circle blue-grey">trending_up</i>
<span class="title">Ngram Viewer</span></a>
<p>Mit dem Ngram Viewer können Begriffshäufigkeiten dargestellt werden.</p>
</li>
</ul>
</div> </div>
<div class="section white hide-on-large-only"> </div>
<div class="row container"> <div class="container hide-on-med-and-down">
<ul class="collection"> <div class="row" style="margin-top: 25px;">
<li class="collection-item avatar"> <div class="col s12 m3 l3">
<a href="{% url "MdBs" %}"><i class="material-icons circle blue-grey">account_circle</i> <div class="card medium hoverable">
<span class="title">Abgeordnete (MdBs)</span></a> <div class="card-content">
<p class="grey-text text-darken-3 lighten-3">Profile aller Mitglieder des Deutschen Bundestags von 1949 bis heute.</p> <p class="center-align"><i class="large material-icons blue-grey-text darken-4">account_circle</i></p>
<p class="grey-text text-darken-3 lighten-3">Durchsuch- und sortierbare Liste.</p> <span class="card-title">Abgeordnete (MdBs)</span>
</li> <p class="grey-text text-darken-3 lighten-3">Profile aller Mitglieder des Deutschen Bundestags von 1949 bis heute.</p>
<li class="collection-item avatar"> </div>
<a href="{% url "Protokoll-list" %}"><i class="material-icons circle blue-grey">insert_drive_file</i> <div class="card-action">
<span class="title">Protokolle</span></a> <a href="{% url "MdBs" %}"><span class="light-green-text text-darken-4"><i class="material-icons right">send</i>Zu den MdBs</span></a>
<p>Liste der Plenarprotokolle von 1949 bis einschließlich 2017.</p> </div>
</li>
<li class="collection-item avatar">
<a href="{% url "Reden" %}"><i class="material-icons circle blue-grey">insert_comment</i>
<span class="title">Reden</span></a>
<p>Übersicht über alle einzelnen Reden und Redebeiträge der Mitglieder des Bundestags von 1949 bis 2017.</p>
</li>
<li class="collection-item avatar">
<a href="{% url "ngram-viewer-jahr" %}"><i class="material-icons circle blue-grey">trending_up</i>
<span class="title">Ngram Viewer</span></a>
<p>Mit dem Ngram Viewer können Begriffshäufigkeiten dargestellt werden.</p>
</li>
</ul>
</div> </div>
</div> </div>
<div class="container hide-on-med-and-down"> <div class="col s12 m3 l3">
<div class="row" style="margin-top: 25px;"> <div class="card medium hoverable">
<div class="col s12 m3 l3"> <div class="card-content">
<div class="card medium hoverable"> <p class="center-align"><i class="large material-icons blue-grey-text darken-4">insert_drive_file</i></p>
<div class="card-content"> <span class="card-title">Protokolle</span>
<p class="center-align"><i class="large material-icons blue-grey-text darken-4"">account_circle</i></p> <p class="grey-text text-darken-3 lighten-3">Liste der Plenarprotokolle von 1949 bis einschließlich 2017.</p>
<span class=" card-title">Abgeordnete (MdBs)</span> </div>
<p class="grey-text text-darken-3 lighten-3">Profile aller Mitglieder des Deutschen Bundestags von 1949 bis heute.</p> <div class="card-action">
</div> <a href="{% url "Protokoll-list" %}"><span class="light-green-text text-darken-4"><i class="material-icons right">send</i>Zu den Protokollen</span></a>
<div class="card-action"> </div>
<a href="{% url "MdBs" %}"><span class="light-green-text text-darken-4"><i class="material-icons right">send</i>Zu den MdBs</span></a>
</div>
</div>
</div>
<div class="col s12 m3 l3">
<div class="card medium hoverable">
<div class="card-content">
<p class="center-align"><i class="large material-icons blue-grey-text darken-4">insert_drive_file</i></p>
<span class="card-title">Protokolle</span>
<p class="grey-text text-darken-3 lighten-3">Liste der Plenarprotokolle von 1949 bis einschließlich 2017.</p>
</div>
<div class="card-action">
<a href="{% url "Protokoll-list" %}"><span class="light-green-text text-darken-4"><i class="material-icons right">send</i>Zu den Protokollen</span></a>
</div>
</div>
</div>
<div class="col s12 m3 l3">
<div class="card medium hoverable">
<div class="card-content">
<p class="center-align"><i class="large material-icons blue-grey-text darken-4">insert_comment</i></p>
<span class="card-title">Reden</span>
<p class="grey-text text-darken-3 lighten-3">Übersicht über alle einzelnen Reden und Redebeiträge der Mitglieder des Bundestags von 1949 bis 2017.</p>
</div>
<div class="card-action">
<a href="{% url "Reden" %}"><span class="light-green-text text-darken-4"><i class="material-icons right">send</i>Zu den Reden</span></a>
</div>
</div>
</div>
<div class="col s12 m3 l3">
<div class="card medium hoverable">
<div class="card-content">
<p class="center-align"><i class="large material-icons blue-grey-text darken-4">trending_up</i></p>
<span class="card-title">Ngram Viewer</span>
<p class="grey-text text-darken-3 lighten-3">Stellt Begriffshäufigkeiten der Reden über den Zeitram von 1949 bis 2017 dar.</p>
</div>
<div class="card-action">
<a href="{% url "ngram-viewer-jahr" %}"><span class="light-green-text text-darken-4"><i class="material-icons right">send</i>Zum Ngram Viewer</span></a>
</div>
</div>
</div>
</div> </div>
</div>
<div class="col s12 m3 l3">
<div class="card medium hoverable">
<div class="card-content">
<p class="center-align"><i class="large material-icons blue-grey-text darken-4">insert_comment</i></p>
<span class="card-title">Reden</span>
<p class="grey-text text-darken-3 lighten-3">Übersicht über alle einzelnen Reden und Redebeiträge der Mitglieder des Bundestags von 1949 bis 2017.</p>
</div>
<div class="card-action">
<a href="{% url "Reden" %}"><span class="light-green-text text-darken-4"><i class="material-icons right">send</i>Zu den Reden</span></a>
</div>
</div>
</div>
<div class="col s12 m3 l3">
<div class="card medium hoverable">
<div class="card-content">
<p class="center-align"><i class="large material-icons blue-grey-text darken-4">trending_up</i></p>
<span class="card-title">Ngram Viewer</span>
<p class="grey-text text-darken-3 lighten-3">Stellt Begriffshäufigkeiten der Reden über den Zeitram von 1949 bis 2017 dar.</p>
</div>
<div class="card-action">
<a href="{% url "ngram-viewer-jahr" %}"><span class="light-green-text text-darken-4"><i class="material-icons right">send</i>Zum Ngram Viewer</span></a>
</div>
</div>
</div>
</div> </div>
</div>
</div> </div>
<div class="parallax-container"> <div class="parallax-container">
<div class="parallax"> <div class="parallax">
<img src="{% static "/blog/images/4094966.jpg" %}"> <img src="{% static "/blog/images/4094966.jpg" %}">
</div>
<div class="section white">
<div class="row">
<div class="container grey-text text-darken-3 lighten-3">
<h4 class="header black-text">Das Projekt</h4>
<p>Das Projekt Bundesdata
möchte die Bundestagsplenarprotokolle für alle
Bürger und Bürgerinnen in einer strukturierten und einfachen Form
zugänglich und analysierbar machen sowie interaktive Statistiken zu diesen liefern.</p>
<p>Für dieses Unterfangen
wurden die von der Bundesregierung bereitgestellten XML-Versionen der
Bundestagsplenarprotokolle automatisch mit zusätzlichen Informationen
versehen und strukturiert. Mit den verschiednen Tools auf Bundesdata
können die Protokolle von 1949 bis 2017 einfach durchsucht und
deren Inhalte analysiert werden.</p>
</div> </div>
<div class="section white">
<div class="row">
<div class="container grey-text text-darken-3 lighten-3">
<h4 class="header black-text">Das Projekt</h4>
<p">Das Projekt Bundesdata
möchte die Bundestagsplenarprotokolle für alle
Bürger und Bürgerinnen in einer strukturierten und einfachen Form
zugänglich und analysierbar machen sowie interaktive Statistiken zu diesen liefern.</p>
<p>Für dieses Unterfangen
wurden die von der Bundesregierung bereitgestellten XML-Versionen der
Bundestagsplenarprotokolle automatisch mit zusätzlichen Informationen
versehen und strukturiert. Mit den verschiednen Tools auf Bundesdata
können die Protokolle von 1949 bis 2017 einfach durchsucht und
deren Inhalte analysiert werden.</p>
</div>
</div>
</div> </div>
</div>
</div> </div>
<div class="parallax-container"> <div class="parallax-container">
<div class="parallax"> <div class="parallax">
<img src="{% static "/blog/images/4116197.jpg" %}"> <img src="{% static "/blog/images/4116197.jpg" %}">
</div> </div>
<div class="section white"> <div class="section white">
<div class="row"> <div class="row">
<div class="container grey-text text-darken-3 lighten-3"> <div class="container grey-text text-darken-3 lighten-3">
<h4 class="header black-text">Die Tools</h4> <h4 class="header black-text">Die Tools</h4>
<p>Politikinteressierte können z.B. <p>Politikinteressierte können z.B.
recherchieren, welches <a href="{% url "MdBs" %}">Mitglied des Bundestags</a> zu welcher Zeit der recherchieren, welches <a href="{% url "MdBs" %}">Mitglied des Bundestags</a> zu welcher Zeit der
deutschen Geschichte welche <a href="{% url "Reden"%}">Reden oder Redebeiträge</a> im Bundestag deutschen Geschichte welche <a href="{% url "Reden"%}">Reden oder Redebeiträge</a> im Bundestag
gehalten hat. Mit Hilfe des <a href="{% url "ngram-viewer-jahr"%}">Ngram Viewers</a> können Begriffe im Verlauf gehalten hat. Mit Hilfe des <a href="{% url "ngram-viewer-jahr"%}">Ngram Viewers</a> können Begriffe im Verlauf
der Zeit dargestellt werden, um geschichtliche und politische Ereignisse, der Zeit dargestellt werden, um geschichtliche und politische Ereignisse,
die sich in der Sprache der Reden widerspiegeln, sichtbar und analysierbar die sich in der Sprache der Reden widerspiegeln, sichtbar und analysierbar
zu machen.</p> zu machen.</p>
<p>Das Projekt ist im Rahmen einer Masterarbeit entstanden. <p>Das Projekt ist im Rahmen einer Masterarbeit entstanden.
Mehr Informationen zum Projekt, der Arbeit, der Datengrundlage sowie der Mehr Informationen zum Projekt, der Arbeit, der Datengrundlage sowie der
automatischen Auszeichnung mit zusätzlichen Informationen und automatischen Auszeichnung mit zusätzlichen Informationen und
Metadaten gibt es auf der <a href="{% url "about-page" %}">Info-Seite</a>.</p> Metadaten gibt es auf der <a href="{% url "about-page" %}">Info-Seite</a>.</p>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="parallax-container"> <div class="parallax-container">
<div class="parallax"> <div class="parallax">
<img src="{% static "/blog/images/4116197.jpg" %}"> <img src="{% static "/blog/images/4116197.jpg" %}">
</div> </div>
<div class="section white"> <div class="section white">
<div class="row"> <div class="row">
<div class="container grey-text text-darken-3 lighten-3"> <div class="container grey-text text-darken-3 lighten-3">
<br /> <br />
<div class="slider"> <div class="slider">
<ul class="slides" style="background-color: inherit; text-align: center;"> <ul class="slides" style="background-color: inherit; text-align: center;">
<li> <li>
<img src="{% static "/blog/images/slide_ngram_viewer.png" %}"> <!-- random image --> <img src="{% static "/blog/images/slide_ngram_viewer.png" %}"> <!-- random image -->
<div class="caption right-align"> <div class="caption right-align">
</div> </div>
</li> </li>
<li> <li>
<img src="{% static "/blog/images/slider_profile.png" %}"> <!-- random image --> <img src="{% static "/blog/images/slider_profile.png" %}"> <!-- random image -->
<div class="caption right-align"> <div class="caption right-align">
</div> </div>
</li> </li>
<li> <li>
<img src="{% static "/blog/images/one_speech.png" %}"> <!-- random image --> <img src="{% static "/blog/images/one_speech.png" %}"> <!-- random image -->
<div class="caption right-align"> <div class="caption right-align">
</div> </div>
</li> </li>
<li> <li>
<img src="{% static "/blog/images/one_protocol.png" %}"> <!-- random image --> <img src="{% static "/blog/images/one_protocol.png" %}"> <!-- random image -->
<div class="caption right-align"> <div class="caption right-align">
</div> </div>
</li> </li>
</ul> </ul>
</div>
</div>
</div> </div>
</div>
</div> </div>
</div>
</div> </div>
<div class="parallax-container"> <div class="parallax-container">
<div class="parallax"> <div class="parallax">
<img src="{% static "/blog/images/4094966.jpg" %}"> <img src="{% static "/blog/images/4094966.jpg" %}">
</div> </div>
</div> </div>
{% endblock content %} {% endblock content %}

View File

@ -4,61 +4,61 @@
{% block content %} {% block content %}
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col s12"> <div class="col s12">
<div class="card"> <div class="card">
<div class="card-content"> <div class="card-content">
<span class="card-title">Impressum</span> <span class="card-title">Impressum</span>
<b>Angaben gemäß § 5 TMG</b> <b>Angaben gemäß § 5 TMG</b>
<br /> <br />
<p>Stephan Porada<br /> <p>Stephan Porada<br />
Bremer Straße 17a<br /> Bremer Straße 17a<br />
33613 Bielefeld</p> 33613 Bielefeld</p>
<br /> <br />
<b>Kontakt</b> <b>Kontakt</b>
<br /> <br />
<p>E-Mail: sporada@uni-bielefeld.de</p> <p>E-Mail: sporada@uni-bielefeld.de</p>
<br /> <br />
<b>Verantwortlich für den Inhalt nach § 55 Abs. 2 RStV</b> <b>Verantwortlich für den Inhalt nach § 55 Abs. 2 RStV</b>
<br /> <br />
<p>Stephan Porada<br /> <p>Stephan Porada<br />
Bremer Straße 17a<br /> Bremer Straße 17a<br />
33613 Bielefeld</p> 33613 Bielefeld</p>
<br /> <br />
<b>Haftung für Inhalte</b> <b>Haftung für Inhalte</b>
<br /> <br />
<p>Als Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den <p>Als Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den
allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht
verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu
forschen, die auf eine rechtswidrige Tätigkeit hinweisen. forschen, die auf eine rechtswidrige Tätigkeit hinweisen.
Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen
Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der
Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden
Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.</p> Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.</p>
<br /> <br />
<p>Haftung für Links <p>Haftung für Links
Unser Angebot enthält Links zu externen Websites Dritter, auf deren Inhalte wir keinen Einfluss haben. Unser Angebot enthält Links zu externen Websites Dritter, auf deren Inhalte wir keinen Einfluss haben.
Deshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der Deshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der
verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. Die verlinkten verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. Die verlinkten
2 / 4Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. Rechtswidrige Inhalte 2 / 4Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. Rechtswidrige Inhalte
waren zum Zeitpunkt der Verlinkung nicht erkennbar. waren zum Zeitpunkt der Verlinkung nicht erkennbar.
Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer
Rechtsverletzung nicht zumutbar. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links Rechtsverletzung nicht zumutbar. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links
umgehend entfernen.</p> umgehend entfernen.</p>
<br /> <br />
<p>Quelle: <p>Quelle:
eRecht24</p> eRecht24</p>
<br /> <br />
<b>Quelle der Bilder:</b> <b>Quelle der Bilder:</b>
<p> <p>
Bild 4094966.jpg auf der Homepage und Infoseite: (c) Deutscher Bundestag / Marc-Steffen Unger <br /> Bild 4094966.jpg auf der Homepage und Infoseite: (c) Deutscher Bundestag / Marc-Steffen Unger <br />
Bild 4116197.jpg auf der Homepage und Infoseite: (c) Deutscher Bundestag / Thomas Köhler/photothek.net <br /> Bild 4116197.jpg auf der Homepage und Infoseite: (c) Deutscher Bundestag / Thomas Köhler/photothek.net <br />
</p> </p>
</div>
</div>
</div> </div>
</div>
</div> </div>
</div>
</div> </div>
{% endblock content %} {% endblock content %}

View File

@ -28,7 +28,8 @@ SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess string'
DEBUG = True DEBUG = True
# CHANGE the hosts according to your settings. # CHANGE the hosts according to your settings.
ALLOWED_HOSTS = ["127.0.0.1", "localhost", "192.168.0.14"] ALLOWED_HOSTS = ["127.0.0.1", "localhost", "192.168.0.14",
"bundesdata.sporada.eu"]
# Application definition # Application definition
@ -84,10 +85,6 @@ WSGI_APPLICATION = 'bundesdata_app.wsgi.application'
# Database # Database
# https://docs.djangoproject.com/en/2.1/ref/settings/#databases # https://docs.djangoproject.com/en/2.1/ref/settings/#databases
# Change NAME, USER and PASSWORD details before deploying your own public
# version of this app. Or use your onw secrets.json file. Explanation found can
# be foudn here: https://stackoverflow.com/a/42077576
DATABASES = { DATABASES = {
'default': { 'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2', 'ENGINE': 'django.db.backends.postgresql_psycopg2',

View File

@ -5,190 +5,187 @@ query. This creates the ngram viewer per speaker. -->
{% block nav-tabs %} {% block nav-tabs %}
<div class="nav-content"> <div class="nav-content">
<ul class="tabs tabs-transparent"> <ul class="tabs tabs-transparent">
<li class="tab"><a target="_self" href="{% url "ngram-viewer-jahr" %}">Pro Jahr</a></li> <li class="tab"><a target="_self" href="{% url "ngram-viewer-jahr" %}">Pro Jahr</a></li>
<li class="tab"><a target="_self" class="active" href="{% url "ngram-viewer-sprecher" %}">Pro MdB</a></li> <li class="tab"><a target="_self" class="active" href="{% url "ngram-viewer-sprecher" %}">Pro MdB</a></li>
</ul> </ul>
</div> </div>
{% endblock nav-tabs %} {% endblock nav-tabs %}
{% block content %} {% block content %}
<div class="row"> <div class="row">
<div class="col s12 m12 l4"> <div class="col s12 m12 l4">
<div class="card"> <div class="card">
<div class="card-content"> <div class="card-content">
<span class="card-title center-align">Suchoptionen</span> <span class="card-title center-align">Suchoptionen</span>
<div class="row"> <div class="row">
<form method="GET" class="col s12"> <form method="GET" class="col s12">
{% csrf_token %} {% if errors %}
{% if errors %} <p class="red-text text-darken-2">Es kann nur jeweils ein Ngramm gesucht werden.</p>
{% endif %}
<p class="red-text text-darken-2">Es kann nur jeweils ein Ngramm gesucht werden.</p> <div class="input-field col s12">
<i class="material-icons prefix">search</i>
{% endif %} <input id="id_query" type="text" name="{{form.query.html_name}}" class="autocomplete materialize-textarea validate" {% if form.query.value != None %}value = "{{form.query.value}}" {% else %}value = "Ausländer" {% endif %}}>
<div class="input-field col s12"> <label for="id_query">{{form.query.label}}</label>
<i class="material-icons prefix">search</i> <button class="btn waves-effect waves-light right light-green darken-3" type="submit" name="ngram-search">Suche
<input id="id_query" type="text" name="{{form.query.html_name}}" class="autocomplete materialize-textarea validate" {% if form.query.value != None %}value = "{{form.query.value}}" {% else %}value = "Ausländer" {% endif %}}> <i class="material-icons right">send</i>
<label for="id_query">{{form.query.label}}</label> </button>
<button class="btn waves-effect waves-light right light-green darken-3" type="submit" name="ngram-search">Suche </div>
<i class="material-icons right">send</i> <br />
</button> <br />
</div> Korpus:{{form.corpus_choice}}
<br /> <div class="section">
<br /> <div class="switch section ">
Korpus:{{form.corpus_choice}} <span>Case-sensitive Suche:</span>
<div class="section"> <div style="float: right;">
<div class="switch section "> Aus
<span>Case-sensitive Suche:</span> <label>
<div style="float: right;"> <input type="checkbox" name="{{form.case_sensitive.html_name}}" class="filled-in" {% if form.case_sensitive.value == True %}checked = "checked" {% endif %} />
Aus <span class="lever"></span>
<label> </label>
<input type="checkbox" name="{{form.case_sensitive.html_name}}" class="filled-in" {% if form.case_sensitive.value == True %}checked = "checked" {% endif %} /> Ein
<span class="lever"></span> </div>
</label>
Ein
</div>
</div>
<div class="divider"></div>
<div class="switch section">
<span>Erweiterter Suchsyntax: <a class="tooltipped" data-position="bottom" data-tooltip="Ist diese Option aktiviert, kann die PostgreSQL interne regex-Syntax für die einzelnen Suchanfragen verwendet werden. Allerdings kann diese nur an Wortenden ('Asyl\w*') verwendet werden. Wörter können am Wortende mit '__' ('Krieg__') quasi escaped werden, so dass diese nicht als regulärer Ausdruck interpretiert werden."><i
class="material-icons tiny blue-grey-text darken-4">info_outline</i></a></span>
<div style="float: right;">
Aus
<label>
<input type="checkbox" name="{{form.search_plus.html_name}}" class="filled-in" {% if form.search_plus.value == True %}checked = "checked" {% endif %} />
<span class="lever"></span>
</label>
Ein
</div>
</div>
<div class="divider"></div>
<div class="section">
<div class="input-field col s12">
<i class="material-icons prefix blue-grey-text darken-4">filter_9_plus</i>
<input id="id_query" type="text" name="{{form.range.html_name}}" class="autocomplete materialize-textarea validate" {% if form.range.value != None %}value = "{{form.range.value}}" {% else %}value = "10" {% endif %}}>
<label for="id_range">{{form.range.label}}</label>
</div>
</div>
<div class="divider"></div>
</div>
</form>
</div>
</div> </div>
</div> <div class="divider"></div>
<ul class="collapsible white"> <div class="switch section">
<li class="active"> <span>Erweiterter Suchsyntax: <a class="tooltipped" data-position="bottom" data-tooltip="Ist diese Option aktiviert, kann die PostgreSQL interne regex-Syntax für die einzelnen Suchanfragen verwendet werden. Allerdings kann diese nur an Wortenden ('Asyl\w*') verwendet werden. Wörter können am Wortende mit '__' ('Krieg__') quasi escaped werden, so dass diese nicht als regulärer Ausdruck interpretiert werden."><i
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">info_outline</i>Was ist das hier?</div> class="material-icons tiny blue-grey-text darken-4">info_outline</i></a></span>
<div class="collapsible-body"> <div style="float: right;">
<p>Mit diesem Tool können alle Protokolle von 1949 bis 2017 Aus
nach einem Begriff durchsucht werden. Für diesen <label>
wird pro MdB dargestellt wie häufig dieses in seinen Reden <input type="checkbox" name="{{form.search_plus.html_name}}" class="filled-in" {% if form.search_plus.value == True %}checked = "checked" {% endif %} />
und Redebeiträgen den gesuchten Begriff verwendet hat. <span class="lever"></span>
</p> </label>
<p>Der Begriff kann eine Phrase mit der Länge von Ein
ein bis fünf Wörter sein. </div>
Eine weitere Suchanfrage wäre z.B. "Steuer erhöhen"</p>
</div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">search</i>Muster der Suchanfrage</div>
<div class="collapsible-body">
<p>Eine Suchanfrage ist ein einzelner Begriff bzw. einzelne Phrase.</p>
<p>Die beispielhafte Suchanfrage "Ausländer"
fragt somit die Häufigkeit des Begriffs ab.
Es kann nur ein BEgriff gleichzeitig gesucht werden.</p>
<p>Eine weitere Suchanfrage wäre z.B. "Steuerflucht"</p>
<p>Es können nicht nur einzelne Wörter, sondern je nach Korpus
Phrasen mit einer Länge von bis zu fünf Wörtern abgefragt werden.
Eine beispielhafte Suchanfrage wäre z.B. "Steuer erhöhen".
</p>
<p>Möglich wird diese Art der Abfrage dadurch, das für alle Protokolle
sogenannte N-Gramme berechnet wurden.</p>
</div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">short_text</i>Was sind N-Gramme?</div>
<div class="collapsible-body">
<p>Für die Berechnung von N-Grammen wird ein Text in einzelne
Fragmente zerlegt, die dann in ihrer Häufigkeit gezählt werden können.
N gibt hierbei die Länge der einzelen Fragmente an.
Ist z.B. der Satz "to be or not to be that is the question."
gegeben, kann für diesen die dazugehörigen 1-Gramme berechnet werden.
Diese wären dann: "to, be, or, not, to, be, that, is, the, question".
Nun kann die Häufigkeit der einzelnen Wörter gezählt werden.
Somit kommen die Wörter "to" und "be" zweimal vor und die restlichen
Wörter jeweils einmal.</p>
<p>Diese Art der Berechnung kann dann auch für 2-Gramme durchgführt
werden. Der Satz würde dafür in folgende Fragemente zerlegt werden:
"To be, be or, or not, not to, to be, be that, that is, is the, the question".
Nun kann die Häufigkeit von zwei aufeinander folgenden Wörtern ermittelt werden.
Die Phrase "to be" kommt innerhalb des Satzes somit zweimal
und alle anderen nur einmal vor.</p>
<p>Dieser Prozess kann weitere Male wiederholt werden z.B. für 3-, 4- oder 5-Gramme.</p>
<p>Diese Art der Berechnung wurde für alle Protokolle der Bundestagssitzungen
seit 1949 bis 2017 durchgeführt, um die Häufigkeiten verschiedener
Begriffe bzw. Phrasen pro Jahr darstellen zu können.</p>
</div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">filter_2</i>Verschiedene Korpora</div>
<div class="collapsible-body">
<p>Mit der Option "Korpus" kann zwischen zwei verschiedenen
Korpora gewechselt werden, an die die Suchanfrage gestellt wird.</p>
<p>Bei der Korpusauswahl "Lemmatisiert ohne Stoppwörter" werden
N-Gramme abgefragt, die auf Grundlage der lemmatisierten Protokolle
ohne Stopwörter berechnet wurden. Das bedeutet, dass alle Wörter der
Protokolle auf ihre Grundform zurückgeführt und häufige
Wörter wie "ist" oder "ein" entfernt wurden. Aus dem Satz
"Guten Morgen, liebe Kolleginnen und Kollegen! Ich begrüße Sie alle herzlich."
wird so die Zeichenfolge
"Guten Morgen lieb Kollegin Kollege ich begrüßen ich herzlich"
N-Gramme die für die beiden Sätze berechnet werden unterscheiden sich somit
erheblich.</p>
<p> Der Korpus "Nicht lemmatisiert mit Stoppwörtern" lässt den
Satz unberührt.</p>
<p>Beide Korpora eignen sich für verschiedene Suchanfragen.
Möchte eher die Häufigkeit von zusammengefassten Begriffen ermittelt
werden, kann der Korpus "Lemmatisiert ohne Stoppwörter" verwendet
werden. <br />
Werden jedoch eher ganze Phrasen wie "Kampf gegen den Terror"
gesucht, sollte der Korpus "Nicht lemmatisiert mit Stoppwörtern"
vewrwendet werden.</p>
</div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">close</i>Grenzen der Suchanfrage</div>
<div class="collapsible-body">
<p>Für den Korpus "Lemmatisiert ohne Stoppwörter" können 1-
bis 5-Gramme abgefragt werden.</p>
<p>Der Korpus "Nicht lemmatisiert mit Stoppwörtern" ist auf
eine Abfrage von 1- bis 4-Grammen begrenzt.</p>
</div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">access_time</i>Suchgeschwindigkeit</div>
<div class="collapsible-body">
<p>Die Suchanfragen für 1-Gramme ist sehr schnell.
Werden komplexere 2-, 3-, 4- oder 5-Gramme abgefragt, ist mit
einer Bearbeitungszeit von einigen Sekunden zu rechnen.</p>
</div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">poll</i>Interpretation der Daten</div>
<div class="collapsible-body">
<p>Aus den Ergebnissen einer Suchanfrage sollten keine vorschnellen
Kausalitäten abgeleitet werden. Die verschiedenen Häufigkeiten sollten
immer im Kontext ihrer Zeit und politscher Ereignisse gesehen werden.</p>
</div>
</li>
</ul>
</div>
<div class="col s12 m12 l8">
<div class="card">
<div class="card-content">
<span class="card-title">Graph</span>
{{ bar_chart.as_html }}
</div> </div>
<div class="divider"></div>
<div class="section">
<div class="input-field col s12">
<i class="material-icons prefix blue-grey-text darken-4">filter_9_plus</i>
<input id="id_query" type="text" name="{{form.range.html_name}}" class="autocomplete materialize-textarea validate" {% if form.range.value != None %}value = "{{form.range.value}}" {% else %}value = "10" {% endif %}}>
<label for="id_range">{{form.range.label}}</label>
</div>
</div>
<div class="divider"></div>
</div>
</form>
</div> </div>
</div>
</div> </div>
<ul class="collapsible white">
<li class="active">
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">info_outline</i>Was ist das hier?</div>
<div class="collapsible-body">
<p>Mit diesem Tool können alle Protokolle von 1949 bis 2017
nach einem Begriff durchsucht werden. Für diesen
wird pro MdB dargestellt wie häufig dieses in seinen Reden
und Redebeiträgen den gesuchten Begriff verwendet hat.
</p>
<p>Der Begriff kann eine Phrase mit der Länge von
ein bis fünf Wörter sein.
Eine weitere Suchanfrage wäre z.B. "Steuer erhöhen"</p>
</div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">search</i>Muster der Suchanfrage</div>
<div class="collapsible-body">
<p>Eine Suchanfrage ist ein einzelner Begriff bzw. einzelne Phrase.</p>
<p>Die beispielhafte Suchanfrage "Ausländer"
fragt somit die Häufigkeit des Begriffs ab.
Es kann nur ein BEgriff gleichzeitig gesucht werden.</p>
<p>Eine weitere Suchanfrage wäre z.B. "Steuerflucht"</p>
<p>Es können nicht nur einzelne Wörter, sondern je nach Korpus
Phrasen mit einer Länge von bis zu fünf Wörtern abgefragt werden.
Eine beispielhafte Suchanfrage wäre z.B. "Steuer erhöhen".
</p>
<p>Möglich wird diese Art der Abfrage dadurch, das für alle Protokolle
sogenannte N-Gramme berechnet wurden.</p>
</div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">short_text</i>Was sind N-Gramme?</div>
<div class="collapsible-body">
<p>Für die Berechnung von N-Grammen wird ein Text in einzelne
Fragmente zerlegt, die dann in ihrer Häufigkeit gezählt werden können.
N gibt hierbei die Länge der einzelen Fragmente an.
Ist z.B. der Satz "to be or not to be that is the question."
gegeben, kann für diesen die dazugehörigen 1-Gramme berechnet werden.
Diese wären dann: "to, be, or, not, to, be, that, is, the, question".
Nun kann die Häufigkeit der einzelnen Wörter gezählt werden.
Somit kommen die Wörter "to" und "be" zweimal vor und die restlichen
Wörter jeweils einmal.</p>
<p>Diese Art der Berechnung kann dann auch für 2-Gramme durchgführt
werden. Der Satz würde dafür in folgende Fragemente zerlegt werden:
"To be, be or, or not, not to, to be, be that, that is, is the, the question".
Nun kann die Häufigkeit von zwei aufeinander folgenden Wörtern ermittelt werden.
Die Phrase "to be" kommt innerhalb des Satzes somit zweimal
und alle anderen nur einmal vor.</p>
<p>Dieser Prozess kann weitere Male wiederholt werden z.B. für 3-, 4- oder 5-Gramme.</p>
<p>Diese Art der Berechnung wurde für alle Protokolle der Bundestagssitzungen
seit 1949 bis 2017 durchgeführt, um die Häufigkeiten verschiedener
Begriffe bzw. Phrasen pro Jahr darstellen zu können.</p>
</div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">filter_2</i>Verschiedene Korpora</div>
<div class="collapsible-body">
<p>Mit der Option "Korpus" kann zwischen zwei verschiedenen
Korpora gewechselt werden, an die die Suchanfrage gestellt wird.</p>
<p>Bei der Korpusauswahl "Lemmatisiert ohne Stoppwörter" werden
N-Gramme abgefragt, die auf Grundlage der lemmatisierten Protokolle
ohne Stopwörter berechnet wurden. Das bedeutet, dass alle Wörter der
Protokolle auf ihre Grundform zurückgeführt und häufige
Wörter wie "ist" oder "ein" entfernt wurden. Aus dem Satz
"Guten Morgen, liebe Kolleginnen und Kollegen! Ich begrüße Sie alle herzlich."
wird so die Zeichenfolge
"Guten Morgen lieb Kollegin Kollege ich begrüßen ich herzlich"
N-Gramme die für die beiden Sätze berechnet werden unterscheiden sich somit
erheblich.</p>
<p> Der Korpus "Nicht lemmatisiert mit Stoppwörtern" lässt den
Satz unberührt.</p>
<p>Beide Korpora eignen sich für verschiedene Suchanfragen.
Möchte eher die Häufigkeit von zusammengefassten Begriffen ermittelt
werden, kann der Korpus "Lemmatisiert ohne Stoppwörter" verwendet
werden. <br />
Werden jedoch eher ganze Phrasen wie "Kampf gegen den Terror"
gesucht, sollte der Korpus "Nicht lemmatisiert mit Stoppwörtern"
vewrwendet werden.</p>
</div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">close</i>Grenzen der Suchanfrage</div>
<div class="collapsible-body">
<p>Für den Korpus "Lemmatisiert ohne Stoppwörter" können 1-
bis 5-Gramme abgefragt werden.</p>
<p>Der Korpus "Nicht lemmatisiert mit Stoppwörtern" ist auf
eine Abfrage von 1- bis 4-Grammen begrenzt.</p>
</div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">access_time</i>Suchgeschwindigkeit</div>
<div class="collapsible-body">
<p>Die Suchanfragen für 1-Gramme ist sehr schnell.
Werden komplexere 2-, 3-, 4- oder 5-Gramme abgefragt, ist mit
einer Bearbeitungszeit von einigen Sekunden zu rechnen.</p>
</div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">poll</i>Interpretation der Daten</div>
<div class="collapsible-body">
<p>Aus den Ergebnissen einer Suchanfrage sollten keine vorschnellen
Kausalitäten abgeleitet werden. Die verschiedenen Häufigkeiten sollten
immer im Kontext ihrer Zeit und politscher Ereignisse gesehen werden.</p>
</div>
</li>
</ul>
</div>
<div class="col s12 m12 l8">
<div class="card">
<div class="card-content">
<span class="card-title">Graph</span>
{{ bar_chart.as_html }}
</div>
</div>
</div>
{% endblock content %} {% endblock content %}

View File

@ -5,194 +5,193 @@ query. This creates the ngram viewer per year. -->
{% block nav-tabs %} {% block nav-tabs %}
<div class="nav-content"> <div class="nav-content">
<ul class="tabs tabs-transparent"> <ul class="tabs tabs-transparent">
<li class="tab"><a target="_self" class="active" href="{% url "ngram-viewer-jahr" %}">Pro Jahr</a></li> <li class="tab"><a target="_self" class="active" href="{% url "ngram-viewer-jahr" %}">Pro Jahr</a></li>
<li class="tab"><a target="_self" href="{% url "ngram-viewer-sprecher" %}">Pro MdB</a></li> <li class="tab"><a target="_self" href="{% url "ngram-viewer-sprecher" %}">Pro MdB</a></li>
</ul> </ul>
</div> </div>
{% endblock nav-tabs %} {% endblock nav-tabs %}
{% block content %} {% block content %}
<div class="row"> <div class="row">
<div class="col s12 m12 l4"> <div class="col s12 m12 l4">
<div class="card"> <div class="card">
<div class="card-content"> <div class="card-content">
<span class="card-title center-align">Suchoptionen</span> <span class="card-title center-align">Suchoptionen</span>
<div class="row"> <div class="row">
<form method="GET" class="col s12"> <form method="GET" class="col s12">
{% csrf_token %} <div class="input-field col s12">
<div class="input-field col s12"> <i class="material-icons prefix">search</i>
<i class="material-icons prefix">search</i> <input id="id_query" type="text" name="{{form.query.html_name}}" class="autocomplete materialize-textarea validate" {% if form.query.value != None %}value = "{{form.query.value}}" {% else %}value = "Kroatien, Krieg, Asyl" {% endif %}}>
<input id="id_query" type="text" name="{{form.query.html_name}}" class="autocomplete materialize-textarea validate" {% if form.query.value != None %}value = "{{form.query.value}}" {% else %}value = "Kroatien, Krieg, Asyl" {% endif %}}> <label for="id_query">{{form.query.label}}</label>
<label for="id_query">{{form.query.label}}</label> <button class="btn waves-effect waves-light right light-green darken-3" type="submit" name="ngram-search">Suche
<button class="btn waves-effect waves-light right light-green darken-3" type="submit" name="ngram-search">Suche <i class="material-icons right">send</i>
<i class="material-icons right">send</i> </button>
</button>
</div>
<br />
<br />
Korpus:{{form.corpus_choice}}
<div class="section">
<div class="switch section ">
<span>Case-sensitive Suche:</span>
<div style="float: right;">
Aus
<label>
<input type="checkbox" name="{{form.case_sensitive.html_name}}" class="filled-in" {% if form.case_sensitive.value == True %}checked = "checked" {% endif %} />
<span class="lever"></span>
</label>
Ein
</div>
</div>
<div class="divider"></div>
<div class="switch section">
<span>Erweiterter Suchsyntax: <a class="tooltipped" data-position="bottom" data-tooltip="Ist diese Option aktiviert, kann die PostgreSQL interne regex-Syntax für die einzelnen Suchanfragen verwendet werden. Allerdings kann diese nur an Wortenden ('Asyl\w*') verwendet werden. Wörter können am Wortende mit '__' ('Krieg__') quasi escaped werden, so dass diese nicht als regulärer Ausdruck interpretiert werden."><i
class="material-icons tiny blue-grey-text darken-4">info_outline</i></a></span>
<div style="float: right;">
Aus
<label>
<input type="checkbox" name="{{form.search_plus.html_name}}" class="filled-in" {% if form.search_plus.value == True %}checked = "checked" {% endif %} />
<span class="lever"></span>
</label>
Ein
</div>
</div>
<div class="divider"></div>
<div class="switch section">
<span>Fehlende Daten ignorieren: <a class="tooltipped" data-position="bottom" data-tooltip="Ist diese Option aus, werden Jahre, die das gesuchte Ngramm nicht enthalten mit Nullwerten auf gefüllt. Wird diese Option aktiviert, werden Jahre, die das gesuchte Ngramm nicht enthalten ignoriert."><i
class="material-icons tiny blue-grey-text darken-4">info_outline</i></a></span>
<div style="float: right;">
Aus
<label>
<input type="checkbox" name="{{form.ignore_missing.html_name}}" class="filled-in" {% if form.ignore_missing.value == True %}checked="checked" {% endif %} />
<span class="lever"></span>
</label>
Ein
</div>
</div>
<div class="divider"></div>
</div>
</form>
</div>
</div> </div>
</div> <br />
<ul class="collapsible white"> <br />
<li class="active"> Korpus:{{form.corpus_choice}}
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">info_outline</i>Was ist das hier?</div> <div class="section">
<div class="collapsible-body"> <div class="switch section ">
<p>Mit diesem Tool können alle Protokolle von 1949 bis 2017 <span>Case-sensitive Suche:</span>
nach verschiedenen Begriffen durchsucht werden. Für jeden <div style="float: right;">
Begriff wird pro Jahr dargestellt wie häufig dieser von den Aus
Rednern und MdBs im deutschen Bundestag in deren <label>
Reden und Redebeiträge insgesamt verwendet wurde.</p> <input type="checkbox" name="{{form.case_sensitive.html_name}}" class="filled-in" {% if form.case_sensitive.value == True %}checked = "checked" {% endif %} />
<p>Begriffe bzw. Phrasen können ein bis fünf Wörter lang sein. <span class="lever"></span>
Eine weitere Suchanfrage wäre z.B. "Steuer erhöhen, Steuer senken, schwarze Null"</p> </label>
Ein
</div> </div>
</li> </div>
<li> <div class="divider"></div>
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">search</i>Muster der Suchanfrage</div> <div class="switch section">
<div class="collapsible-body"> <span>Erweiterter Suchsyntax: <a class="tooltipped" data-position="bottom" data-tooltip="Ist diese Option aktiviert, kann die PostgreSQL interne regex-Syntax für die einzelnen Suchanfragen verwendet werden. Allerdings kann diese nur an Wortenden ('Asyl\w*') verwendet werden. Wörter können am Wortende mit '__' ('Krieg__') quasi escaped werden, so dass diese nicht als regulärer Ausdruck interpretiert werden."><i
<p>Eine Suchanfrage ist eine durch Kommata getrennte class="material-icons tiny blue-grey-text darken-4">info_outline</i></a></span>
Zeichenkette. Durch die Kommata werden verschiedene Begriffe <div style="float: right;">
voneinander getrennt und einzeln abgefragt.</p> Aus
<p>Die beispielhafte Suchanfrage "Kroatien, Krieg, Asyl" <label>
fragt somit die Häufigkeit der drei verschiedenen Wörter ab. <input type="checkbox" name="{{form.search_plus.html_name}}" class="filled-in" {% if form.search_plus.value == True %}checked = "checked" {% endif %} />
Es können beliebig viele Begriffe aneinander gereit werden.</p> <span class="lever"></span>
<p>Eine weitere Suchanfrage wäre z.B. "Kroatien, Krieg, Asyl, </label>
Syrien, Europa"</p> Ein
<p>Es können nicht nur einzelne Wörter, sondern je nach Korpus
Phrasen mit einer Länge von bis zu fünf Wörtern abgefragt werden.
Eine beispielhafte Suchanfrage wäre z.B. "Steuer erhöhen, Steuer senken, schwarze Null".
Es können gleichzeitig Phrasen verschiedener Länge abgefragt werden.
Ein Beispiel hierfür ist "Steuer erhöhen, Steuer senken, schwarze Null, Steuerbetrug".
</p>
<p>Möglich wird diese Art der Abfrage dadurch, das für alle Protokolle
sogenannte N-Gramme berechnet wurden.</p>
</div> </div>
</li> </div>
<li> <div class="divider"></div>
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">short_text</i>Was sind N-Gramme?</div> <div class="switch section">
<div class="collapsible-body"> <span>Fehlende Daten ignorieren: <a class="tooltipped" data-position="bottom" data-tooltip="Ist diese Option aus, werden Jahre, die das gesuchte Ngramm nicht enthalten mit Nullwerten auf gefüllt. Wird diese Option aktiviert, werden Jahre, die das gesuchte Ngramm nicht enthalten ignoriert."><i
<p>Für die Berechnung von N-Grammen wird ein Text in einzelne class="material-icons tiny blue-grey-text darken-4">info_outline</i></a></span>
Fragmente zerlegt, die dann in ihrer Häufigkeit gezählt werden können. <div style="float: right;">
N gibt hierbei die Länge der einzelen Fragmente an. Aus
Ist z.B. der Satz "to be or not to be that is the question." <label>
gegeben, kann für diesen die dazugehörigen 1-Gramme berechnet werden. <input type="checkbox" name="{{form.ignore_missing.html_name}}" class="filled-in" {% if form.ignore_missing.value == True %}checked="checked" {% endif %} />
Diese wären dann: "to, be, or, not, to, be, that, is, the, question". <span class="lever"></span>
Nun kann die Häufigkeit der einzelnen Wörter gezählt werden. </label>
Somit kommen die Wörter "to" und "be" zweimal vor und die restlichen Ein
Wörter jeweils einmal.</p>
<p>Diese Art der Berechnung kann dann auch für 2-Gramme durchgführt
werden. Der Satz würde dafür in folgende Fragemente zerlegt werden:
"To be, be or, or not, not to, to be, be that, that is, is the, the question".
Nun kann die Häufigkeit von zwei aufeinander folgenden Wörtern ermittelt werden.
Die Phrase "to be" kommt innerhalb des Satzes somit zweimal
und alle anderen nur einmal vor.</p>
<p>Dieser Prozess kann weitere Male wiederholt werden z.B. für 3-, 4- oder 5-Gramme.</p>
<p>Diese Art der Berechnung wurde für alle Protokolle der Bundestagssitzungen
seit 1949 bis 2017 durchgeführt, um die Häufigkeiten verschiedener
Begriffe bzw. Phrasen pro Jahr darstellen zu können.</p>
</div> </div>
</li> </div>
<li> <div class="divider"></div>
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">filter_2</i>Verschiedene Korpora</div>
<div class="collapsible-body">
<p>Mit der Option "Korpus" kann zwischen zwei verschiedenen
Korpora gewechselt werden, an die die Suchanfrage gestellt wird.</p>
<p>Bei der Korpusauswahl "Lemmatisiert ohne Stoppwörter" werden
N-Gramme abgefragt, die auf Grundlage der lemmatisierten Protokolle
ohne Stopwörter berechnet wurden. Das bedeutet, dass alle Wörter der
Protokolle auf ihre Grundform zurückgeführt und häufige
Wörter wie "ist" oder "ein" entfernt wurden. Aus dem Satz
"Guten Morgen, liebe Kolleginnen und Kollegen! Ich begrüße Sie alle herzlich."
wird so die Zeichenfolge
"Guten Morgen lieb Kollegin Kollege ich begrüßen ich herzlich"
N-Gramme die für die beiden Sätze berechnet werden unterscheiden sich somit
erheblich.</p>
<p> Der Korpus "Nicht lemmatisiert mit Stoppwörtern" lässt den
Satz unberührt.</p>
<p>Beide Korpora eignen sich für verschiedene Suchanfragen.
Möchte eher die Häufigkeit von zusammengefassten Begriffen ermittelt
werden, kann der Korpus "Lemmatisiert ohne Stoppwörter" verwendet
werden. <br />
Werden jedoch eher ganze Phrasen wie "Kampf gegen den Terror"
gesucht, sollte der Korpus "Nicht lemmatisiert mit Stoppwörtern"
vewrwendet werden.</p>
</div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">close</i>Grenzen der Suchanfrage</div>
<div class="collapsible-body">
<p>Für den Korpus "Lemmatisiert ohne Stoppwörter" können 1-
bis 5-Gramme abgefragt werden.</p>
<p>Der Korpus "Nicht lemmatisiert mit Stoppwörtern" ist auf
eine Abfrage von 1- bis 4-Grammen begrenzt.</p>
</div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">access_time</i>Suchgeschwindigkeit</div>
<div class="collapsible-body">
<p>Die Suchanfragen für mehrere 1-Gramme ist sehr schnell.
Werden komplexere 2-, 3-, 4- oder 5-Gramme abgefragt, ist mit
einer Bearbeitungszeit von einigen Sekunden zu rechnen.</p>
</div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">poll</i>Interpretation der Daten</div>
<div class="collapsible-body">
<p>Aus den Ergebnissen einer Suchanfrage sollten keine vorschnellen
Kausalitäten abgeleitet werden. Die verschiedenen Häufigkeiten sollten
immer im Kontext ihrer Zeit und politscher Ereignisse gesehen werden.</p>
</div>
</li>
</ul>
</div>
<div class="col s12 m12 l8">
<div class="card">
<div class="card-content">
<span class="card-title">Häufigkeit der gesuchten N-Gramme pro Jahr von 1949 bis 2017</span>
{{ line_chart.as_html}}
</div> </div>
</form>
</div> </div>
</div>
</div> </div>
<ul class="collapsible white">
<li class="active">
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">info_outline</i>Was ist das hier?</div>
<div class="collapsible-body">
<p>Mit diesem Tool können alle Protokolle von 1949 bis 2017
nach verschiedenen Begriffen durchsucht werden. Für jeden
Begriff wird pro Jahr dargestellt wie häufig dieser von den
Rednern und MdBs im deutschen Bundestag in deren
Reden und Redebeiträge insgesamt verwendet wurde.</p>
<p>Begriffe bzw. Phrasen können ein bis fünf Wörter lang sein.
Eine weitere Suchanfrage wäre z.B. "Steuer erhöhen, Steuer senken, schwarze Null"</p>
</div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">search</i>Muster der Suchanfrage</div>
<div class="collapsible-body">
<p>Eine Suchanfrage ist eine durch Kommata getrennte
Zeichenkette. Durch die Kommata werden verschiedene Begriffe
voneinander getrennt und einzeln abgefragt.</p>
<p>Die beispielhafte Suchanfrage "Kroatien, Krieg, Asyl"
fragt somit die Häufigkeit der drei verschiedenen Wörter ab.
Es können beliebig viele Begriffe aneinander gereit werden.</p>
<p>Eine weitere Suchanfrage wäre z.B. "Kroatien, Krieg, Asyl,
Syrien, Europa"</p>
<p>Es können nicht nur einzelne Wörter, sondern je nach Korpus
Phrasen mit einer Länge von bis zu fünf Wörtern abgefragt werden.
Eine beispielhafte Suchanfrage wäre z.B. "Steuer erhöhen, Steuer senken, schwarze Null".
Es können gleichzeitig Phrasen verschiedener Länge abgefragt werden.
Ein Beispiel hierfür ist "Steuer erhöhen, Steuer senken, schwarze Null, Steuerbetrug".
</p>
<p>Möglich wird diese Art der Abfrage dadurch, das für alle Protokolle
sogenannte N-Gramme berechnet wurden.</p>
</div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">short_text</i>Was sind N-Gramme?</div>
<div class="collapsible-body">
<p>Für die Berechnung von N-Grammen wird ein Text in einzelne
Fragmente zerlegt, die dann in ihrer Häufigkeit gezählt werden können.
N gibt hierbei die Länge der einzelen Fragmente an.
Ist z.B. der Satz "to be or not to be that is the question."
gegeben, kann für diesen die dazugehörigen 1-Gramme berechnet werden.
Diese wären dann: "to, be, or, not, to, be, that, is, the, question".
Nun kann die Häufigkeit der einzelnen Wörter gezählt werden.
Somit kommen die Wörter "to" und "be" zweimal vor und die restlichen
Wörter jeweils einmal.</p>
<p>Diese Art der Berechnung kann dann auch für 2-Gramme durchgführt
werden. Der Satz würde dafür in folgende Fragemente zerlegt werden:
"To be, be or, or not, not to, to be, be that, that is, is the, the question".
Nun kann die Häufigkeit von zwei aufeinander folgenden Wörtern ermittelt werden.
Die Phrase "to be" kommt innerhalb des Satzes somit zweimal
und alle anderen nur einmal vor.</p>
<p>Dieser Prozess kann weitere Male wiederholt werden z.B. für 3-, 4- oder 5-Gramme.</p>
<p>Diese Art der Berechnung wurde für alle Protokolle der Bundestagssitzungen
seit 1949 bis 2017 durchgeführt, um die Häufigkeiten verschiedener
Begriffe bzw. Phrasen pro Jahr darstellen zu können.</p>
</div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">filter_2</i>Verschiedene Korpora</div>
<div class="collapsible-body">
<p>Mit der Option "Korpus" kann zwischen zwei verschiedenen
Korpora gewechselt werden, an die die Suchanfrage gestellt wird.</p>
<p>Bei der Korpusauswahl "Lemmatisiert ohne Stoppwörter" werden
N-Gramme abgefragt, die auf Grundlage der lemmatisierten Protokolle
ohne Stopwörter berechnet wurden. Das bedeutet, dass alle Wörter der
Protokolle auf ihre Grundform zurückgeführt und häufige
Wörter wie "ist" oder "ein" entfernt wurden. Aus dem Satz
"Guten Morgen, liebe Kolleginnen und Kollegen! Ich begrüße Sie alle herzlich."
wird so die Zeichenfolge
"Guten Morgen lieb Kollegin Kollege ich begrüßen ich herzlich"
N-Gramme die für die beiden Sätze berechnet werden unterscheiden sich somit
erheblich.</p>
<p> Der Korpus "Nicht lemmatisiert mit Stoppwörtern" lässt den
Satz unberührt.</p>
<p>Beide Korpora eignen sich für verschiedene Suchanfragen.
Möchte eher die Häufigkeit von zusammengefassten Begriffen ermittelt
werden, kann der Korpus "Lemmatisiert ohne Stoppwörter" verwendet
werden. <br />
Werden jedoch eher ganze Phrasen wie "Kampf gegen den Terror"
gesucht, sollte der Korpus "Nicht lemmatisiert mit Stoppwörtern"
vewrwendet werden.</p>
</div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">close</i>Grenzen der Suchanfrage</div>
<div class="collapsible-body">
<p>Für den Korpus "Lemmatisiert ohne Stoppwörter" können 1-
bis 5-Gramme abgefragt werden.</p>
<p>Der Korpus "Nicht lemmatisiert mit Stoppwörtern" ist auf
eine Abfrage von 1- bis 4-Grammen begrenzt.</p>
</div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">access_time</i>Suchgeschwindigkeit</div>
<div class="collapsible-body">
<p>Die Suchanfragen für mehrere 1-Gramme ist sehr schnell.
Werden komplexere 2-, 3-, 4- oder 5-Gramme abgefragt, ist mit
einer Bearbeitungszeit von einigen Sekunden zu rechnen.</p>
</div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">poll</i>Interpretation der Daten</div>
<div class="collapsible-body">
<p>Aus den Ergebnissen einer Suchanfrage sollten keine vorschnellen
Kausalitäten abgeleitet werden. Die verschiedenen Häufigkeiten sollten
immer im Kontext ihrer Zeit und politscher Ereignisse gesehen werden.</p>
</div>
</li>
</ul>
</div>
<div class="col s12 m12 l8">
<div class="card">
<div class="card-content">
<span class="card-title">Häufigkeit der gesuchten N-Gramme pro Jahr von 1949 bis 2017</span>
{{ line_chart.as_html}}
</div>
</div>
</div>
{% endblock content %} {% endblock content %}

View File

@ -5,118 +5,118 @@
{% block content %} {% block content %}
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col s12 m4 l4"> <div class="col s12 m4 l4">
<div class="card"> <div class="card">
<div class="card-content"> <div class="card-content">
<span class="card-title center-align"> <span class="card-title center-align">
{% if current_speaker.title %} {% if current_speaker.title %}
{{current_speaker.title}} {{current_speaker.title}}
{% endif %} {% endif %}
{% if current_speaker.nobility %} {% if current_speaker.nobility %}
{{current_speaker.nobility}} {{current_speaker.nobility}}
{% endif %} {% endif %}
{{current_speaker.first_name}} {{current_speaker.first_name}}
{% if current_speaker.name_prefix %} {% if current_speaker.name_prefix %}
{{current_speaker.name_prefix}} {{current_speaker.name_prefix}}
{% endif %} {% endif %}
{{current_speaker.last_name}}</span> {{current_speaker.last_name}}</span>
<p class="center-align"><i class="large material-icons blue-grey-text darken-4">account_circle</i></p> <p class="center-align"><i class="large material-icons blue-grey-text darken-4">account_circle</i></p>
<span class="card-title">Biographie</span> <span class="card-title">Biographie</span>
<ul> <ul>
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">cake</i> Geburtstag: {{current_speaker.birthday}}</li> <li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">cake</i> Geburtstag: {{current_speaker.birthday}}</li>
<br /> <br />
{% if current_speaker.day_of_death %} {% if current_speaker.day_of_death %}
<li><b style="font-size: 2em;" class="blue-grey-text darken-4"></b><span style="position: relative; right: -20px;"> Todesjahr: <li><b style="font-size: 2em;" class="blue-grey-text darken-4"></b><span style="position: relative; right: -20px;"> Todesjahr:
{{ current_speaker.day_of_death}}</span></li> {{ current_speaker.day_of_death}}</span></li>
<br /> <br />
{% endif %} {% endif %}
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">home</i> Geburtsort: {{current_speaker.birthplace}}</li> <li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">home</i> Geburtsort: {{current_speaker.birthplace}}</li>
<br /> <br />
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">work</i> Beruf: {{current_speaker.occupation}}</li> <li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">work</i> Beruf: {{current_speaker.occupation}}</li>
<br /> <br />
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">fingerprint</i> Bundestags ID: {{current_speaker.id}}</li> <li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">fingerprint</i> Bundestags ID: {{current_speaker.id}}</li>
<br /> <br />
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">people</i> Partei: {{current_speaker.party}}<a class="tooltipped" data-position="bottom" data-tooltip="Aktuelle eingetragene Partei, bei der die Person Mitglied ist oder war. "><i <li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">people</i> Partei: {{current_speaker.party}}<a class="tooltipped" data-position="bottom" data-tooltip="Aktuelle eingetragene Partei, bei der die Person Mitglied ist oder war. "><i
class="material-icons blue-grey-text darken-4">info_outline</i></a></li> class="material-icons blue-grey-text darken-4">info_outline</i></a></li>
<br /> <br />
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">filter_9_plus</i> Reden/Redebeiträge insgesamt: {{speech_count}}</li> <li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">filter_9_plus</i> Reden/Redebeiträge insgesamt: {{speech_count}}</li>
</ul> </ul>
</div> </div>
</div> </div>
<ul class="collapsible expandable hoverable"> <ul class="collapsible expandable hoverable">
{% if current_speaker.short_vita %} {% if current_speaker.short_vita %}
<li> <li>
<div class="collapsible-header">Kurzbiographie</div> <div class="collapsible-header">Kurzbiographie</div>
<div class="collapsible-body white"><span>{{current_speaker.short_vita}}</span></div> <div class="collapsible-body white"><span>{{current_speaker.short_vita}}</span></div>
</li> </li>
{% endif %}
{% for period in sorted_l_info %}
<li>
<div class="collapsible-header">
<i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">library_books</i> Wahlperiode {{period.legislative_period}}
</div>
<div class="collapsible-body white">
<ul>
<span class="card-title">Mitglied des Bundestags</span>
<li>Mitglied von {{period.legislative_period_start_date|date:"d.m.Y"}} bis
{% if period.legislative_period_end_date is None %}
heute
{% else %}
{{period.legislative_period_end_date|date:"d.m.Y"}}
{% endif %}
</li>
<br />
<li>Mandatsart: {{period.mandate_type}}
<li>
<br />
<span class="card-title">Institutions und Fraktionszugehörigkeit</span>
{% for institution in sorted_i_info %}
{% if institution.current_period == period.legislative_period %}
<li><b>{{institution.institution}}</b>
<li>
<br />
{% if institution.institution_start_date is not None %}
<li>Von {{institution.institution_start_date|date:"d.m.Y"}} bis
{% if institution.institution_end_date is None %}
heute
{% else %}
{{institution.institution_end_date|date:"d.m.Y"}}
{% endif %}
<li>
<br />
{% endif %}
{% endif %} {% endif %}
{% for period in sorted_l_info %}
<li>
<div class="collapsible-header">
<i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">library_books</i> Wahlperiode {{period.legislative_period}}
</div>
<div class="collapsible-body white">
<ul>
<span class="card-title">Mitglied des Bundestags</span>
<li>Mitglied von {{period.legislative_period_start_date|date:"d.m.Y"}} bis
{% if period.legislative_period_end_date is None %}
heute
{% else %}
{{period.legislative_period_end_date|date:"d.m.Y"}}
{% endif %}
</li>
<br />
<li>Mandatsart: {{period.mandate_type}}
<li>
<br />
<span class="card-title">Institutions und Fraktionszugehörigkeit</span>
{% for institution in sorted_i_info %}
{% if institution.current_period == period.legislative_period %}
<li><b>{{institution.institution}}</b>
<li>
<br />
{% if institution.institution_start_date is not None %}
<li>Von {{institution.institution_start_date|date:"d.m.Y"}} bis
{% if institution.institution_end_date is None %}
heute
{% else %}
{{institution.institution_end_date|date:"d.m.Y"}}
{% endif %}
<li>
<br />
{% endif %}
{% endif %}
{% endfor %}
</ul>
</div>
</li>
{% endfor %} {% endfor %}
</ul> </ul>
</div> </div>
<div class="col s12 m8"> </li>
<div class="card"> {% endfor %}
<div class="card-content"> </ul>
<span class="card-title">Reden</span>
<div class="card-content">
<p>Alle Reden, die von {% if current_speaker.title %}
{{current_speaker.title}}
{% endif %}
{% if current_speaker.nobility %}
{{current_speaker.nobility}}
{% endif %}
{{current_speaker.first_name}}
{% if current_speaker.name_prefix %}
{{current_speaker.name_prefix}}
{% endif %}
{{current_speaker.last_name}} als MdB gehalten wurden.
<div style="overflow-x:auto;">
{% render_table speech_table %}
</div>
</div>
</div>
</div>
</div>
</div> </div>
<div class="col s12 m8">
<div class="card">
<div class="card-content">
<span class="card-title">Reden</span>
<div class="card-content">
<p>Alle Reden, die von {% if current_speaker.title %}
{{current_speaker.title}}
{% endif %}
{% if current_speaker.nobility %}
{{current_speaker.nobility}}
{% endif %}
{{current_speaker.first_name}}
{% if current_speaker.name_prefix %}
{{current_speaker.name_prefix}}
{% endif %}
{{current_speaker.last_name}} als MdB gehalten wurden.
<div style="overflow-x:auto;">
{% render_table speech_table %}
</div>
</div>
</div>
</div>
</div>
</div>
</div> </div>
{% endblock content %} {% endblock content %}

View File

@ -6,32 +6,31 @@ Bundestag since 1949. -->
{% block content %} {% block content %}
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col s12"> <div class="col s12">
<div class="card"> <div class="card">
<div class="card-content"> <div class="card-content">
<span class="card-title">Mitglieder des Bundestags</span> <span class="card-title">Mitglieder des Bundestags</span>
<p>Dies ist eine Liste aller Abgeordneten seit 1949 bis einschließlich der aktuellen Wahlperiode. Die Liste kann sortiert und durchsucht werden.</p> <p>Dies ist eine Liste aller Abgeordneten seit 1949 bis einschließlich der aktuellen Wahlperiode. Die Liste kann sortiert und durchsucht werden.</p>
<p>Ausgangsdaten für diese Liste können auf der <a href="https://www.bundestag.de/service/opendata">offiziellen Seite des Bundestags</a> heruntergeladen werden.</p> <p>Ausgangsdaten für diese Liste können auf der <a href="https://www.bundestag.de/service/opendata">offiziellen Seite des Bundestags</a> heruntergeladen werden.</p>
<p>Für jede Person ist ein Profil angelegt, dass Informationen zu dieser bereithält und alle Reden bzw. Redebeiträge dieser gesammelt darstellt.</p> <p>Für jede Person ist ein Profil angelegt, dass Informationen zu dieser bereithält und alle Reden bzw. Redebeiträge dieser gesammelt darstellt.</p>
<br /> <br />
<div class="row"> <div class="row">
<form method="GET" class="col l4 offset-l8 m6 offset-m6 s12"> <form method="GET" class="col l4 offset-l8 m6 offset-m6 s12">
{% csrf_token %} <div class="row">
<div class="row"> <div class="input-field">
<div class="input-field"> <i class="material-icons prefix">search</i>
<i class="material-icons prefix">search</i> {{form}}
{{form}} </div>
</div>
</div>
</form>
</div>
<div style="overflow-x:auto;">
{% render_table table %}
</div>
</div>
</div> </div>
</form>
</div>
<div style="overflow-x:auto;">
{% render_table table %}
</div>
</div> </div>
</div>
</div> </div>
</div>
</div> </div>
{% endblock content %} {% endblock content %}

View File

@ -5,95 +5,95 @@
classes defined in tables.py. Mostly used to display search results. --> classes defined in tables.py. Mostly used to display search results. -->
{% block table-wrapper %} {% block table-wrapper %}
{% block table %} {% block table %}
<table {% render_attrs table.attrs %} class="highlight"> <table {% render_attrs table.attrs %} class="highlight">
{% block table.thead %} {% block table.thead %}
{% if table.show_header %} {% if table.show_header %}
<thead {{ table.attrs.thead.as_html }}> <thead {{ table.attrs.thead.as_html }}>
<tr> <tr>
{% for column in table.columns %} {% for column in table.columns %}
<th {{ column.attrs.th.as_html }}> <th {{ column.attrs.th.as_html }}>
{% if column.orderable %} {% if column.orderable %}
<a href="{% querystring table.prefixed_order_by_field=column.order_by_alias.next %}"><i class="material-icons ">sort</i> {{ column.header }}</a> <a href="{% querystring table.prefixed_order_by_field=column.order_by_alias.next %}"><i class="material-icons ">sort</i> {{ column.header }}</a>
{% else %} {% else %}
{{ column.header }} {{ column.header }}
{% endif %} {% endif %}
</th> </th>
{% endfor %} {% endfor %}
</tr> </tr>
</thead> </thead>
{% endif %} {% endif %}
{% endblock table.thead %} {% endblock table.thead %}
{% block table.tbody %} {% block table.tbody %}
<tbody {{ table.attrs.tbody.as_html }}> <tbody {{ table.attrs.tbody.as_html }}>
{% for row in table.paginated_rows %} {% for row in table.paginated_rows %}
{% block table.tbody.row %} {% block table.tbody.row %}
<tr {{ row.attrs.as_html }}> <tr {{ row.attrs.as_html }}>
{% for column, cell in row.items %} {% for column, cell in row.items %}
<td {{ column.attrs.td.as_html }}>{% if column.localize == None %}{{ cell }}{% else %}{% if column.localize %}{{ cell|localize }}{% else %}{{ cell|unlocalize }}{% endif %}{% endif %}</td> <td {{ column.attrs.td.as_html }}>{% if column.localize == None %}{{ cell }}{% else %}{% if column.localize %}{{ cell|localize }}{% else %}{{ cell|unlocalize }}{% endif %}{% endif %}</td>
{% endfor %} {% endfor %}
</tr> </tr>
{% endblock table.tbody.row %} {% endblock table.tbody.row %}
{% empty %} {% empty %}
{% if table.empty_text %} {% if table.empty_text %}
{% block table.tbody.empty_text %} {% block table.tbody.empty_text %}
<tr><td colspan="{{ table.columns|length }}">{{ table.empty_text }}</td></tr> <tr><td colspan="{{ table.columns|length }}">{{ table.empty_text }}</td></tr>
{% endblock table.tbody.empty_text %} {% endblock table.tbody.empty_text %}
{% endif %} {% endif %}
{% endfor %} {% endfor %}
</tbody> </tbody>
{% endblock table.tbody %} {% endblock table.tbody %}
{% block table.tfoot %} {% block table.tfoot %}
{% if table.has_footer %} {% if table.has_footer %}
<tfoot {{ table.attrs.tfoot.as_html }}> <tfoot {{ table.attrs.tfoot.as_html }}>
<tr> <tr>
{% for column in table.columns %} {% for column in table.columns %}
<td {{ column.attrs.tf.as_html }}>{{ column.footer }}</td> <td {{ column.attrs.tf.as_html }}>{{ column.footer }}</td>
{% endfor %} {% endfor %}
</tr> </tr>
</tfoot> </tfoot>
{% endif %} {% endif %}
{% endblock table.tfoot %} {% endblock table.tfoot %}
</table> </table>
{% endblock table %} {% endblock table %}
{% block pagination %} {% block pagination %}
{% if table.page and table.paginator.num_pages > 1 %} {% if table.page and table.paginator.num_pages > 1 %}
<ul class="pagination"> <ul class="pagination">
{% if table.page.has_previous %} {% if table.page.has_previous %}
{% block pagination.previous %} {% block pagination.previous %}
<li class="previous waves-effect"> <li class="previous waves-effect">
<a href="{% querystring table.prefixed_page_field=table.page.previous_page_number %}"> <a href="{% querystring table.prefixed_page_field=table.page.previous_page_number %}">
{% trans '<i class="material-icons">chevron_left</i>' %} {% trans '<i class="material-icons">chevron_left</i>' %}
</a> </a>
</li> </li>
{% endblock pagination.previous %} {% endblock pagination.previous %}
{% endif %}
{% if table.page.has_previous or table.page.has_next %}
{% block pagination.range %}
{% for p in table.page|table_page_range:table.paginator %}
<li {% if p == table.page.number %}class="active light-green darken-3"{% endif %} class="waves-effect">
{% if p == '...' %}
<a href="#">{{ p }}</a>
{% else %}
<a href="{% querystring table.prefixed_page_field=p %}">
{{ p }}
</a>
{% endif %} {% endif %}
{% if table.page.has_previous or table.page.has_next %} </li>
{% block pagination.range %} {% endfor %}
{% for p in table.page|table_page_range:table.paginator %} {% endblock pagination.range %}
<li {% if p == table.page.number %}class="active light-green darken-3"{% endif %} class="waves-effect"> {% endif %}
{% if p == '...' %} {% if table.page.has_next %}
<a href="#">{{ p }}</a> {% block pagination.next %}
{% else %} <li class="next waves-effect">
<a href="{% querystring table.prefixed_page_field=p %}"> <a href="{% querystring table.prefixed_page_field=table.page.next_page_number %}">
{{ p }} {% trans '<i class="material-icons">chevron_right</i>' %}
</a> </a>
{% endif %} </li>
</li> {% endblock pagination.next %}
{% endfor %} {% endif %}
{% endblock pagination.range %} </ul>
{% endif %} {% endif %}
{% if table.page.has_next %} {% endblock pagination %}
{% block pagination.next %}
<li class="next waves-effect">
<a href="{% querystring table.prefixed_page_field=table.page.next_page_number %}">
{% trans '<i class="material-icons">chevron_right</i>' %}
</a>
</li>
{% endblock pagination.next %}
{% endif %}
</ul>
{% endif %}
{% endblock pagination %}
{% endblock table-wrapper %} {% endblock table-wrapper %}

View File

@ -5,83 +5,83 @@
{% block content %} {% block content %}
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col s12 m4"> <div class="col s12 m4">
<div class="card"> <div class="card">
<div class="card-content"> <div class="card-content">
<span class="card-title center-align"> <span class="card-title center-align">
Protokoll:<br />{{current_protocol.protocol_id}}</span> Protokoll:<br />{{current_protocol.protocol_id}}</span>
<p class="center-align"><i class="large material-icons blue-grey-text darken-4">insert_drive_file</i></p> <p class="center-align"><i class="large material-icons blue-grey-text darken-4">insert_drive_file</i></p>
<span class="card-title">Metadaten</span> <span class="card-title">Metadaten</span>
<ul> <ul>
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">date_range</i>Wahlperiode: {{current_protocol.protocol_period}}</li> <li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">date_range</i>Wahlperiode: {{current_protocol.protocol_period}}</li>
<br /> <br />
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">date_range</i>Sitzungsnummer: {{current_protocol.session_nr}}</li> <li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">date_range</i>Sitzungsnummer: {{current_protocol.session_nr}}</li>
<br /> <br />
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">date_range</i>Datum: {{current_protocol.session_date}}</li> <li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">date_range</i>Datum: {{current_protocol.session_date}}</li>
<br /> <br />
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">access_time</i>Startuhrzeit der Sitzung: {{current_protocol.start_of_session}} Uhr</li> <li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">access_time</i>Startuhrzeit der Sitzung: {{current_protocol.start_of_session}} Uhr</li>
<br /> <br />
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">av_timer</i>Enduhrzeit der Sitzung: {{current_protocol.end_of_session}} Uhr</li> <li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">av_timer</i>Enduhrzeit der Sitzung: {{current_protocol.end_of_session}} Uhr</li>
<br /> <br />
</div> </div>
</div> </div>
<ul class="collapsible hoverable white"> <ul class="collapsible hoverable white">
<li> <li>
<div class="collapsible-header"><i class="material-icons left blue-grey-text darken-4">account_circle</i>MdBs dieser Rede</div> <div class="collapsible-header"><i class="material-icons left blue-grey-text darken-4">account_circle</i>MdBs dieser Rede</div>
<div class="collapsible-body"> <div class="collapsible-body">
<ul> <ul>
{% for speaker in speakers %} {% for speaker in speakers %}
<li> <li>
<a href="/mdbs/mdb/{{speaker.id}}">{{speaker.id}}: {{speaker.last_name}}, {{speaker.first_name}}</a> <a href="/mdbs/mdb/{{speaker.id}}">{{speaker.id}}: {{speaker.last_name}}, {{speaker.first_name}}</a>
</li> </li>
<br /> <br />
{% endfor %} {% endfor %}
</ul>
</div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons left blue-grey-text darken-4">toc</i>Inhaltsverzeichnis</div>
<div class="collapsible-body"><span>{{current_protocol.toc}}</span></div>
</li>
{% if current_protocol.attachment %}
<li>
<div class="collapsible-header"><i class="material-icons left blue-grey-text darken-4">folder</i>Anlagen</div>
<div class="collapsible-body"><span>{{current_protocol.attachment}}</span></div>
</li>
{% endif %}
</ul> </ul>
</div> </div>
<div class="col s12 m8"> </li>
<div class="card"> <li>
<div class="card-content"> <div class="collapsible-header"><i class="material-icons left blue-grey-text darken-4">toc</i>Inhaltsverzeichnis</div>
<span class="card-title">Gesamtes Protokol</span> <div class="collapsible-body"><span>{{current_protocol.toc}}</span></div>
{% for speaker, speech, related_speech in speaker_speech_html %} </li>
{% autoescape off%} {% if current_protocol.attachment %}
{% if speaker.id %} <li>
<h5><a href="/mdbs/mdb/{{speaker.id}}">{% if speaker.title %} <div class="collapsible-header"><i class="material-icons left blue-grey-text darken-4">folder</i>Anlagen</div>
{{speaker.title}} <div class="collapsible-body"><span>{{current_protocol.attachment}}</span></div>
{% endif %} </li>
{% if speaker.nobility %} {% endif %}
{{speaker.nobility}} </ul>
{% endif %}
{{speaker.first_name}}
{% if speaker.name_prefix %}
{{speaker.name_prefix}}
{% endif %}
{{speaker.last_name}}
({{speaker.party}}):</a></h5>
{% else %}
<span class="card-title">Rede von: Unbekannt<a class="tooltipped" data-position="bottom" data-tooltip="Dieses Mitglied des Bundestags konnte leider nicht automatisch erkannt werden. Grundlegende Infos zu Namen etc. können beim zugehörigen Redeeintrag unter dem Punkt Original String gefunden werden."><i
class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">info_outline</i></a></span>
{% endif %}
<h6><a href="/protokolle/rede/{{related_speech.speech_id}}">Rede ID: {{related_speech.speech_id}}</a></h6>
{{speech}}
{% endautoescape %}
{% endfor%}
</div>
</div>
</div>
</div> </div>
<div class="col s12 m8">
<div class="card">
<div class="card-content">
<span class="card-title">Gesamtes Protokol</span>
{% for speaker, speech, related_speech in speaker_speech_html %}
{% autoescape off%}
{% if speaker.id %}
<h5><a href="/mdbs/mdb/{{speaker.id}}">{% if speaker.title %}
{{speaker.title}}
{% endif %}
{% if speaker.nobility %}
{{speaker.nobility}}
{% endif %}
{{speaker.first_name}}
{% if speaker.name_prefix %}
{{speaker.name_prefix}}
{% endif %}
{{speaker.last_name}}
({{speaker.party}}):</a></h5>
{% else %}
<span class="card-title">Rede von: Unbekannt<a class="tooltipped" data-position="bottom" data-tooltip="Dieses Mitglied des Bundestags konnte leider nicht automatisch erkannt werden. Grundlegende Infos zu Namen etc. können beim zugehörigen Redeeintrag unter dem Punkt Original String gefunden werden."><i
class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">info_outline</i></a></span>
{% endif %}
<h6><a href="/protokolle/rede/{{related_speech.speech_id}}">Rede ID: {{related_speech.speech_id}}</a></h6>
{{speech}}
{% endautoescape %}
{% endfor%}
</div>
</div>
</div>
</div>
</div> </div>
{% endblock content %} {% endblock content %}

View File

@ -5,29 +5,28 @@
{% block content %} {% block content %}
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col s12"> <div class="col s12">
<div class="card"> <div class="card">
<div class="card-content"> <div class="card-content">
<span class="card-title">Alle Protokolle des Bundestag</span> <span class="card-title">Alle Protokolle des Bundestag</span>
<p>Liste aller Bundestagsplenarprotokolle von der ersten bis zur 18. Wahlperiode. Eine Volltextsuche ist zurzeit noch nicht implementiert.</p> <p>Liste aller Bundestagsplenarprotokolle von der ersten bis zur 18. Wahlperiode. Eine Volltextsuche ist zurzeit noch nicht implementiert.</p>
<div class="row"> <div class="row">
<form method="GET" class="col l4 offset-l8 m6 offset-m6 s12"> <form method="GET" class="col l4 offset-l8 m6 offset-m6 s12">
{% csrf_token %} <div class="row">
<div class="row"> <div class="input-field">
<div class="input-field"> <i class="material-icons prefix">search</i>
<i class="material-icons prefix">search</i> {{form}}
{{form}}
</div>
</div>
</form>
</div>
<div style="overflow-x:auto;">
{% render_table table %}
</div>
</div> </div>
</div> </div>
</form>
</div>
<div style="overflow-x:auto;">
{% render_table table %}
</div>
</div> </div>
</div>
</div> </div>
</div>
</div> </div>
{% endblock content %} {% endblock content %}

View File

@ -5,184 +5,184 @@
{% block content %} {% block content %}
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col s12 m4"> <div class="col s12 m4">
<div class="card"> <div class="card">
<div class="card-content"> <div class="card-content">
<span class="card-title center-align"> <span class="card-title center-align">
Rede:<br />{{current_speech.speech_id}}</span> Rede:<br />{{current_speech.speech_id}}</span>
<p class="center-align"><i class="large material-icons blue-grey-text darken-4">insert_comment</i></p> <p class="center-align"><i class="large material-icons blue-grey-text darken-4">insert_comment</i></p>
<span class="card-title">Metadaten</span> <span class="card-title">Metadaten</span>
<ul> <ul>
<li><a href="/protokolle/protokoll/{{current_speech.foreign_protocol.protocol_id}}"><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">insert_drive_file</i>Aus Protokoll: <li><a href="/protokolle/protokoll/{{current_speech.foreign_protocol.protocol_id}}"><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">insert_drive_file</i>Aus Protokoll:
{{current_speech.foreign_protocol.protocol_id}}</a></li> {{current_speech.foreign_protocol.protocol_id}}</a></li>
<br /> <br />
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">date_range</i>Datum: {{current_speech.foreign_protocol.session_date}}</li> <li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">date_range</i>Datum: {{current_speech.foreign_protocol.session_date}}</li>
<br /> <br />
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">access_time</i>Startuhrzeit der Sitzung: {{current_speech.foreign_protocol.start_of_session}} Uhr</li> <li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">access_time</i>Startuhrzeit der Sitzung: {{current_speech.foreign_protocol.start_of_session}} Uhr</li>
<br /> <br />
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">av_timer</i>Enduhrzeit der Sitzung: {{current_speech.foreign_protocol.end_of_session}} Uhr</li> <li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">av_timer</i>Enduhrzeit der Sitzung: {{current_speech.foreign_protocol.end_of_session}} Uhr</li>
<br /> <br />
{% if current_speech.foreign_speaker.id %} {% if current_speech.foreign_speaker.id %}
<a href="/mdbs/mdb/{{current_speech.foreign_speaker.id}}"> <a href="/mdbs/mdb/{{current_speech.foreign_speaker.id}}">
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">fingerprint</i>Redner ID: {{current_speech.foreign_speaker.id}}</li> <li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">fingerprint</i>Redner ID: {{current_speech.foreign_speaker.id}}</li>
</a> </a>
{%else%} {%else%}
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">fingerprint</i>Redner ID: Nicht erkannt {{current_speech.foreign_speaker.id}}</li> <li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">fingerprint</i>Redner ID: Nicht erkannt {{current_speech.foreign_speaker.id}}</li>
{% endif %}
<br />
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">perm_identity</i>Rednertyp: {{current_speech.speaker_type}}</li>
<br />
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">short_text</i>Original String: {{current_speech.original_string}}<a class="tooltipped" data-position="bottom" data-tooltip="Dies ist die Zeichenfolge, mit der der aktuelle Redner oder die aktuelle Rednerin im original Protokoll vor ihrem Redebeitrag genannt wurde. Passt dieser nicht zum Namen, der über der Rede steht, ist leider etwas bei der automatischen Erkennung schiefgegangen. Steht kein Name über der Rede, wurde der Redner nicht automatisch erkannt."><i
class="material-icons blue-grey-text darken-4">info_outline</i></a></li>
<br />
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">record_voice_over</i>Unterbrechungen/Zurufe: {{interruptions}}</li>
<br />
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">subject</i>Länge: {{words}} Wörter</li>
</div>
</div>
<ul class="collapsible hoverable">
<li>
<div class="collapsible-header"><i class="material-icons left blue-grey-text darken-4">sort_by_alpha</i>Vokabular</div>
<div class="collapsible-body white"><span><b>Vokabeln: {{unique_words}}</b><br /><ol>{{ vocabulary|safe }}</ol></span></div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons left blue-grey-text darken-4">toc</i>Inhaltsverzeichnis</div>
<div class="collapsible-body white"><span>{{current_speech.foreign_protocol.toc}}</span></div>
</li>
{% if current_speech.foreign_protocol.attachment %}
<li>
<div class="collapsible-header"><i class="material-icons left blue-grey-text darken-4">folder</i>Anlagen</div>
<div class="collapsible-body white"><span>{{current_speech.foreign_protocol.attachment}}</span></div>
</li>
{% endif %}
</ul>
</div>
<div class="col s12 m8">
{% if previous_speech.speech_content %}
<ul class="collapsible hoverable white">
<li>
<div class="collapsible-header"><i class="large material-icons blue-grey-text darken-4">insert_comment</i>Vorherige Rede als Kontext</div>
<div class="collapsible-body">
<h5>{% if previous_speech.foreign_speaker.id %}
Rede von {% if previous_speech.foreign_speaker.title %}
{{previous_speech.foreign_speaker.title}}
{% endif %}
{% if previous_speech.foreign_speaker.nobility %}
{{previous_speech.foreign_speaker.nobility}}
{% endif %}
{{previous_speech.foreign_speaker.first_name}}
{% if previous_speech.foreign_speaker.name_prefix %}
{{previous_speech.foreign_speaker.name_prefix}}
{% endif %}
{{previous_speech.foreign_speaker.last_name}}
{% else %}
<span class="card-title">Rede von: Unbekannt<a class="tooltipped" data-position="bottom" data-tooltip="Dieses Mitglied des Bundestags konnte leider nicht automatisch erkannt werden. Grundlegende Infos zu Namen etc. können beim zugehörigen Redeeintrag unter dem Punkt Original String gefunden werden."><i
class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">info_outline</i></a></span>
{% endif %}
</h5>
<hr class="blue-grey-text darken-4" />
<br />
<ul class="blue-grey-text darken-4">
{% if previous_speech.speaker_party_then == None %}
<li>Parteizugehörigkeit zum Zeitpunkt der Rede:
({{previous_speech.foreign_speaker.party}})</li>
{% else %}
<li>Parteizugehörigkeit zum Zeitpunkt der Rede:
({{previous_speech.speaker_party_then}})</li>
{% endif %}
<li>Letzte offizielle eingetragene Parteizugehörigkeit: ({{previous_speech.foreign_speaker.party}})</li>
</ul>
<br />
<span>{% autoescape off %}{{previous_speech_html}}{% endautoescape %}</span>
</div>
</li>
</ul>
{% endif %}
<div class="card">
<div class="card-content">
{% if previous_speech %}
<div class="center-align"><a href="/protokolle/rede/{{previous_speech.speech_id}}" class="waves-effect waves-light light-green darken-3 btn"><i class="material-icons left">arrow_upward</i>Zur Rede davor</a></div>
<br />
{% endif %}
{% if current_speech.foreign_speaker.id%}
<span class="card-title">Rede von {% if current_speech.foreign_speaker.title %}
{{current_speech.foreign_speaker.title}}
{% endif %}
{% if current_speech.foreign_speaker.nobility %}
{{current_speech.foreign_speaker.nobility}}
{% endif %}
{{current_speech.foreign_speaker.first_name}}
{% if current_speech.foreign_speaker.name_prefix %}
{{current_speech.foreign_speaker.name_prefix}}
{% endif %}
{{current_speech.foreign_speaker.last_name}}
</span>
<hr class="blue-grey-text darken-4" />
<ul class="blue-grey-text darken-4">
{% if current_speech.speaker_party_then == None %}
<li>Parteizugehörigkeit zum Zeitpunkt der Rede:
({{current_speech.foreign_speaker.party}})</li>
{% else %}
<li>Parteizugehörigkeit zum Zeitpunkt der Rede:
({{current_speech.speaker_party_then}})</li>
{% endif %}
<li>Letzte offizielle eingetragene Parteizugehörigkeit: ({{current_speech.foreign_speaker.party}})</li>
</ul>
{% else %}
<span class="card-title">Rede von: Unbekannt<a class="tooltipped" data-position="bottom" data-tooltip="Dieses Mitglied des Bundestags konnte leider nicht automatisch erkannt werden. Grundlegende Infos zu Namen etc. können links unter 'Original String' gelesen werden."><i
class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">info_outline</i></a></span>
<hr class="blue-grey-text darken-4" />
{% endif %}
{% autoescape off %}
{{current_speech_html}}
{% endautoescape %}
{% if next_speech %}
<div class="center-align"><br /><a href="/protokolle/rede/{{next_speech.speech_id}}" class="waves-effect waves-light light-green darken-3 btn"><i class="material-icons left">arrow_downward</i>Zur Rede danach</a></div>
{% endif %}
</div>
</div>
{% if next_speech.speech_content %}
<ul class="collapsible hoverable white">
<li>
<div class="collapsible-header"><i class="large material-icons blue-grey-text darken-4">insert_comment</i>Nächste Rede als Kontext</div>
<div class="collapsible-body">
<h5>{% if next_speech.foreign_speaker.id %}
Rede von {% if next_speech.foreign_speaker.title %}
{{next_speech.foreign_speaker.title}}
{% endif %}
{% if next_speech.foreign_speaker.nobility %}
{{next_speech.foreign_speaker.nobility}}
{% endif %}
{{next_speech.foreign_speaker.first_name}}
{% if next_speech.foreign_speaker.name_prefix %}
{{next_speech.foreign_speaker.name_prefix}}
{% endif %}
{{next_speech.foreign_speaker.last_name}}
{% else %}
<span class="card-title">Rede von: Unbekannt<a class="tooltipped" data-position="bottom" data-tooltip="Dieses Mitglied des Bundestags konnte leider nicht automatisch erkannt werden. Grundlegende Infos zu Namen etc. können beim zugehörigen Redeeintrag unter dem Punkt Original String gefunden werden."><i
class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">info_outline</i></a></span>
{% endif %}
</h5>
<hr class="blue-grey-text darken-4" />
<br />
<ul class="blue-grey-text darken-4">
{% if previous_speech.speaker_party_then == None %}
<li>Parteizugehörigkeit zum Zeitpunkt der Rede:
({{next_speech.foreign_speaker.party}})</li>
{% else %}
<li>Parteizugehörigkeit zum Zeitpunkt der Rede:
({{next_speech.speaker_party_then}})</li>
{% endif %}
<li>Letzte offizielle eingetragene Parteizugehörigkeit: ({{next_speech.foreign_speaker.party}})</li>
</ul>
<br />
<span><span>{% autoescape off %}{{next_speech_html}}{% endautoescape %}</span>
</div>
</li>
</ul>
{% endif %} {% endif %}
<br />
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">perm_identity</i>Rednertyp: {{current_speech.speaker_type}}</li>
<br />
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">short_text</i>Original String: {{current_speech.original_string}}<a class="tooltipped" data-position="bottom" data-tooltip="Dies ist die Zeichenfolge, mit der der aktuelle Redner oder die aktuelle Rednerin im original Protokoll vor ihrem Redebeitrag genannt wurde. Passt dieser nicht zum Namen, der über der Rede steht, ist leider etwas bei der automatischen Erkennung schiefgegangen. Steht kein Name über der Rede, wurde der Redner nicht automatisch erkannt."><i
class="material-icons blue-grey-text darken-4">info_outline</i></a></li>
<br />
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">record_voice_over</i>Unterbrechungen/Zurufe: {{interruptions}}</li>
<br />
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">subject</i>Länge: {{words}} Wörter</li>
</div> </div>
</div>
<ul class="collapsible hoverable">
<li>
<div class="collapsible-header"><i class="material-icons left blue-grey-text darken-4">sort_by_alpha</i>Vokabular</div>
<div class="collapsible-body white"><span><b>Vokabeln: {{unique_words}}</b><br /><ol>{{ vocabulary|safe }}</ol></span></div>
</li>
<li>
<div class="collapsible-header"><i class="material-icons left blue-grey-text darken-4">toc</i>Inhaltsverzeichnis</div>
<div class="collapsible-body white"><span>{{current_speech.foreign_protocol.toc}}</span></div>
</li>
{% if current_speech.foreign_protocol.attachment %}
<li>
<div class="collapsible-header"><i class="material-icons left blue-grey-text darken-4">folder</i>Anlagen</div>
<div class="collapsible-body white"><span>{{current_speech.foreign_protocol.attachment}}</span></div>
</li>
{% endif %}
</ul>
</div> </div>
<div class="col s12 m8">
{% if previous_speech.speech_content %}
<ul class="collapsible hoverable white">
<li>
<div class="collapsible-header"><i class="large material-icons blue-grey-text darken-4">insert_comment</i>Vorherige Rede als Kontext</div>
<div class="collapsible-body">
<h5>{% if previous_speech.foreign_speaker.id %}
Rede von {% if previous_speech.foreign_speaker.title %}
{{previous_speech.foreign_speaker.title}}
{% endif %}
{% if previous_speech.foreign_speaker.nobility %}
{{previous_speech.foreign_speaker.nobility}}
{% endif %}
{{previous_speech.foreign_speaker.first_name}}
{% if previous_speech.foreign_speaker.name_prefix %}
{{previous_speech.foreign_speaker.name_prefix}}
{% endif %}
{{previous_speech.foreign_speaker.last_name}}
{% else %}
<span class="card-title">Rede von: Unbekannt<a class="tooltipped" data-position="bottom" data-tooltip="Dieses Mitglied des Bundestags konnte leider nicht automatisch erkannt werden. Grundlegende Infos zu Namen etc. können beim zugehörigen Redeeintrag unter dem Punkt Original String gefunden werden."><i
class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">info_outline</i></a></span>
{% endif %}
</h5>
<hr class="blue-grey-text darken-4" />
<br />
<ul class="blue-grey-text darken-4">
{% if previous_speech.speaker_party_then == None %}
<li>Parteizugehörigkeit zum Zeitpunkt der Rede:
({{previous_speech.foreign_speaker.party}})</li>
{% else %}
<li>Parteizugehörigkeit zum Zeitpunkt der Rede:
({{previous_speech.speaker_party_then}})</li>
{% endif %}
<li>Letzte offizielle eingetragene Parteizugehörigkeit: ({{previous_speech.foreign_speaker.party}})</li>
</ul>
<br />
<span>{% autoescape off %}{{previous_speech_html}}{% endautoescape %}</span>
</div>
</li>
</ul>
{% endif %}
<div class="card">
<div class="card-content">
{% if previous_speech %}
<div class="center-align"><a href="/protokolle/rede/{{previous_speech.speech_id}}" class="waves-effect waves-light light-green darken-3 btn"><i class="material-icons left">arrow_upward</i>Zur Rede davor</a></div>
<br />
{% endif %}
{% if current_speech.foreign_speaker.id%}
<span class="card-title">Rede von {% if current_speech.foreign_speaker.title %}
{{current_speech.foreign_speaker.title}}
{% endif %}
{% if current_speech.foreign_speaker.nobility %}
{{current_speech.foreign_speaker.nobility}}
{% endif %}
{{current_speech.foreign_speaker.first_name}}
{% if current_speech.foreign_speaker.name_prefix %}
{{current_speech.foreign_speaker.name_prefix}}
{% endif %}
{{current_speech.foreign_speaker.last_name}}
</span>
<hr class="blue-grey-text darken-4" />
<ul class="blue-grey-text darken-4">
{% if current_speech.speaker_party_then == None %}
<li>Parteizugehörigkeit zum Zeitpunkt der Rede:
({{current_speech.foreign_speaker.party}})</li>
{% else %}
<li>Parteizugehörigkeit zum Zeitpunkt der Rede:
({{current_speech.speaker_party_then}})</li>
{% endif %}
<li>Letzte offizielle eingetragene Parteizugehörigkeit: ({{current_speech.foreign_speaker.party}})</li>
</ul>
{% else %}
<span class="card-title">Rede von: Unbekannt<a class="tooltipped" data-position="bottom" data-tooltip="Dieses Mitglied des Bundestags konnte leider nicht automatisch erkannt werden. Grundlegende Infos zu Namen etc. können links unter 'Original String' gelesen werden."><i
class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">info_outline</i></a></span>
<hr class="blue-grey-text darken-4" />
{% endif %}
{% autoescape off %}
{{current_speech_html}}
{% endautoescape %}
{% if next_speech %}
<div class="center-align"><br /><a href="/protokolle/rede/{{next_speech.speech_id}}" class="waves-effect waves-light light-green darken-3 btn"><i class="material-icons left">arrow_downward</i>Zur Rede danach</a></div>
{% endif %}
</div>
</div>
{% if next_speech.speech_content %}
<ul class="collapsible hoverable white">
<li>
<div class="collapsible-header"><i class="large material-icons blue-grey-text darken-4">insert_comment</i>Nächste Rede als Kontext</div>
<div class="collapsible-body">
<h5>{% if next_speech.foreign_speaker.id %}
Rede von {% if next_speech.foreign_speaker.title %}
{{next_speech.foreign_speaker.title}}
{% endif %}
{% if next_speech.foreign_speaker.nobility %}
{{next_speech.foreign_speaker.nobility}}
{% endif %}
{{next_speech.foreign_speaker.first_name}}
{% if next_speech.foreign_speaker.name_prefix %}
{{next_speech.foreign_speaker.name_prefix}}
{% endif %}
{{next_speech.foreign_speaker.last_name}}
{% else %}
<span class="card-title">Rede von: Unbekannt<a class="tooltipped" data-position="bottom" data-tooltip="Dieses Mitglied des Bundestags konnte leider nicht automatisch erkannt werden. Grundlegende Infos zu Namen etc. können beim zugehörigen Redeeintrag unter dem Punkt Original String gefunden werden."><i
class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">info_outline</i></a></span>
{% endif %}
</h5>
<hr class="blue-grey-text darken-4" />
<br />
<ul class="blue-grey-text darken-4">
{% if previous_speech.speaker_party_then == None %}
<li>Parteizugehörigkeit zum Zeitpunkt der Rede:
({{next_speech.foreign_speaker.party}})</li>
{% else %}
<li>Parteizugehörigkeit zum Zeitpunkt der Rede:
({{next_speech.speaker_party_then}})</li>
{% endif %}
<li>Letzte offizielle eingetragene Parteizugehörigkeit: ({{next_speech.foreign_speaker.party}})</li>
</ul>
<br />
<span><span>{% autoescape off %}{{next_speech_html}}{% endautoescape %}</span>
</div>
</li>
</ul>
{% endif %}
</div>
</div>
</div> </div>
{% endblock content %} {% endblock content %}

View File

@ -5,29 +5,28 @@
{% block content %} {% block content %}
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col s12"> <div class="col s12">
<div class="card"> <div class="card">
<div class="card-content"> <div class="card-content">
<span class="card-title">Reden und Redebeiträge aller Mitglieder des Bundestags seit 1949 bis 2017</span> <span class="card-title">Reden und Redebeiträge aller Mitglieder des Bundestags seit 1949 bis 2017</span>
<p>Hier ist eine liste aller Reden, die Mitglieder des Bundestags gehalten haben. Eine Volltextsuche ist zurzeit noch nicht implementiert.</p> <p>Hier ist eine liste aller Reden, die Mitglieder des Bundestags gehalten haben. Eine Volltextsuche ist zurzeit noch nicht implementiert.</p>
<div class="row"> <div class="row">
<form method="GET" class="col l4 offset-l8 m6 offset-m6 s12"> <form method="GET" class="col l4 offset-l8 m6 offset-m6 s12">
{% csrf_token %} <div class="row">
<div class="row"> <div class="input-field">
<div class="input-field"> <i class="material-icons prefix">search</i>
<i class="material-icons prefix">search</i> {{form}}
{{form}}
</div>
</div>
</form>
</div>
<div style="overflow-x:auto;">
{% render_table table %}
</div>
</div> </div>
</div> </div>
</form>
</div>
<div style="overflow-x:auto;">
{% render_table table %}
</div>
</div> </div>
</div>
</div> </div>
</div>
</div> </div>
{% endblock content %} {% endblock content %}

View File

@ -5,95 +5,95 @@
classes defined in tables.py. Mostly used to display search results. --> classes defined in tables.py. Mostly used to display search results. -->
{% block table-wrapper %} {% block table-wrapper %}
{% block table %} {% block table %}
<table {% render_attrs table.attrs %} class="highlight"> <table {% render_attrs table.attrs %} class="highlight">
{% block table.thead %} {% block table.thead %}
{% if table.show_header %} {% if table.show_header %}
<thead {{ table.attrs.thead.as_html }}> <thead {{ table.attrs.thead.as_html }}>
<tr> <tr>
{% for column in table.columns %} {% for column in table.columns %}
<th {{ column.attrs.th.as_html }}> <th {{ column.attrs.th.as_html }}>
{% if column.orderable %} {% if column.orderable %}
<a href="{% querystring table.prefixed_order_by_field=column.order_by_alias.next %}"><i class="material-icons ">sort</i> {{ column.header }}</a> <a href="{% querystring table.prefixed_order_by_field=column.order_by_alias.next %}"><i class="material-icons ">sort</i> {{ column.header }}</a>
{% else %} {% else %}
{{ column.header }} {{ column.header }}
{% endif %} {% endif %}
</th> </th>
{% endfor %} {% endfor %}
</tr> </tr>
</thead> </thead>
{% endif %} {% endif %}
{% endblock table.thead %} {% endblock table.thead %}
{% block table.tbody %} {% block table.tbody %}
<tbody {{ table.attrs.tbody.as_html }}> <tbody {{ table.attrs.tbody.as_html }}>
{% for row in table.paginated_rows %} {% for row in table.paginated_rows %}
{% block table.tbody.row %} {% block table.tbody.row %}
<tr {{ row.attrs.as_html }}> <tr {{ row.attrs.as_html }}>
{% for column, cell in row.items %} {% for column, cell in row.items %}
<td {{ column.attrs.td.as_html }}>{% if column.localize == None %}{{ cell }}{% else %}{% if column.localize %}{{ cell|localize }}{% else %}{{ cell|unlocalize }}{% endif %}{% endif %}</td> <td {{ column.attrs.td.as_html }}>{% if column.localize == None %}{{ cell }}{% else %}{% if column.localize %}{{ cell|localize }}{% else %}{{ cell|unlocalize }}{% endif %}{% endif %}</td>
{% endfor %} {% endfor %}
</tr> </tr>
{% endblock table.tbody.row %} {% endblock table.tbody.row %}
{% empty %} {% empty %}
{% if table.empty_text %} {% if table.empty_text %}
{% block table.tbody.empty_text %} {% block table.tbody.empty_text %}
<tr><td colspan="{{ table.columns|length }}">{{ table.empty_text }}</td></tr> <tr><td colspan="{{ table.columns|length }}">{{ table.empty_text }}</td></tr>
{% endblock table.tbody.empty_text %} {% endblock table.tbody.empty_text %}
{% endif %} {% endif %}
{% endfor %} {% endfor %}
</tbody> </tbody>
{% endblock table.tbody %} {% endblock table.tbody %}
{% block table.tfoot %} {% block table.tfoot %}
{% if table.has_footer %} {% if table.has_footer %}
<tfoot {{ table.attrs.tfoot.as_html }}> <tfoot {{ table.attrs.tfoot.as_html }}>
<tr> <tr>
{% for column in table.columns %} {% for column in table.columns %}
<td {{ column.attrs.tf.as_html }}>{{ column.footer }}</td> <td {{ column.attrs.tf.as_html }}>{{ column.footer }}</td>
{% endfor %} {% endfor %}
</tr> </tr>
</tfoot> </tfoot>
{% endif %} {% endif %}
{% endblock table.tfoot %} {% endblock table.tfoot %}
</table> </table>
{% endblock table %} {% endblock table %}
{% block pagination %} {% block pagination %}
{% if table.page and table.paginator.num_pages > 1 %} {% if table.page and table.paginator.num_pages > 1 %}
<ul class="pagination"> <ul class="pagination">
{% if table.page.has_previous %} {% if table.page.has_previous %}
{% block pagination.previous %} {% block pagination.previous %}
<li class="previous waves-effect"> <li class="previous waves-effect">
<a href="{% querystring table.prefixed_page_field=table.page.previous_page_number %}"> <a href="{% querystring table.prefixed_page_field=table.page.previous_page_number %}">
{% trans '<i class="material-icons">chevron_left</i>' %} {% trans '<i class="material-icons">chevron_left</i>' %}
</a> </a>
</li> </li>
{% endblock pagination.previous %} {% endblock pagination.previous %}
{% endif %}
{% if table.page.has_previous or table.page.has_next %}
{% block pagination.range %}
{% for p in table.page|table_page_range:table.paginator %}
<li {% if p == table.page.number %}class="active light-green darken-3"{% endif %} class="waves-effect">
{% if p == '...' %}
<a href="#">{{ p }}</a>
{% else %}
<a href="{% querystring table.prefixed_page_field=p %}">
{{ p }}
</a>
{% endif %} {% endif %}
{% if table.page.has_previous or table.page.has_next %} </li>
{% block pagination.range %} {% endfor %}
{% for p in table.page|table_page_range:table.paginator %} {% endblock pagination.range %}
<li {% if p == table.page.number %}class="active light-green darken-3"{% endif %} class="waves-effect"> {% endif %}
{% if p == '...' %} {% if table.page.has_next %}
<a href="#">{{ p }}</a> {% block pagination.next %}
{% else %} <li class="next waves-effect">
<a href="{% querystring table.prefixed_page_field=p %}"> <a href="{% querystring table.prefixed_page_field=table.page.next_page_number %}">
{{ p }} {% trans '<i class="material-icons">chevron_right</i>' %}
</a> </a>
{% endif %} </li>
</li> {% endblock pagination.next %}
{% endfor %} {% endif %}
{% endblock pagination.range %} </ul>
{% endif %} {% endif %}
{% if table.page.has_next %} {% endblock pagination %}
{% block pagination.next %}
<li class="next waves-effect">
<a href="{% querystring table.prefixed_page_field=table.page.next_page_number %}">
{% trans '<i class="material-icons">chevron_right</i>' %}
</a>
</li>
{% endblock pagination.next %}
{% endif %}
</ul>
{% endif %}
{% endblock pagination %}
{% endblock table-wrapper %} {% endblock table-wrapper %}