Blogging in Zeitnot

Bloggen mit zu wenig Zeit; oder wie lasse ich mir meine Blog Einträge von einem neuronalen Netz generieren.

Warum

Wie immer wenn ich mich an eine Aufgabe mache überlege ich mir ob ich das automatisieren könnte. Deshalb auch die Frage, kann ich blogging automatisieren? Daher nun das Rezept für einen Blog Generator.

Anfang 2019 wurde von OpenAI das GPT-2 Model teilweise und später vollständig veröffentlicht. GPT-2 ist ein neurales Netzwerk welches auf Text generierung trainiert wurde. Man kann mit erstaunlich wenig Aufwand das Model auf eine andere Art von Text umlernen. Nun das passende Rezept dazu.

Zutaten

  • 172 kB Beispieltext
  • 1 GPT-2 Model
  • 1 Python Interpreter
  • 1 leistungstarke GPU

So wirds gemacht

Zur Beginn laden wir uns das passende GPT-2 Model herunter. Typischerweise das grösste das gerade noch so knapp in deine GPU rein passt.

import gpt_2_simple as gpt2
import os
import tensorflow as tf

# Ursprungsmodel
model_name = "774M"
if not os.path.isdir(os.path.join("models", model_name)):
     # Download des gewählten Ursprungmodel
     print(f"Downloading {model_name} model...")
     gpt2.download_gpt2(model_name=model_name)

Wir speichern nun unseren Beispieltext im File blog.txt und füttern diesen in unser GPT-2 Modul. Dann lassen wir das ganze bei voller Leistung während ca. 1000 Schritten rechnen.

file_name = "blog.txt"

sess = gpt2.start_tf_sess()
# Wir passen unser heruntergeladene Model auf den Beispieltext an
gpt2.finetune(sess,
              file_name,
              model_name=model_name,
              learning_rate=1e-5,
              run_name="run18",
              steps=1000)

Nun haben wir ein neu trainiertes Model auf unserer Text Basis.

Wenn du das ganze nachkochen möchtest gibt es das ganze Rezept auch als Jupyter Notebook.

Anrichten

Wir können das nun umtrainierte Model dazu benutzen auf unseres Problem zugeschnitte Texte zu generieren.

import gpt_2_simple as gpt2
import tensorflow as tf

# wir resetten den graph da sonst nicht im gleichen Notebook trainiert und generiert werden kann
tf.reset_default_graph()
sess = gpt2.start_tf_sess()
gpt2.load_gpt2(sess, run_name="run18")
# wir generieren nun einen text mit dem gewählten prefix
gpt2.generate(sess, run_name="run18", prefix="This is a blog about innovation driven by digital transformation.")

Der obige Code generiert uns immer wieder neue zufällige Texte. Mit dem Prefix können wir steuern über was der Text generiert wird.

Resultat

Hier ist ein Beispiel welches mit deepl übersetzt wurde.

Dies ist ein Blog über Innovation, die durch digitale Transformation vorangetrieben wird. Es erforscht neue Verwendungsmöglichkeiten von Daten und Analysen, um Organisationen dabei zu helfen, neue Probleme zu verstehen und anzugehen. Es schließt die Verwendung der altmodischen menschlichen Note nicht aus, aber die Innovation wird durch Daten und Analysen über Daten angetrieben. Der Blog enthält eine Vielzahl von Beispielen aus der Praxis, die zeigen, wie datengetriebene Erkenntnisse bereits genutzt wurden. Sie können hier auch Ihre eigenen Beispiele einreichen. Geht es nicht darum, neue Märkte zu schaffen, Bestände zu verwalten oder Kundenbedürfnisse vorherzusagen oder fangen Sie erst jetzt an, über diese Dinge nachzudenken? Schritte zur Transformation Wenn Sie nicht in der Branche der „Transformation“ tätig sind, können diese Informationen hilfreich sein. Zunächst einmal sollten Sie Ihre Einstellung zur Veränderung ändern. Trennen Sie die Probleme in zwei Gruppen – Probleme, die gelöst werden müssen, und Probleme, die verändert werden sollten. Die Probleme, die geändert werden müssen, sind die Probleme, die noch nicht gelöst sind.

Das Resultat ist glücklicherweise noch nicht zu 100% überzeugend, auf den ersten Blick ist es jedoch nicht erkennbar das eine Maschine den Text geschrieben hat. Es sieht eher aus wie wenn jemand einfach zum letzten Satz einen weiteren angehängt hätte, exakt wozu dieses Netz trainiert wurde.
~

Beitrag teilen

Schreibe einen Kommentar