{% extends "blog/base.html" %}

<!-- This template creates the ngram viewer page for the user according to the
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>
{% 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>
        </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 %}
