{"id":849,"date":"2023-02-06T18:01:19","date_gmt":"2023-02-06T18:01:19","guid":{"rendered":"https:\/\/gigers.com\/blog\/?p=849"},"modified":"2024-06-24T17:33:33","modified_gmt":"2024-06-24T17:33:33","slug":"automatische-generierung-von-texten","status":"publish","type":"post","link":"https:\/\/gigers.com\/blog\/automatische-generierung-von-texten\/","title":{"rendered":"Automatische Generierung von Texten"},"content":{"rendered":"<p>Auf k\u00fcnstlicher Intelligenz basierende Textgeneratoren wie ChatGPT haben die Aufmerksamkeit einer breiten \u00d6ffentlichkeit gewonnen. Wie diese funktionieren, ist jedoch nicht einfach nachvollziehbar. Aus diesem Grund hat der Informatiklehrer <a href=\"https:\/\/mrsie.de\/ueber-mich\/\">Marc Siemering<\/a> eine didaktisch vereinfachte auf Markow-Ketten basierende \u00a0Version in Python geschrieben, welche er anl\u00e4sslich des <a href=\"https:\/\/ausbaldowercamp.de\">Ausbaldower-Barcamps<\/a> am 2. Februar 2023 unter dem Titel &#8222;<a href=\"https:\/\/ausbaldowercamp.de\/wir-wuerfeln-woerter-so-funktioniert-chatgpt-intuition-aus-informatischer-sicht\/\">Wir w\u00fcrfeln W\u00f6rter<\/a>&#8220; vorstellte. Dieser Blogbeitrag greift die von Marc Siemering vorgestellten Ideen auf und erkl\u00e4rt diese am Beispiel der blockbasierten Programmierumgebung <a href=\"https:\/\/snap.berkeley.edu\">Snap!<\/a><\/p>\n<h2>Der Zufall als Grundlage<\/h2>\n<p>Damit solche Anwendungen wie ChatGPT \u00fcberhaupt funktionieren, ben\u00f6tigen sie eine entsprechende Datenbasis. Diese wird aus bereits vorhandenen Texten gewonnen. In der einfachsten Variante (ChatGPT ist wesentlich komplexer), werden diese Texte genutzt, passende Datenstrukturen aufzubauen.<\/p>\n<p>Bevor man sich mit der Auswertung von Texten besch\u00e4ftigt, lohnt es sich aber, erst einmal einige grundlegende Versuche durchzuf\u00fchren. F\u00fcr diese erste Gehversuche eignen sich die Zahlen 0-9. Damit k\u00f6nnen alle zu schreibenden Bl\u00f6cke getestet werden, bevor diese auf einen Textkorpus angewendet werden.<\/p>\n<p>In Snap! kann man sehr eine Liste von Zufallszahlen mit folgenden Bl\u00f6cken generieren:<\/p>\n<figure id=\"attachment_851\" aria-describedby=\"caption-attachment-851\" style=\"width: 525px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-851\" src=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/liste_zufallszahlen-1024x67.png\" alt=\"\" width=\"525\" height=\"34\" srcset=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/liste_zufallszahlen-1024x67.png 1024w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/liste_zufallszahlen-300x20.png 300w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/liste_zufallszahlen-768x51.png 768w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/liste_zufallszahlen.png 1244w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><figcaption id=\"caption-attachment-851\" class=\"wp-caption-text\">Der map()-Block erlaubt die einfache Generierung von Zufallszahlen.<\/figcaption><\/figure>\n<p>Die so erzeugten Zufallszahlen k\u00f6nnen mit einem entsprechenden Block auf dem Bildschirm ausgegeben werden.<\/p>\n<figure id=\"attachment_853\" aria-describedby=\"caption-attachment-853\" style=\"width: 525px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-853\" src=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/ausgabe_von_texten-1024x133.png\" alt=\"\" width=\"525\" height=\"68\" srcset=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/ausgabe_von_texten-1024x133.png 1024w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/ausgabe_von_texten-300x39.png 300w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/ausgabe_von_texten-768x100.png 768w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/ausgabe_von_texten.png 1074w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><figcaption id=\"caption-attachment-853\" class=\"wp-caption-text\">Dieser Block wird sp\u00e4ter auch f\u00fcr die Ausgabe der zu generierenden Texte verwendet.<\/figcaption><\/figure>\n<p>Die entsprechende Bildschirmausgabe sieht dann beispielsweise so aus:<\/p>\n<figure id=\"attachment_854\" aria-describedby=\"caption-attachment-854\" style=\"width: 525px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-854\" src=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_194805693-1024x129.png\" alt=\"\" width=\"525\" height=\"66\" srcset=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_194805693-1024x129.png 1024w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_194805693-300x38.png 300w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_194805693-768x97.png 768w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_194805693.png 1190w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><figcaption id=\"caption-attachment-854\" class=\"wp-caption-text\">Zuf\u00e4llige auf den Bildschirm ausgegebene Zahlen.<\/figcaption><\/figure>\n<p>Genau das gleiche Vorgehen kann nun anstatt mit Zahlen auch mit den aus einem Text gewonnenen W\u00f6rtern verwendet werden (zur Herkunft der Texte sp\u00e4ter mehr).<\/p>\n<figure id=\"attachment_855\" aria-describedby=\"caption-attachment-855\" style=\"width: 525px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-855\" src=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/text_aus_zufaelligen_woertern-1024x206.png\" alt=\"\" width=\"525\" height=\"106\" srcset=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/text_aus_zufaelligen_woertern-1024x206.png 1024w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/text_aus_zufaelligen_woertern-300x60.png 300w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/text_aus_zufaelligen_woertern-768x154.png 768w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/text_aus_zufaelligen_woertern.png 1074w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><figcaption id=\"caption-attachment-855\" class=\"wp-caption-text\">Die W\u00f6rter eines Textes werden in eine Liste geschrieben und anschliessend zur Generierung eines zuf\u00e4lligen Textes genutzt.<\/figcaption><\/figure>\n<p>Anstelle der zuf\u00e4lligen Zahlen werden so zuf\u00e4llige W\u00f6rter auf dem Bildschirm ausgegeben.<\/p>\n<figure id=\"attachment_856\" aria-describedby=\"caption-attachment-856\" style=\"width: 525px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-856\" src=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_195629281-1024x268.png\" alt=\"\" width=\"525\" height=\"137\" srcset=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_195629281-1024x268.png 1024w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_195629281-300x79.png 300w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_195629281-768x201.png 768w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_195629281.png 1199w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><figcaption id=\"caption-attachment-856\" class=\"wp-caption-text\">Die Bildschirmausgabe zeigt, die W\u00f6rter wurden wild zusammengew\u00fcrfelt und haben keinen Bezug zueinander.<\/figcaption><\/figure>\n<p>Dass die generierten W\u00f6rter thematisch zusammenpassen, h\u00e4ngt damit zusammen, dass diese aus einem Klexikon-Text zum Thema &#8222;<a href=\"https:\/\/klexikon.zum.de\/wiki\/Steinzeit#:~:text=Die%20Steinzeit%20begann%20vor%20etwa,und%20Werkzeuge%20gebrauchen%20und%20herstellen.\">Steinzeit<\/a>&#8220; stammen.<\/p>\n<h3>Struktur des Textes nutzen<\/h3>\n<p>Da es nicht das Ziel ist, zusammenhangslose Texte zu produzieren, soll in einem n\u00e4chsten Schritt die Abfolge der W\u00f6rter im Text genutzt werden, um ein besser passendes Ergebnis zu erzielen. Ob die entsprechenden Programmbl\u00f6cke richtig funktionieren, kann mithilfe der Snap!-Bl\u00f6cke ebenfalls schnell anhand der Zufallszahlen \u00fcberpr\u00fcft werden. Das Augenmerk hier, soll aber nun den eigentlichen Texten gelten.<\/p>\n<p>Eine erste einfache Idee besteht darin, dass nicht ein zuf\u00e4lliges Wort verwendet wird, sondern ein Wort, welches im Text auf einen schon vorhandenen Begriff folgt. Als Beispiel sollen die beiden folgenden S\u00e4tze aus dem Klexikon (wieder zu Steinzeit) dienen:<\/p>\n<p><em>Wie <span style=\"color: #ff0000;\"><strong>die<\/strong> <\/span>Menschen in der Steinzeit lebten, m\u00fcssen <span style=\"color: #ff0000;\"><strong>die<\/strong> <\/span>Arch\u00e4ologen aufgrund von Funden herausfinden. <span style=\"color: #ff0000;\">Die <\/span>Steinzeit ist <span style=\"color: #0000ff;\"><strong>der<\/strong> <\/span>\u00e4lteste Abschnitt in der Geschichte <span style=\"color: #0000ff;\"><strong>der<\/strong> <\/span>Menschheit.<\/em><\/p>\n<p>W\u00e4hrend in diesem kurzen Text die meisten W\u00f6rter eindeutige nachfolgende Begriffe haben, gibt es f\u00fcr die beiden Artikel &#8222;<span style=\"color: #ff0000;\">die<\/span>&#8220; und &#8222;<span style=\"color: #0000ff;\">der<\/span>&#8220; mehre M\u00f6glichkeiten. Damit kann nun eine Liste mit folgender Struktur aufgebaut werden:<\/p>\n<pre>... &gt; ...\r\n\r\nder &gt; \u00e4lteste, Menscheit\r\n\r\ndie &gt; Menschen, Steinzeit\r\n\r\n... &gt; ...<\/pre>\n<p>Ob dabei das &#8222;Die&#8220; ebenfalls ber\u00fccksichtig werden soll, h\u00e4ngt davon ab, wieweit die Texte in der Wortliste vereinfacht werden sollen.<\/p>\n<p>Das Snap!-Beispiel stell f\u00fcr das Erzeugen einer entsprechenden Liste (Struktur) folgenden Block zu Verf\u00fcgung:<\/p>\n<figure id=\"attachment_857\" aria-describedby=\"caption-attachment-857\" style=\"width: 525px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-857\" src=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/block-fuer_einfaches_woerterbuch-1024x697.png\" alt=\"\" width=\"525\" height=\"357\" srcset=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/block-fuer_einfaches_woerterbuch-1024x697.png 1024w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/block-fuer_einfaches_woerterbuch-300x204.png 300w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/block-fuer_einfaches_woerterbuch-768x523.png 768w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/block-fuer_einfaches_woerterbuch.png 1510w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><figcaption id=\"caption-attachment-857\" class=\"wp-caption-text\">Die Erzeugung eines einfachen ben\u00f6tigt schon wesentlich mehr Aufwand als die blosse Aneinanderreihung zuf\u00e4lliger W\u00f6rter.<\/figcaption><\/figure>\n<p>Das einfache W\u00f6rterbuch wird in mehreren Schritten erzeugt. Zuerst einmal werden alle W\u00f6rter mit ihren nachfolgenden W\u00f6rtern verkn\u00fcpft. Anschliessend wird \u00fcberpr\u00fcft, ob es W\u00f6rter gibt, die mehrmals im Text vorkommen. F\u00fcr diese wird dann ein gemeinsamer Eintrag mit allen nachfolgenden W\u00f6rtern erzeugt. Schliesslich wird die so gewonnene Listenstruktur noch einmal vereinheitlicht.<\/p>\n<p>F\u00fcr das Wort &#8222;ist&#8220; sieht der entsprechende Listeneintrag beispielsweise so aus:<\/p>\n<figure id=\"attachment_858\" aria-describedby=\"caption-attachment-858\" style=\"width: 525px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-858\" src=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_202043168-1024x128.png\" alt=\"\" width=\"525\" height=\"66\" srcset=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_202043168-1024x128.png 1024w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_202043168-300x38.png 300w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_202043168-768x96.png 768w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_202043168-1536x193.png 1536w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_202043168.png 1643w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><figcaption id=\"caption-attachment-858\" class=\"wp-caption-text\">Im Text stehen mehrere verschiedene W\u00f6rter nach dem Wort &#8222;ist&#8220;.<\/figcaption><\/figure>\n<p>Wird nun dieses W\u00f6rterbuch f\u00fcr die Generierung von Texten verwendet, kann das Programm \u00fcberall dort, wo mehrere Alternativen zu Verf\u00fcgung stehen, eine Zufallsentscheidung treffen. Die daf\u00fcr ben\u00f6tigten Bl\u00f6cke sind:<\/p>\n<figure id=\"attachment_859\" aria-describedby=\"caption-attachment-859\" style=\"width: 525px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-859\" src=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/textgenerierung_mit_einfachem_woerterbuch-1024x403.png\" alt=\"\" width=\"525\" height=\"207\" srcset=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/textgenerierung_mit_einfachem_woerterbuch-1024x403.png 1024w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/textgenerierung_mit_einfachem_woerterbuch-300x118.png 300w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/textgenerierung_mit_einfachem_woerterbuch-768x302.png 768w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/textgenerierung_mit_einfachem_woerterbuch.png 1388w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><figcaption id=\"caption-attachment-859\" class=\"wp-caption-text\">Bei den ben\u00f6tigten Bl\u00f6cken muss nun etwas mehr Aufwand betrieben werden, die Grundstruktur bleibt aber gleich. Der zus\u00e4tzliche Index wird f\u00fcr einen einfacheren Zugriff auf das W\u00f6rterbuch erzeugt.<\/figcaption><\/figure>\n<p>Die so erzeugten Texte t\u00e4uschen einen h\u00f6heren Zusammenhalt vor als wirklich vorhanden ist, denn aufgrund der \u00fcberschaubaren Textmenge sind jeweils nicht besonders viele Entscheidungsalternativen vorhanden. Trotzdem sind viele Logikbr\u00fcche im Text zu erkennen.<\/p>\n<figure id=\"attachment_860\" aria-describedby=\"caption-attachment-860\" style=\"width: 525px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-860\" src=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_202739979-1024x270.png\" alt=\"\" width=\"525\" height=\"138\" srcset=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_202739979-1024x270.png 1024w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_202739979-300x79.png 300w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_202739979-768x202.png 768w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_202739979.png 1195w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><figcaption id=\"caption-attachment-860\" class=\"wp-caption-text\">\u00dcberall dort, wo es mehrere Nachfolger zu einem gegebenen Wort gibt, sind grunds\u00e4tzliche Spr\u00fcnge in der Textlogik m\u00f6glich.<\/figcaption><\/figure>\n<h3>Markow-Ketten<\/h3>\n<p>Der schwache Bezug zwischen einem gegebenen Begriff und dem nachfolgenden Wort (unter Umst\u00e4nden sehr viele M\u00f6glichkeiten) kann korrigiert werden, wenn an die Stelle des einen Suchbegriffes mehrere W\u00f6rter treten. Im vorliegenden Beispiel werden daf\u00fcr Dreiergruppen von W\u00f6rtern als Schl\u00fcssel im W\u00f6rterbuch genutzt. Das entsprechende W\u00f6rterbuch wird mit einem leicht ver\u00e4nderten Block erzeugt.<\/p>\n<figure id=\"attachment_862\" aria-describedby=\"caption-attachment-862\" style=\"width: 525px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-862\" src=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/woerterbuch_mit_markow-ketten-1024x790.png\" alt=\"\" width=\"525\" height=\"405\" srcset=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/woerterbuch_mit_markow-ketten-1024x790.png 1024w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/woerterbuch_mit_markow-ketten-300x231.png 300w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/woerterbuch_mit_markow-ketten-768x592.png 768w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/woerterbuch_mit_markow-ketten-1536x1184.png 1536w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/woerterbuch_mit_markow-ketten.png 1564w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><figcaption id=\"caption-attachment-862\" class=\"wp-caption-text\">Die Schl\u00fcssel im W\u00f6rterbuch bestehen nun aus Dreiergruppen von W\u00f6rtern.<\/figcaption><\/figure>\n<p>Die mithilfe der Markow-Ketten erzeugten Texte weisen nun einen gr\u00f6sseren inneren Zusammenhalt auf.<\/p>\n<figure id=\"attachment_863\" aria-describedby=\"caption-attachment-863\" style=\"width: 525px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-863\" src=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_203945688-1024x252.png\" alt=\"\" width=\"525\" height=\"129\" srcset=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_203945688-1024x252.png 1024w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_203945688-300x74.png 300w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_203945688-768x189.png 768w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_203945688.png 1190w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><figcaption id=\"caption-attachment-863\" class=\"wp-caption-text\">Weil f\u00fcr die Textgenerierung nur wenig Material verwendet wurde, hat der Computer eine vergleichsweise kleine Auswahl von Zufallsm\u00f6glichkeiten. Dadurch wirkt der Text logischer.<\/figcaption><\/figure>\n<p>Nachdem nun an einem \u00fcberschaubaren Text gezeigt wurde, dass die entsprechende Programmlogik funktioniert, ist es Zeit, einen gr\u00f6sseren Textkorpus zu verwenden.<\/p>\n<h3>Verwendung von Textkorpora<\/h3>\n<p>W\u00e4hrend es noch vor wenigen Jahren \u00e4usserst schwierig war, insbesondere deutschsprachige Textkorpora zu finden, sind diese nun problemlos erh\u00e4ltlich. Eine gute Anlaufstelle ist beispielsweise der &#8222;<a href=\"https:\/\/daniel-jach.github.io\/simple-german\/simple-german.html\" target=\"_blank\" rel=\"noopener\">Korpus einfaches Deutsch (KED)<\/a>&#8222;. Dort findet man auch die Texte aus dem Klexikon. Da diese in der zum Herunterladen angebotenen ZIP-Datei als Einzeltexte vorliegen, f\u00fchrt man sie am besten via Kommandozeile zusammen. Unter Windows funktioniert dies mit folgendem Befehl:<\/p>\n<pre>type *.txt &gt; klexikon.txt<\/pre>\n<p>Ob man anschliessend den Gesamttext noch von Interpunktionszeichen etc. s\u00e4ubert, muss man selbst entscheiden. Eine bereits \u00fcberarbeitete Variante wird am Schluss dieses Beitrages zu Verf\u00fcgung gestellt.<\/p>\n<p>Um einen entsprechenden Text in Snap! zu verwenden, kann man diesen aus dem Dateimanager direkt in die Snap!-Umgebung hineinziehen. Anschliessend steht der Text als Variable zu Verf\u00fcgung.<\/p>\n<p>An dieser Stelle ist eine Warnung angebracht: M\u00f6chte man sein Werk in der Snap!-Cloud speichern, ist dabei zu beachten, dass Projekte nicht gr\u00f6sser als 10 MByte sein d\u00fcrfen. Vor dem Speichern sollte man also die entsprechenden Daten wieder aus der Snap!-Datei l\u00f6schen. Dazu stehen im Beispiel einige Bl\u00f6cke zu Verf\u00fcgung.<\/p>\n<h3>Versuch mit dem Gesamttext des Klexikons<\/h3>\n<p>Das Erzeugen des W\u00f6rterbuches aus dem Klexikon-Text funktioniert genau gleich wie oben beschrieben. Allerdings dauert dessen Generierung entsprechend l\u00e4nger. Auf einem einigermassen modernen Computer dauert die Berechnung zwischen ca. 5-10 Minuten.<\/p>\n<p>Auch die Generierung der Text dauert etwas l\u00e4nger, weil bei der Suche nach den entsprechenden Wortfolgen ein umfangreicherer Datenbestand durchforstet werden muss. F\u00fcr 100 W\u00f6rter muss man mit etwa 20 Sekunden Laufzeit rechnen.<\/p>\n<p>Das Resultat dieser Bem\u00fchungen sieht dann beispielsweise so aus:<\/p>\n<figure id=\"attachment_867\" aria-describedby=\"caption-attachment-867\" style=\"width: 525px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-867\" src=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_211845149-1024x243.png\" alt=\"\" width=\"525\" height=\"125\" srcset=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_211845149-1024x243.png 1024w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_211845149-300x71.png 300w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_211845149-768x182.png 768w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/Bild_2023-02-05_211845149.png 1298w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><figcaption id=\"caption-attachment-867\" class=\"wp-caption-text\">Durch die umfangreichere Textmenge im Ausgangsmaterial erh\u00f6ht sich die Anzahl der m\u00f6glichen Verzweigungen, was wieder zu mehr Unstimmigkeiten im Text f\u00fchrt.<\/figcaption><\/figure>\n<p>Die &#8222;entt\u00e4uschenden&#8220; resultierenden Textbeispiele zeigen, ChatGPT nutzt weit raffiniertere Techniken als ein bloss auf Markow-Ketten aufbauendes W\u00f6rterbuch.<\/p>\n<h2>Einsatz im Unterricht<\/h2>\n<p>Die zu Verf\u00fcgung gestellten Snap!-Bl\u00f6cke eignen sich, um auf verschiedenen Abstraktionsstufen an das Thema heranzugehen.\u00a0 Insbesondere zeigen sie auch auf, dass sowohl unterschiedliche Herangehensweisen als auch verschiedene Ausgangsmaterialen zu qualitativ anderen Ergebnissen f\u00fchren k\u00f6nnen.<\/p>\n<p>Falls man sich fragt, weshalb der meist etwas ungewohnte funktionale Ansatz anstatt eines rein iterativen Vorgehens (z.B. mittels for-Schleife) verwendet wurde, ist die Antwort einfach: In Snap! sind funktionale Ans\u00e4tze wesentlich performanter als die Verwendung von Schleifen.<\/p>\n<p>Die Tatsache, dass die Generierung der W\u00f6rterb\u00fccher wesentlich mehr Zeit ben\u00f6tigt, als das Generieren von Einzeltexten, kann dazu verwendet werden, auf die Kosten beim Trainieren von Sprachmodellen aus entsprechenden Textquellen hinzuweisen.<\/p>\n<p><span style=\"color: #333333; font-size: 1rem;\">Es lohnt sich sicherlich auf darauf hinzuweisen, dass durch den Einbezug gr\u00f6sserer Textkorpora &#8211; das Klexikonbeispiel umfasst etwa 1.6 Millionen W\u00f6rter &#8211; mit mehreren Milliarden W\u00f6rtern, der technische Aufwand noch einmal ungleich h\u00f6her ausf\u00e4llt, da derart umfangreiche Datenmengen nicht mehr einfach im Speicher des Computers bearbeitet werden k\u00f6nnen.<\/span><\/p>\n<p><span style=\"color: #333333; font-size: 1rem;\">Ob und inwiefern es sinnvoll ist, auf die erweiterten Techniken von Anwendungen wie ChatGPT einzugehen (so erfolgt die Auswahl nachfolgender W\u00f6rter gezielter), muss wahrscheinlich zu einem sp\u00e4teren Zeitpunkt noch einmal \u00fcberdacht werden. Das vorliegende Beispiel ist ein erster Schritt dahin.<\/span><\/p>\n<h3>Materialien zur Textgenerierung<\/h3>\n<p>Hier finden sich die Materialien zum vorgestellten Beispiel:<\/p>\n<ul>\n<li>Snap!-Programm: <a href=\"https:\/\/snap.berkeley.edu\/project?username=mattgig&amp;projectname=markov_chains_functional\" target=\"_blank\" rel=\"noopener\">Markov Chains &#8211; Functional<\/a><\/li>\n<li>Bearbeiteter Text des Klexikons: <a href=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2023\/02\/klexikon.txt\">Klexikon-Text<\/a> (ohne Satzzeichen)<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Auf k\u00fcnstlicher Intelligenz basierende Textgeneratoren wie ChatGPT haben die Aufmerksamkeit einer breiten \u00d6ffentlichkeit gewonnen. Wie diese funktionieren, ist jedoch nicht einfach nachvollziehbar. Aus diesem Grund hat der Informatiklehrer Marc Siemering eine didaktisch vereinfachte auf Markow-Ketten basierende \u00a0Version in Python geschrieben, welche er anl\u00e4sslich des Ausbaldower-Barcamps am 2. Februar 2023 unter dem Titel &#8222;Wir w\u00fcrfeln W\u00f6rter&#8220; &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/gigers.com\/blog\/automatische-generierung-von-texten\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eAutomatische Generierung von Texten\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-849","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/posts\/849","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/comments?post=849"}],"version-history":[{"count":10,"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/posts\/849\/revisions"}],"predecessor-version":[{"id":875,"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/posts\/849\/revisions\/875"}],"wp:attachment":[{"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/media?parent=849"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/categories?post=849"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/tags?post=849"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}