Mini-LLM selbstgemacht

Eine Vorfuehrung, wie ein vorliegender Rohtext als Sprachmodell benutzt werden kann, um daraus endlos lange Texte zu generieren. Dabei entwickeln wir live den Programm-Code, der am Textende ein weiteres Zeichen setzt, und noch ein Zeichen setzt, und noch ein Zeichen setzt...

Obwohl unser Phrasendrescher dumm wie Stroh ist, wirken die Resultate ueberraschend gut.

Fuer die Vorfuehrung nehmen wir die interaktive Programmiersprache "J". Wer dabei auf den Geschmack gekommen ist, kann in einem Workshop mehr dazu lernen.

Code

NB. Sprachmodelle: c =. 'chemnitzer linuxtage' clt =. 7 u: 1!:1 <'clt.txt' g =. 7 u: 1!:1 <'f1.txt' NB. Folgezeichen-Menge, Ausdruck: c {~ (#'t') + I. 't' E. c NB. Folgezeichen-Menge, Funktion, inkl. wrap-around am Modell-Ende: fzm =. 4 : 'x {~ (#x) | (#y) + I. y E. x , (#y) {. x' NB. Random-Auswahl EINES Folgezeichens NB. Haeufigere Folgezeichen haben dabei auch eine entsprechend hoehere NB. Wahrscheinlichkeit, ausgelost zu werden: rnd =. {~ ?@# f =. rnd@fzm NB. Markov-Kette: 300 mal werden die letzten 1 bzw. 4 Zeichen des NB. Textes genommen und um ein --gemaess Sprachmodell-- passiges NB. Folgezeichen erweitert: _1 (] , c&f@{.) ^: 300 'linux' _4 (] , clt&f@{.) ^: 300 'Open-Source'

Beispiel-Daten


clt.txt Chemnitzer Linuxtage 2024 Webseiten-Texte (133 KB)
f1.txt J.-W. v. Goethe "Faust 1" (187 KB)
man.txt a few man pages (87 KB)

J-Interpreter

Ohne Installation "live" im Internet: J Playground

Interpreter Download fuer den eigenen Linux-Rechner (x86_64, RaspberryPi 32/64 bit): https://code.jsoftware.com/wiki/System/Installation