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