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 %}
<div class="parallax-container">
<div class="section white">
<div class="row ">
<div class="container grey-text text-darken-3 lighten-3">
<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
der Software für die automatische Auszeichnung der
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>
<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 class="section white">
<div class="row ">
<div class="container grey-text text-darken-3 lighten-3">
<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
der Software für die automatische Auszeichnung der
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>
<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 class="parallax"><img src="{% static "/blog/images/4094966.jpg" %}"></div>
</div>
<div class="parallax"><img src="{% static "/blog/images/4094966.jpg" %}"></div>
</div>
<div class="parallax-container">
<div class="section white">
<div class="row ">
<div class="container grey-text text-darken-3 lighten-3">
<h4 class="header black-text">Datengrundlage</h4>
<p>Die Ausgangsdaten, welche für das Projekt genutzt wurden, sind für
alle Bürger und Bürgerinnen auf der
<a href="https://www.bundestag.de/service/opendata">Webseite des Bundestag</a>
frei zugänglich.</p>
<p>Im Rahmen einer Open
Data-Initiative stellt der deutsche Bundestag alle Plenarprotokolle
sowie die biografischen Daten aller Abgeordneten seit 1949 als
XML-Dateien zur Verfügung.</p>
<p>
Das Projekt Bundesdata umfasst alle XML-Protokolle der Wahlperioden 1.
bis 18. und deckt somit den Zeitraum von 1949 bis 2017 ab.<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">Datengrundlage</h4>
<p>Die Ausgangsdaten, welche für das Projekt genutzt wurden, sind für
alle Bürger und Bürgerinnen auf der
<a href="https://www.bundestag.de/service/opendata">Webseite des Bundestag</a>
frei zugänglich.</p>
<p>Im Rahmen einer Open
Data-Initiative stellt der deutsche Bundestag alle Plenarprotokolle
sowie die biografischen Daten aller Abgeordneten seit 1949 als
XML-Dateien zur Verfügung.</p>
<p>
Das Projekt Bundesdata umfasst alle XML-Protokolle der Wahlperioden 1.
bis 18. und deckt somit den Zeitraum von 1949 bis 2017 ab.<p>
</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 class="parallax-container">
<div class="section white">
<div class="row ">
<div class="container grey-text text-darken-3 lighten-3">
<h4 class="header black-text">Automatische Auszeichnung</h4>
<p>Da die von derBundesregierung bereitstellen XML-Protokolle nur wenig
bis keine maschinenlesbare Informationen dazu enthalten, welcher
Abgeordnete oder welche Abgeordnete zu welchem Zeitpunkt einen Redebeitrag
im Bundestag hatte, sind die Ausgangsdaten im Rahmen des Projekts
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>
</div>
</div>
<div class="section white">
<div class="row ">
<div class="container grey-text text-darken-3 lighten-3">
<h4 class="header black-text">Automatische Auszeichnung</h4>
<p>Da die von derBundesregierung bereitstellen XML-Protokolle nur wenig
bis keine maschinenlesbare Informationen dazu enthalten, welcher
Abgeordnete oder welche Abgeordnete zu welchem Zeitpunkt einen Redebeitrag
im Bundestag hatte, sind die Ausgangsdaten im Rahmen des Projekts
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>
</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 class="parallax-container">
<div class="section white">
<div class="row ">
<div class="container grey-text text-darken-3 lighten-3">
<h4 class="header black-text">Quellcode für Software und Webanwendung</h4>
<p>
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
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>
</div>
</div>
<div class="section white">
<div class="row ">
<div class="container grey-text text-darken-3 lighten-3">
<h4 class="header black-text">Quellcode für Software und Webanwendung</h4>
<p>
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
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>
</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 class="parallax-container">
<div class="section white">
<div class="row ">
<div class="container grey-text text-darken-3 lighten-3">
<h4 class="header black-text">Download der ausgezeichneten Daten</h4>
<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 class="section white">
<div class="row ">
<div class="container grey-text text-darken-3 lighten-3">
<h4 class="header black-text">Download der ausgezeichneten Daten</h4>
<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 class="parallax"><img src="{% static "/blog/images/4094966.jpg" %}"></div>
</div>
<div class="parallax"><img src="{% static "/blog/images/4094966.jpg" %}"></div>
</div>
<div class="parallax-container">
<div class="section white">
<div class="row ">
<div class="container grey-text text-darken-3 lighten-3">
<h4 class="header black-text">Fehlerquoten und Probleme der Ausgangsdaten</h4>
<p>Die automatische Auszeichnung der Protokolle ist nicht gänzlich fehlerfrei.
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>
</div>
</div>
<div class="section white">
<div class="row ">
<div class="container grey-text text-darken-3 lighten-3">
<h4 class="header black-text">Fehlerquoten und Probleme der Ausgangsdaten</h4>
<p>Die automatische Auszeichnung der Protokolle ist nicht gänzlich fehlerfrei.
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>
</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>
{% endblock content %}

View File

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

View File

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

View File

@ -7,173 +7,173 @@ app.-->
{% block content %}
<div class="parallax-container">
<div class="parallax">
<img src="{% static "/blog/images/4116197.jpg" %}">
<div class="parallax">
<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 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 class="container hide-on-med-and-down">
<div class="row" style="margin-top: 25px;">
<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">account_circle</i></p>
<span class="card-title">Abgeordnete (MdBs)</span>
<p class="grey-text text-darken-3 lighten-3">Profile aller Mitglieder des Deutschen Bundestags von 1949 bis heute.</p>
</div>
<div class="card-action">
<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="container hide-on-med-and-down">
<div class="row" style="margin-top: 25px;">
<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"">account_circle</i></p>
<span class=" card-title">Abgeordnete (MdBs)</span>
<p class="grey-text text-darken-3 lighten-3">Profile aller Mitglieder des Deutschen Bundestags von 1949 bis heute.</p>
</div>
<div class="card-action">
<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 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="parallax-container">
<div class="parallax">
<img src="{% static "/blog/images/4094966.jpg" %}">
<div class="parallax">
<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 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 class="parallax-container">
<div class="parallax">
<img src="{% static "/blog/images/4116197.jpg" %}">
</div>
<div class="section white">
<div class="row">
<div class="container grey-text text-darken-3 lighten-3">
<h4 class="header black-text">Die Tools</h4>
<p>Politikinteressierte können z.B.
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
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,
die sich in der Sprache der Reden widerspiegeln, sichtbar und analysierbar
zu machen.</p>
<p>Das Projekt ist im Rahmen einer Masterarbeit entstanden.
Mehr Informationen zum Projekt, der Arbeit, der Datengrundlage sowie der
automatischen Auszeichnung mit zusätzlichen Informationen und
Metadaten gibt es auf der <a href="{% url "about-page" %}">Info-Seite</a>.</p>
</div>
</div>
<div class="parallax">
<img src="{% static "/blog/images/4116197.jpg" %}">
</div>
<div class="section white">
<div class="row">
<div class="container grey-text text-darken-3 lighten-3">
<h4 class="header black-text">Die Tools</h4>
<p>Politikinteressierte können z.B.
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
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,
die sich in der Sprache der Reden widerspiegeln, sichtbar und analysierbar
zu machen.</p>
<p>Das Projekt ist im Rahmen einer Masterarbeit entstanden.
Mehr Informationen zum Projekt, der Arbeit, der Datengrundlage sowie der
automatischen Auszeichnung mit zusätzlichen Informationen und
Metadaten gibt es auf der <a href="{% url "about-page" %}">Info-Seite</a>.</p>
</div>
</div>
</div>
</div>
<div class="parallax-container">
<div class="parallax">
<img src="{% static "/blog/images/4116197.jpg" %}">
</div>
<div class="section white">
<div class="row">
<div class="container grey-text text-darken-3 lighten-3">
<br />
<div class="slider">
<ul class="slides" style="background-color: inherit; text-align: center;">
<li>
<img src="{% static "/blog/images/slide_ngram_viewer.png" %}"> <!-- random image -->
<div class="caption right-align">
</div>
</li>
<li>
<img src="{% static "/blog/images/slider_profile.png" %}"> <!-- random image -->
<div class="caption right-align">
</div>
</li>
<li>
<img src="{% static "/blog/images/one_speech.png" %}"> <!-- random image -->
<div class="caption right-align">
</div>
</li>
<li>
<img src="{% static "/blog/images/one_protocol.png" %}"> <!-- random image -->
<div class="caption right-align">
</div>
</li>
</ul>
</div>
</div>
<div class="parallax">
<img src="{% static "/blog/images/4116197.jpg" %}">
</div>
<div class="section white">
<div class="row">
<div class="container grey-text text-darken-3 lighten-3">
<br />
<div class="slider">
<ul class="slides" style="background-color: inherit; text-align: center;">
<li>
<img src="{% static "/blog/images/slide_ngram_viewer.png" %}"> <!-- random image -->
<div class="caption right-align">
</div>
</li>
<li>
<img src="{% static "/blog/images/slider_profile.png" %}"> <!-- random image -->
<div class="caption right-align">
</div>
</li>
<li>
<img src="{% static "/blog/images/one_speech.png" %}"> <!-- random image -->
<div class="caption right-align">
</div>
</li>
<li>
<img src="{% static "/blog/images/one_protocol.png" %}"> <!-- random image -->
<div class="caption right-align">
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="parallax-container">
<div class="parallax">
<img src="{% static "/blog/images/4094966.jpg" %}">
</div>
<div class="parallax">
<img src="{% static "/blog/images/4094966.jpg" %}">
</div>
</div>
{% endblock content %}

View File

@ -4,61 +4,61 @@
{% block content %}
<div class="container">
<div class="row">
<div class="col s12">
<div class="card">
<div class="card-content">
<span class="card-title">Impressum</span>
<div class="row">
<div class="col s12">
<div class="card">
<div class="card-content">
<span class="card-title">Impressum</span>
<b>Angaben gemäß § 5 TMG</b>
<br />
<p>Stephan Porada<br />
Bremer Straße 17a<br />
33613 Bielefeld</p>
<br />
<b>Kontakt</b>
<br />
<p>E-Mail: sporada@uni-bielefeld.de</p>
<br />
<b>Verantwortlich für den Inhalt nach § 55 Abs. 2 RStV</b>
<br />
<p>Stephan Porada<br />
Bremer Straße 17a<br />
33613 Bielefeld</p>
<br />
<b>Haftung für Inhalte</b>
<br />
<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
verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu
forschen, die auf eine rechtswidrige Tätigkeit hinweisen.
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
Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden
Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.</p>
<br />
<p>Haftung für Links
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
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
waren zum Zeitpunkt der Verlinkung nicht erkennbar.
Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer
Rechtsverletzung nicht zumutbar. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links
umgehend entfernen.</p>
<br />
<p>Quelle:
eRecht24</p>
<br />
<b>Quelle der Bilder:</b>
<p>
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 />
</p>
<b>Angaben gemäß § 5 TMG</b>
<br />
<p>Stephan Porada<br />
Bremer Straße 17a<br />
33613 Bielefeld</p>
<br />
<b>Kontakt</b>
<br />
<p>E-Mail: sporada@uni-bielefeld.de</p>
<br />
<b>Verantwortlich für den Inhalt nach § 55 Abs. 2 RStV</b>
<br />
<p>Stephan Porada<br />
Bremer Straße 17a<br />
33613 Bielefeld</p>
<br />
<b>Haftung für Inhalte</b>
<br />
<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
verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu
forschen, die auf eine rechtswidrige Tätigkeit hinweisen.
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
Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden
Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.</p>
<br />
<p>Haftung für Links
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
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
waren zum Zeitpunkt der Verlinkung nicht erkennbar.
Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer
Rechtsverletzung nicht zumutbar. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links
umgehend entfernen.</p>
<br />
<p>Quelle:
eRecht24</p>
<br />
<b>Quelle der Bilder:</b>
<p>
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 />
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock content %}

View File

@ -28,7 +28,8 @@ SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess string'
DEBUG = True
# 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
@ -84,10 +85,6 @@ WSGI_APPLICATION = 'bundesdata_app.wsgi.application'
# Database
# 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 = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',

View File

@ -5,190 +5,187 @@ query. This creates the ngram viewer per speaker. -->
{% block nav-tabs %}
<div class="nav-content">
<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" class="active" href="{% url "ngram-viewer-sprecher" %}">Pro MdB</a></li>
</ul>
</div>
<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" class="active" href="{% url "ngram-viewer-sprecher" %}">Pro MdB</a></li>
</ul>
</div>
{% endblock nav-tabs %}
{% block content %}
<div class="row">
<div class="col s12 m12 l4">
<div class="card">
<div class="card-content">
<span class="card-title center-align">Suchoptionen</span>
<div class="row">
<form method="GET" class="col s12">
{% csrf_token %}
{% if errors %}
<p class="red-text text-darken-2">Es kann nur jeweils ein Ngramm gesucht werden.</p>
{% endif %}
<div class="input-field col s12">
<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 = "Ausländer" {% endif %}}>
<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
<i class="material-icons right">send</i>
</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="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 class="col s12 m12 l4">
<div class="card">
<div class="card-content">
<span class="card-title center-align">Suchoptionen</span>
<div class="row">
<form method="GET" class="col s12">
{% if errors %}
<p class="red-text text-darken-2">Es kann nur jeweils ein Ngramm gesucht werden.</p>
{% endif %}
<div class="input-field col s12">
<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 = "Ausländer" {% endif %}}>
<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
<i class="material-icons right">send</i>
</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>
<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 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>
<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 %}

View File

@ -5,194 +5,193 @@ query. This creates the ngram viewer per year. -->
{% block nav-tabs %}
<div class="nav-content">
<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" href="{% url "ngram-viewer-sprecher" %}">Pro MdB</a></li>
</ul>
<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" href="{% url "ngram-viewer-sprecher" %}">Pro MdB</a></li>
</ul>
</div>
{% endblock nav-tabs %}
{% block content %}
<div class="row">
<div class="col s12 m12 l4">
<div class="card">
<div class="card-content">
<span class="card-title center-align">Suchoptionen</span>
<div class="row">
<form method="GET" class="col s12">
{% csrf_token %}
<div class="input-field col s12">
<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 %}}>
<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
<i class="material-icons right">send</i>
</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 class="col s12 m12 l4">
<div class="card">
<div class="card-content">
<span class="card-title center-align">Suchoptionen</span>
<div class="row">
<form method="GET" class="col s12">
<div class="input-field col s12">
<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 %}}>
<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
<i class="material-icons right">send</i>
</button>
</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>
<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>
</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>
<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>
</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>
<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>
</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 class="divider"></div>
</div>
</form>
</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 %}

View File

@ -5,118 +5,118 @@
{% block content %}
<div class="container">
<div class="row">
<div class="col s12 m4 l4">
<div class="card">
<div class="card-content">
<span class="card-title center-align">
{% 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}}</span>
<p class="center-align"><i class="large material-icons blue-grey-text darken-4">account_circle</i></p>
<span class="card-title">Biographie</span>
<ul>
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">cake</i> Geburtstag: {{current_speaker.birthday}}</li>
<br />
{% 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:
{{ current_speaker.day_of_death}}</span></li>
<br />
{% endif %}
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">home</i> Geburtsort: {{current_speaker.birthplace}}</li>
<br />
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">work</i> Beruf: {{current_speaker.occupation}}</li>
<br />
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">fingerprint</i> Bundestags ID: {{current_speaker.id}}</li>
<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
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;">filter_9_plus</i> Reden/Redebeiträge insgesamt: {{speech_count}}</li>
</ul>
</div>
</div>
<ul class="collapsible expandable hoverable">
{% if current_speaker.short_vita %}
<li>
<div class="collapsible-header">Kurzbiographie</div>
<div class="collapsible-body white"><span>{{current_speaker.short_vita}}</span></div>
</li>
<div class="row">
<div class="col s12 m4 l4">
<div class="card">
<div class="card-content">
<span class="card-title center-align">
{% 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}}</span>
<p class="center-align"><i class="large material-icons blue-grey-text darken-4">account_circle</i></p>
<span class="card-title">Biographie</span>
<ul>
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">cake</i> Geburtstag: {{current_speaker.birthday}}</li>
<br />
{% 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:
{{ current_speaker.day_of_death}}</span></li>
<br />
{% endif %}
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">home</i> Geburtsort: {{current_speaker.birthplace}}</li>
<br />
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">work</i> Beruf: {{current_speaker.occupation}}</li>
<br />
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">fingerprint</i> Bundestags ID: {{current_speaker.id}}</li>
<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
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;">filter_9_plus</i> Reden/Redebeiträge insgesamt: {{speech_count}}</li>
</ul>
</div>
</div>
<ul class="collapsible expandable hoverable">
{% if current_speaker.short_vita %}
<li>
<div class="collapsible-header">Kurzbiographie</div>
<div class="collapsible-body white"><span>{{current_speaker.short_vita}}</span></div>
</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 %}
{% 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 %}
</ul>
</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>
</li>
{% endfor %}
</ul>
</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>
{% endblock content %}

View File

@ -6,32 +6,31 @@ Bundestag since 1949. -->
{% block content %}
<div class="container">
<div class="row">
<div class="col s12">
<div class="card">
<div class="card-content">
<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>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>
<br />
<div class="row">
<form method="GET" class="col l4 offset-l8 m6 offset-m6 s12">
{% csrf_token %}
<div class="row">
<div class="input-field">
<i class="material-icons prefix">search</i>
{{form}}
</div>
</div>
</form>
</div>
<div style="overflow-x:auto;">
{% render_table table %}
</div>
</div>
<div class="row">
<div class="col s12">
<div class="card">
<div class="card-content">
<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>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>
<br />
<div class="row">
<form method="GET" class="col l4 offset-l8 m6 offset-m6 s12">
<div class="row">
<div class="input-field">
<i class="material-icons prefix">search</i>
{{form}}
</div>
</div>
</form>
</div>
<div style="overflow-x:auto;">
{% render_table table %}
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock content %}

View File

@ -5,95 +5,95 @@
classes defined in tables.py. Mostly used to display search results. -->
{% block table-wrapper %}
{% block table %}
<table {% render_attrs table.attrs %} class="highlight">
{% block table.thead %}
{% if table.show_header %}
<thead {{ table.attrs.thead.as_html }}>
<tr>
{% for column in table.columns %}
<th {{ column.attrs.th.as_html }}>
{% 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>
{% else %}
{{ column.header }}
{% endif %}
</th>
{% endfor %}
</tr>
</thead>
{% endif %}
{% endblock table.thead %}
{% block table.tbody %}
<tbody {{ table.attrs.tbody.as_html }}>
{% for row in table.paginated_rows %}
{% block table.tbody.row %}
<tr {{ row.attrs.as_html }}>
{% 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>
{% endfor %}
</tr>
{% endblock table.tbody.row %}
{% empty %}
{% if table.empty_text %}
{% block table.tbody.empty_text %}
<tr><td colspan="{{ table.columns|length }}">{{ table.empty_text }}</td></tr>
{% endblock table.tbody.empty_text %}
{% endif %}
{% endfor %}
</tbody>
{% endblock table.tbody %}
{% block table.tfoot %}
{% if table.has_footer %}
<tfoot {{ table.attrs.tfoot.as_html }}>
<tr>
{% for column in table.columns %}
<td {{ column.attrs.tf.as_html }}>{{ column.footer }}</td>
{% endfor %}
</tr>
</tfoot>
{% endif %}
{% endblock table.tfoot %}
</table>
{% endblock table %}
{% block table %}
<table {% render_attrs table.attrs %} class="highlight">
{% block table.thead %}
{% if table.show_header %}
<thead {{ table.attrs.thead.as_html }}>
<tr>
{% for column in table.columns %}
<th {{ column.attrs.th.as_html }}>
{% 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>
{% else %}
{{ column.header }}
{% endif %}
</th>
{% endfor %}
</tr>
</thead>
{% endif %}
{% endblock table.thead %}
{% block table.tbody %}
<tbody {{ table.attrs.tbody.as_html }}>
{% for row in table.paginated_rows %}
{% block table.tbody.row %}
<tr {{ row.attrs.as_html }}>
{% 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>
{% endfor %}
</tr>
{% endblock table.tbody.row %}
{% empty %}
{% if table.empty_text %}
{% block table.tbody.empty_text %}
<tr><td colspan="{{ table.columns|length }}">{{ table.empty_text }}</td></tr>
{% endblock table.tbody.empty_text %}
{% endif %}
{% endfor %}
</tbody>
{% endblock table.tbody %}
{% block table.tfoot %}
{% if table.has_footer %}
<tfoot {{ table.attrs.tfoot.as_html }}>
<tr>
{% for column in table.columns %}
<td {{ column.attrs.tf.as_html }}>{{ column.footer }}</td>
{% endfor %}
</tr>
</tfoot>
{% endif %}
{% endblock table.tfoot %}
</table>
{% endblock table %}
{% block pagination %}
{% if table.page and table.paginator.num_pages > 1 %}
<ul class="pagination">
{% if table.page.has_previous %}
{% block pagination.previous %}
<li class="previous waves-effect">
<a href="{% querystring table.prefixed_page_field=table.page.previous_page_number %}">
{% trans '<i class="material-icons">chevron_left</i>' %}
</a>
</li>
{% endblock pagination.previous %}
{% block pagination %}
{% if table.page and table.paginator.num_pages > 1 %}
<ul class="pagination">
{% if table.page.has_previous %}
{% block pagination.previous %}
<li class="previous waves-effect">
<a href="{% querystring table.prefixed_page_field=table.page.previous_page_number %}">
{% trans '<i class="material-icons">chevron_left</i>' %}
</a>
</li>
{% 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 %}
{% 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 %}
</li>
{% endfor %}
{% endblock pagination.range %}
{% endif %}
{% if table.page.has_next %}
{% 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 %}
</li>
{% endfor %}
{% endblock pagination.range %}
{% endif %}
{% if table.page.has_next %}
{% 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 %}

View File

@ -5,83 +5,83 @@
{% block content %}
<div class="container">
<div class="row">
<div class="col s12 m4">
<div class="card">
<div class="card-content">
<span class="card-title center-align">
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>
<span class="card-title">Metadaten</span>
<ul>
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">date_range</i>Wahlperiode: {{current_protocol.protocol_period}}</li>
<br />
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">date_range</i>Sitzungsnummer: {{current_protocol.session_nr}}</li>
<br />
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">date_range</i>Datum: {{current_protocol.session_date}}</li>
<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>
<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>
<br />
</div>
</div>
<ul class="collapsible hoverable white">
<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-body">
<ul>
{% for speaker in speakers %}
<li>
<a href="/mdbs/mdb/{{speaker.id}}">{{speaker.id}}: {{speaker.last_name}}, {{speaker.first_name}}</a>
</li>
<br />
{% 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 %}
<div class="row">
<div class="col s12 m4">
<div class="card">
<div class="card-content">
<span class="card-title center-align">
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>
<span class="card-title">Metadaten</span>
<ul>
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">date_range</i>Wahlperiode: {{current_protocol.protocol_period}}</li>
<br />
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">date_range</i>Sitzungsnummer: {{current_protocol.session_nr}}</li>
<br />
<li><i class="material-icons blue-grey-text darken-4" style="margin-right: 10px;">date_range</i>Datum: {{current_protocol.session_date}}</li>
<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>
<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>
<br />
</div>
</div>
<ul class="collapsible hoverable white">
<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-body">
<ul>
{% for speaker in speakers %}
<li>
<a href="/mdbs/mdb/{{speaker.id}}">{{speaker.id}}: {{speaker.last_name}}, {{speaker.first_name}}</a>
</li>
<br />
{% endfor %}
</ul>
</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>
</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>
</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>
{% endblock content %}

View File

@ -5,29 +5,28 @@
{% block content %}
<div class="container">
<div class="row">
<div class="col s12">
<div class="card">
<div class="card-content">
<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>
<div class="row">
<form method="GET" class="col l4 offset-l8 m6 offset-m6 s12">
{% csrf_token %}
<div class="row">
<div class="input-field">
<i class="material-icons prefix">search</i>
{{form}}
</div>
</div>
</form>
</div>
<div style="overflow-x:auto;">
{% render_table table %}
</div>
<div class="row">
<div class="col s12">
<div class="card">
<div class="card-content">
<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>
<div class="row">
<form method="GET" class="col l4 offset-l8 m6 offset-m6 s12">
<div class="row">
<div class="input-field">
<i class="material-icons prefix">search</i>
{{form}}
</div>
</div>
</div>
</form>
</div>
<div style="overflow-x:auto;">
{% render_table table %}
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock content %}

View File

@ -5,184 +5,184 @@
{% block content %}
<div class="container">
<div class="row">
<div class="col s12 m4">
<div class="card">
<div class="card-content">
<span class="card-title center-align">
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>
<span class="card-title">Metadaten</span>
<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:
{{current_speech.foreign_protocol.protocol_id}}</a></li>
<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>
<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>
<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>
<br />
{% if 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>
</a>
{%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>
{% 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>
<div class="row">
<div class="col s12 m4">
<div class="card">
<div class="card-content">
<span class="card-title center-align">
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>
<span class="card-title">Metadaten</span>
<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:
{{current_speech.foreign_protocol.protocol_id}}</a></li>
<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>
<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>
<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>
<br />
{% if 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>
</a>
{%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>
{% 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 %}
</div>
</div>
</div>
{% endblock content %}

View File

@ -5,29 +5,28 @@
{% block content %}
<div class="container">
<div class="row">
<div class="col s12">
<div class="card">
<div class="card-content">
<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>
<div class="row">
<form method="GET" class="col l4 offset-l8 m6 offset-m6 s12">
{% csrf_token %}
<div class="row">
<div class="input-field">
<i class="material-icons prefix">search</i>
{{form}}
</div>
</div>
</form>
</div>
<div style="overflow-x:auto;">
{% render_table table %}
</div>
<div class="row">
<div class="col s12">
<div class="card">
<div class="card-content">
<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>
<div class="row">
<form method="GET" class="col l4 offset-l8 m6 offset-m6 s12">
<div class="row">
<div class="input-field">
<i class="material-icons prefix">search</i>
{{form}}
</div>
</div>
</div>
</form>
</div>
<div style="overflow-x:auto;">
{% render_table table %}
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock content %}

View File

@ -5,95 +5,95 @@
classes defined in tables.py. Mostly used to display search results. -->
{% block table-wrapper %}
{% block table %}
<table {% render_attrs table.attrs %} class="highlight">
{% block table.thead %}
{% if table.show_header %}
<thead {{ table.attrs.thead.as_html }}>
<tr>
{% for column in table.columns %}
<th {{ column.attrs.th.as_html }}>
{% 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>
{% else %}
{{ column.header }}
{% endif %}
</th>
{% endfor %}
</tr>
</thead>
{% endif %}
{% endblock table.thead %}
{% block table.tbody %}
<tbody {{ table.attrs.tbody.as_html }}>
{% for row in table.paginated_rows %}
{% block table.tbody.row %}
<tr {{ row.attrs.as_html }}>
{% 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>
{% endfor %}
</tr>
{% endblock table.tbody.row %}
{% empty %}
{% if table.empty_text %}
{% block table.tbody.empty_text %}
<tr><td colspan="{{ table.columns|length }}">{{ table.empty_text }}</td></tr>
{% endblock table.tbody.empty_text %}
{% endif %}
{% endfor %}
</tbody>
{% endblock table.tbody %}
{% block table.tfoot %}
{% if table.has_footer %}
<tfoot {{ table.attrs.tfoot.as_html }}>
<tr>
{% for column in table.columns %}
<td {{ column.attrs.tf.as_html }}>{{ column.footer }}</td>
{% endfor %}
</tr>
</tfoot>
{% endif %}
{% endblock table.tfoot %}
</table>
{% endblock table %}
{% block table %}
<table {% render_attrs table.attrs %} class="highlight">
{% block table.thead %}
{% if table.show_header %}
<thead {{ table.attrs.thead.as_html }}>
<tr>
{% for column in table.columns %}
<th {{ column.attrs.th.as_html }}>
{% 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>
{% else %}
{{ column.header }}
{% endif %}
</th>
{% endfor %}
</tr>
</thead>
{% endif %}
{% endblock table.thead %}
{% block table.tbody %}
<tbody {{ table.attrs.tbody.as_html }}>
{% for row in table.paginated_rows %}
{% block table.tbody.row %}
<tr {{ row.attrs.as_html }}>
{% 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>
{% endfor %}
</tr>
{% endblock table.tbody.row %}
{% empty %}
{% if table.empty_text %}
{% block table.tbody.empty_text %}
<tr><td colspan="{{ table.columns|length }}">{{ table.empty_text }}</td></tr>
{% endblock table.tbody.empty_text %}
{% endif %}
{% endfor %}
</tbody>
{% endblock table.tbody %}
{% block table.tfoot %}
{% if table.has_footer %}
<tfoot {{ table.attrs.tfoot.as_html }}>
<tr>
{% for column in table.columns %}
<td {{ column.attrs.tf.as_html }}>{{ column.footer }}</td>
{% endfor %}
</tr>
</tfoot>
{% endif %}
{% endblock table.tfoot %}
</table>
{% endblock table %}
{% block pagination %}
{% if table.page and table.paginator.num_pages > 1 %}
<ul class="pagination">
{% if table.page.has_previous %}
{% block pagination.previous %}
<li class="previous waves-effect">
<a href="{% querystring table.prefixed_page_field=table.page.previous_page_number %}">
{% trans '<i class="material-icons">chevron_left</i>' %}
</a>
</li>
{% endblock pagination.previous %}
{% block pagination %}
{% if table.page and table.paginator.num_pages > 1 %}
<ul class="pagination">
{% if table.page.has_previous %}
{% block pagination.previous %}
<li class="previous waves-effect">
<a href="{% querystring table.prefixed_page_field=table.page.previous_page_number %}">
{% trans '<i class="material-icons">chevron_left</i>' %}
</a>
</li>
{% 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 %}
{% 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 %}
</li>
{% endfor %}
{% endblock pagination.range %}
{% endif %}
{% if table.page.has_next %}
{% 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 %}
</li>
{% endfor %}
{% endblock pagination.range %}
{% endif %}
{% if table.page.has_next %}
{% 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 %}