ConspiracyNet: die Grundlagen

Es steht nicht viel Theorie hinter einem Textgenerator wie dem cnet: es gibt eine Anzahl vorgegebener Template-Sätze, die Variablen enthalten. Diese Variablen werden durch Satzfragmente (im einfachsten Fall bloße Substantive) ersetzt, die mehr oder weniger zufällig ausgewählt werden. Was die Sache interessant macht, ist die Auswahl der Substitutionsregeln, und die Intelligenz, die "unsinnige" Kombinationen ausschliessen soll. cnet arbeitet auf einem einfachen semantisches Feld (dem der Konspirationstheorien), und die Substitutionen sind bisher auf Eigennamen beschränkt. Diese Namen (oder Actors) sind in einer Actor-Datenbank gespeichert, die die wichtigsten Kongruenzkriterien enthält: Zeit und Raum. Jeder Actor kann nur mit anderen Actors in einem Text auftauchen, die ungefähr zur gleichen Zeit und am gleichen Ort gelebt haben (ein Jahr mehr oder weniger fällt nicht auf, aber 20 Jahre können bei Actors der neueren Geschichte schon auffallen -- Kaiser Wilhelm II wird JFK nie getroffen haben.) Die gleichen Kriterien hängen auch an den Skelett-Texten.

Die Implementierung

Textbasierte cgi-skripte schreien geradezu nach perl. cgen ist ein perl-skript, das zwei datensätze einliest und eine cgi-konforme html-ausgabe erzeugt (also ein http-result-code, gefolgt von einem html-dokument). Die Datensätze befinden sich in einem anderen directory als dem cgi-bin und sind (noch) nicht parametrierbar.

Bei allen Datensätzen gilt: semikolons trennen felder; Kommata trennen Elemente in einer Aufzählung, Namen dürfen Leerzeichen enthalten.

Actors

Der eine Datensatz, "actors", enthält actor-definitionen wie die folgende:
actor: Caesar; Caesar, Gaius Julius Caesar; -80,-40; rom; politiker, opfer
Dieser Datensatz hat einen primary key ("Caesar"), der von allen anderen actor-namen verschieden sein muss. Die folgenden Felder sind:

Stories

Der andere Datensatz enthält die eigentlichen Stories, d.h. die Text-Templates, in die die Actors einsetzt werden. Ein einfacher Datensatz sieht so aus:
story: Mord 1
time: 1930,1960
cast: opfer = any opfer
cast: taeter= any politiker, any organisation, Gott in seinem Zorn
text:
$taeter tötete $opfer.
Die "story"-Zeile beginnt eine neue Story. Die "time"-Zeile setzt ein Kongruenzkriterium für die Zeit. Jede "Cast"-Zeile fügt eine neue Figur hinzu. In diesem Fall gibt es zwei Figuren zu besetzen, taeter und opfer. Das Opfer kann jeder actor sein, der zur Kategorie "Opfer" gehört; täter kann jeder politiker oder jede organisation, oder "Gott in seinem Zorn" (ein temporärer actor, nicht mehr als ein String, der zu allem kongruent ist). Mit "any one" kann man wirklich jeden Actor auswaehlen.
(c) 1997 mfx @ das buro am draht / last edit: 97-03-31