Wie funktioniert's?

Der Blutzuckerwert

Ich bin Typ 1 Diabetiker und trage ein Messgerät zur kontinuierlichen Blutzuckermessung (das Dexcom G6), welches alle 5 Minuten meinen aktuellen Wert per Bluetooth an mein Smartphone sendet. Die dazugehörige App bietet die Möglichkeit die Daten auf einem Server zur Verfügung zu stellen, sehr praktisch um als zB Eltern von Kindern mit Diabetes auch von woanders immer einen Überblick haben zu können. Ein in Python programmiertes Programm ruft den aktuellen Wert ab und ordnet ihn wie folgt einer Stimmung zu, die ich mit den jeweiligen Werten verbinde:

Wert niedriger als 60 -> Furcht
Wert zwischen 60 und 80 -> Aengstlichkeit
Wert zwischen 80 und 100 -> Liebe
Wert zwischen 100 und 120 -> Begeisterung
Wert zwischen 120 und 140 -> Freude
Wert zwischen 140 und 160 -> Zufriedenheit
Wert zwischen 160 und 200 -> Depressivitaet
Wert über 200 -> Zorn

Die erste Zeile

Je nach Stimmung werden aus dem Affektiven Diktionär Ulm zufällig ein Adjektiv/Verb und ein Substantiv ausgewählt und in die Gedicht-KI gegeben, die daraus ein Gedicht schreibt. Das Gedicht wird in seine Zeilen zerlegt und die einzelnen Zeilen werden einer Sentimentanalyse unterzogen (mit TextBlob). Wenn eine Zeile passend zur Stimmung positiv bzw. negativ bewertet wird, wird diese als erste Zeile an die Gedicht-KI weitergegeben.

Vielen Dank an dieser Stelle für das zur Vergügung stellen des ADU!

Die Gedicht-KI

Grundlage für die KI ist ein vortrainiertes deutsches GPT-2-Modell. GPT-2 ist ein künstliches neuronales Netz, ein statistisches Sprachmodell, welches im Grunde genommen Sprache ausrechnet und dann berechnen kann wie wahrscheinlich, in welchem Kontext, welches Wort ist (sehr verkürzt). Dadurch ist es mit GPT-2 möglich, abhängig von ein paar ersten Wörtern, quasi endlos neuen Text zu generieren. Das vortrainierte Modell wurde von mir mit einem selbst zusammengestellten Korpus aus etwas über 90'000 Zeilen deutschsprachiger Lyrik weitertrainiert (für Interessierte: mit Transformers).

Diverse Parameter, die den generierten Text beeinflussen können, sind dabei ebenfalls abhängig von meinem aktuellen Blutzuckerwert und -trend, so dass ein stark steigender oder stark fallender Blutzucker in der Theorie zu einem "wirreren" Gedicht führt, als ein stabiler Wert.

Die Seite

Der Vollständigkeit halber: Die fertigen Gedichte werden in einer SQLite3 Datenbank abgespeichert und können von dort über diese Webseite abgerufen werden. Das passiert automatisch alle 5 Minuten, die Gedichte sind also tatsächlich komplett ungelesen, wenn ihr sie über die Seite entdeckt. Es interessiert zwar niemanden, aber die Seite läuft über einen bunten Strauß aus Bootstrap, Docker, Django, NginX und uWSGi.

Warum?

Eigentlich hauptsächlich zwei Sachen:
1. Mir gefällt die Vorstellung, dass relativ schnell relativ viele komplett ungelesene Gedichte existieren (Eins alle 5 Minuten macht immerhin über 100'000 im Jahr). Je mehr ungelesene Gedichte in der Datenbank sind, umso wahrscheinlicher wird es, dass ein richtig richtig geiles Gedicht dabei ist. So ein bisschen "Monkeys with a Typewriter"-mäßig.
2. 100'000 Gedichte im Jahr sind äquivalent zu 100'000 Blutzuckermessungen im Jahr. Diabetes läuft immer mit und kann extrem frustrierend und anstrengend und überfordernd sein. Wenn ich das nächste Mal richtig beschissene Werte zu beschissenen Zeiten habe, entstehen daraus vielleicht wenigstens ein paar schöne Gedichte.

Zur Galerie Zeig mir ein Gedicht!