top of page

Sprache als selbstverstärkender Algorithmus:
Ein interaktives Analysetool zur Untersuchung von Narrativen und kollektiven Dynamiken

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.util.*;
public class SprachProphezeiungAnalyser {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new AnalyseMaske().createUI());
}
}
class AnalyseMaske {
private JTextArea eingabeFeld;
private JTextArea ausgabeFeld;
private JSlider jargonSlider;
private JSlider rhythmusSlider;
private JSlider narrativSlider;
public void createUI() {
JFrame frame = new JFrame("Sprachprophezeiungs-Maske");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 600);
// Eingabe
eingabeFeld = new JTextArea(10, 60);
JScrollPane eingabeScroll = new JScrollPane(eingabeFeld);
eingabeScroll.setBorder(BorderFactory.createTitledBorder("Texteingabe"));
// Ausgabe
ausgabeFeld = new JTextArea(10, 60);
ausgabeFeld.setEditable(false);
JScrollPane ausgabeScroll = new JScrollPane(ausgabeFeld);
ausgabeScroll.setBorder(BorderFactory.createTitledBorder("Analyseausgabe"));
// Stellschrauben (Slider)
jargonSlider = createSlider("Jargon-Erkennung");
rhythmusSlider = createSlider("Sprachrhythmus");
narrativSlider = createSlider("Narrativ-Fokus");
// Button
JButton analysierenButton = new JButton("Analysieren");
analysierenButton.addActionListener(this::analysieren);
// Layout
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panel.add(eingabeScroll);
panel.add(jargonSlider);
panel.add(rhythmusSlider);
panel.add(narrativSlider);
panel.add(analysierenButton);
panel.add(ausgabeScroll);
frame.add(panel);
frame.setVisible(true);
}
private JSlider createSlider(String title) {
JSlider slider = new JSlider(0, 100, 50);
slider.setBorder(BorderFactory.createTitledBorder(title));
slider.setMajorTickSpacing(25);
slider.setPaintTicks(true);
slider.setPaintLabels(true);
return slider;
}
private void analysieren(ActionEvent e) {
String text = eingabeFeld.getText();
int jargon = jargonSlider.getValue();
int rhythmus = rhythmusSlider.getValue();
int narrativ = narrativSlider.getValue();
String analyse = SprachAnalyse.analysiere(text, jargon, rhythmus, narrativ);
ausgabeFeld.setText(analyse);
}
}
class SprachAnalyse {
public static String analysiere(String text, int jargon, int rhythmus, int narrativ) {
StringBuilder sb = new StringBuilder();
sb.append(">> Analyseergebnis:\n");
// Einfaches Jargon-Scoring
int jargonScore = (int) Arrays.stream(text.split("\\W+"))
.filter(w -> w.length() > 10 || w.matches(".*ismus|.*ität|.*theorie"))
.count();
sb.append("- Jargon-Level: ").append(jargonScore * jargon / 100).append("\n");
// Rhythmusanalyse (hier: Satzlängenvariation)
String[] saetze = text.split("[.!?]");
int varianz = saetze.length > 1 ? saetze[0].length() - saetze[1].length() : 0;
sb.append("- Rhythmus-Abweichung: ").append(Math.abs(varianz) * rhythmus / 100).append("\n");
// Narrativanalyse (Fake-News-Erkennung, sehr rudimentär)
if (text.toLowerCase().contains("wahrheit") || text.toLowerCase().contains("lüge")) {
sb.append("- Narrativ-Trigger erkannt\n");
} else {
sb.append("- Keine starken Narrative erkannt\n");
}
// Prophezeiungs-Ausblick
if (jargon > 70 && narrativ > 70) {
sb.append(">> Mögliche selbstverstärkende Narrativbildung erkannt \n");
}
return sb.toString();
}
}


CREATE TABLE analysen (
id INTEGER PRIMARY KEY AUTOINCREMENT,
eingabetext TEXT,
jargon_level INTEGER,
rhythmus_level INTEGER,
narrativ_level INTEGER,
analysedatum DATETIME DEFAULT CURRENT_TIMESTAMP
);
import java.sql.*;
String userInput = "";
String analyseOutput = "";
Connection conn;
void setup() {
size(800, 600);
textFont(createFont("Arial", 14));
connectDB();
}
void draw() {
background(240);
fill(0);
text("Gib deinen Text ein (Return = Analysieren):", 20, 30);
text(userInput, 20, 60, width - 40, 200);
fill(50, 80, 120);
text("Ausgabe:", 20, 280);
fill(0);
text(analyseOutput, 20, 310, width - 40, height - 350);
}
void keyPressed() {
if (key == ENTER || key == RETURN) {
analyseOutput = analysiereText(userInput);
saveAnalyse(userInput, analyseOutput);
userInput = "";
} else if (key == BACKSPACE) {
if (userInput.length() > 0) {
userInput = userInput.substring(0, userInput.length()-1);
}
} else {
userInput += key;
}
}
String analysiereText(String text) {
int jargonLevel = countJargon(text);
int rhythmusLevel = measureRhythmus(text);
int narrativLevel = detectNarrativ(text);
return "Jargon-Level: " + jargonLevel +
"\nRhythmus-Level: " + rhythmusLevel +
"\nNarrativ-Level: " + narrativLevel;
}
int countJargon(String text) {
String[] words = splitTokens(text, " ,.?!-");
int count = 0;
for (String w : words) {
if (w.length() > 10 || w.endsWith("ismus") || w.endsWith("theorie")) {
count++;
}
}
return count;
}
int measureRhythmus(String text) {
String[] saetze = splitTokens(text, ".!?");
if (saetze.length < 2) return 0;
return abs(saetze[0].length() - saetze[1].length());
}
int detectNarrativ(String text) {
String lower = text.toLowerCase();
if (lower.contains("wahrheit") || lower.contains("lüge") || lower.contains("system")) {
return 80;
} else if (lower.contains("glaube") || lower.contains("meinung")) {
return 60;
}
return 20;
}

void connectDB() {
try {
Class.forName("org.sqlite.JDBC");
conn = DriverManager.getConnection("jdbc:sqlite:sprachprophezeiung.db");
Statement stmt = conn.createStatement();
stmt.executeUpdate("CREATE TABLE IF NOT EXISTS analysen (" +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"eingabetext TEXT, " +
"jargon_level INTEGER, " +
"rhythmus_level INTEGER, " +
"narrativ_level INTEGER, " +
"analysedatum DATETIME DEFAULT CURRENT_TIMESTAMP)");
} catch (Exception e) {
e.printStackTrace();
}
}
void saveAnalyse(String text, String analyseText) {
int j = countJargon(text);
int r = measureRhythmus(text);
int n = detectNarrativ(text);
try {
PreparedStatement pstmt = conn.prepareStatement(
"INSERT INTO analysen (eingabetext, jargon_level, rhythmus_level, narrativ_level) VALUES (?, ?, ?, ?)");
pstmt.setString(1, text);
pstmt.setInt(2, j);
pstmt.setInt(3, r);
pstmt.setInt(4, n);
pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
}
Sprache als selbstverstärkender Algorithmus:
Ein interaktives Analysetool zur Untersuchung von Narrativen und kollektiven Dynamiken
ENDE
bottom of page