Added some explanations

This commit is contained in:
Stephan Porada 2019-03-03 14:39:46 +01:00
parent ffb0acf3d7
commit b444701093
19 changed files with 215 additions and 20 deletions

0
.gitignore vendored Normal file → Executable file
View File

0
README.md Normal file → Executable file
View File

0
app/Dockerfile Normal file → Executable file
View File

0
app/Pipfile Normal file → Executable file
View File

0
app/Pipfile.lock generated Normal file → Executable file
View File

0
app/blog/migrations/__init__.py Normal file → Executable file
View File

0
app/blog/static/blog/images/one_protocol.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 103 KiB

After

Width:  |  Height:  |  Size: 103 KiB

0
app/blog/static/blog/images/one_speech.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 81 KiB

0
app/blog/static/blog/images/slide_ngram_viewer.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 107 KiB

After

Width:  |  Height:  |  Size: 107 KiB

0
app/blog/static/blog/images/slider_profile.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 75 KiB

View File

@ -6,21 +6,22 @@ class NgramForm(forms.Form):
Describes and configures the input html form for the Ngram Viewer per year. Describes and configures the input html form for the Ngram Viewer per year.
""" """
CORPUS_CHOICE = [('lm_ns_year', 'Lemmatisiert ohne Stoppwörter'), CORPUS_CHOICE = [('lm_ns_year', 'Lemmatisiert ohne Stoppwörter'),
('tk_ws_year', 'Nicht lemmatisiert mit Stoppwörtern'),] ('tk_ws_year', 'Nicht lemmatisiert mit Stoppwörtern'), ]
query = forms.CharField(label="Suche Ngramme", max_length="200") query = forms.CharField(label="Suche N-Gramme", max_length="200")
case_sensitive = forms.BooleanField(label="case-sensitive", required=False) case_sensitive = forms.BooleanField(label="case-sensitive", required=False)
search_plus = forms.BooleanField(label="search-plus", required=False) search_plus = forms.BooleanField(label="search-plus", required=False)
ignore_missing = forms.BooleanField(label="fill-zeros", required=False) ignore_missing = forms.BooleanField(label="fill-zeros", required=False)
corpus_choice = forms.ChoiceField(label="Wählen Sie einen Corpus", choices=CORPUS_CHOICE) corpus_choice = forms.ChoiceField(label="Wählen Sie einen Corpus", choices=CORPUS_CHOICE)
class NgramFormSpeaker(forms.Form): class NgramFormSpeaker(forms.Form):
""" """
Describes and configures the input html form for the Ngram Viewer per speaker. Describes and configures the input html form for the Ngram Viewer per speaker.
""" """
CORPUS_CHOICE = [('lm_ns_speaker', 'Lemmatisiert ohne Stoppwörter'), CORPUS_CHOICE = [('lm_ns_speaker', 'Lemmatisiert ohne Stoppwörter'),
('tk_ws_speaker', 'Nicht lemmatisiert mit Stoppwörtern'),] ('tk_ws_speaker', 'Nicht lemmatisiert mit Stoppwörtern'), ]
query = forms.CharField(label="Suche Ngramm", max_length="200") query = forms.CharField(label="Suche N-Gramm", max_length="200")
case_sensitive = forms.BooleanField(label="case-sensitive", required=False) case_sensitive = forms.BooleanField(label="case-sensitive", required=False)
search_plus = forms.BooleanField(label="search-plus", required=False) search_plus = forms.BooleanField(label="search-plus", required=False)
ignore_missing = forms.BooleanField(label="fill-zeros", required=False) ignore_missing = forms.BooleanField(label="fill-zeros", required=False)

0
app/ngram_viewer/migrations/__init__.py Normal file → Executable file
View File

View File

@ -65,7 +65,7 @@ query. This creates the ngram viewer per speaker. -->
<div class="divider"></div> <div class="divider"></div>
<div class="section"> <div class="section">
<div class="input-field col s12"> <div class="input-field col s12">
<i class="material-icons prefix">filter_9_plus</i> <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 %}}> <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> <label for="id_range">{{form.range.label}}</label>
</div> </div>
@ -76,14 +76,109 @@ query. This creates the ngram viewer per speaker. -->
</div> </div>
</div> </div>
</div> </div>
<ul class="collapsible"> <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> <li>
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">info_outline</i>Hilfe und Hinweise</div> <div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">search</i>Muster der Suchanfrage</div>
<div class="collapsible-body white"> <div class="collapsible-body">
<h6>Muster der Suchanfrage<h6> <p>Eine Suchanfrage ist ein einzelner Begriff bzw. einzelne Phrase.</p>
<p></p> <p>Die beispielhafte Suchanfrage "Ausländer"
<h6>Suchgeschwindigkeit<h6> fragt somit die Häufigkeit des Begriffs ab.
<p></p> 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> </div>
</li> </li>
</ul> </ul>

View File

@ -76,14 +76,113 @@ query. This creates the ngram viewer per year. -->
</div> </div>
</div> </div>
</div> </div>
<ul class="collapsible"> <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> <li>
<div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">info_outline</i>Hilfe und Hinweise</div> <div class="collapsible-header"><i class="material-icons blue-grey-text darken-4">search</i>Muster der Suchanfrage</div>
<div class="collapsible-body white"> <div class="collapsible-body">
<h6>Muster der Suchanfrage<h6> <p>Eine Suchanfrage ist eine durch Kommata getrennte
<p></p> Zeichenkette. Durch die Kommata werden verschiedene Begriffe
<h6>Suchgeschwindigkeit<h6> voneinander getrennt und einzeln abgefragt.</p>
<p></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> </div>
</li> </li>
</ul> </ul>
@ -91,7 +190,7 @@ query. This creates the ngram viewer per year. -->
<div class="col s12 m12 l8"> <div class="col s12 m12 l8">
<div class="card"> <div class="card">
<div class="card-content"> <div class="card-content">
<span class="card-title">Graph</span> <span class="card-title">Häufigkeit der gesuchten N-Gramme pro Jahr von 1949 bis 2017</span>
{{ line_chart.as_html}} {{ line_chart.as_html}}
</div> </div>
</div> </div>

0
app/speakers/migrations/__init__.py Normal file → Executable file
View File

0
app/speeches/migrations/__init__.py Normal file → Executable file
View File

0
docker-compose.yml Normal file → Executable file
View File

0
nginx/Dockerfile Normal file → Executable file
View File

0
nginx/nginx.conf Normal file → Executable file
View File