Tim Abramczyk

Distant Writing

Schreiben(Schreiben) - Poesie aus Zufall
Die Möglichkeit keiner Insel

import nltk
import gutenberg_cleaner
import string
import re
import numpy as np
import pandas as pd
import io
import os
from os import path
from PIL import Image
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
import matplotlib.pyplot as plt
import spacy
import random
from pdfminer.high_level import extract_text
from HanTa import HanoverTagger as ht
tagger = ht.HanoverTagger('morphmodel_ger.pgz')
from pprint import pprint # Printing new line for each list element

from numpy import array
from pickle import dump
from keras.preprocessing.text import Tokenizer
from keras.utils import to_categorical
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from keras.layers import Embedding
from random import randint
from pickle import load
from keras.models import load_model
from keras.preprocessing.sequence import pad_sequences

Einleitung

Was wäre Distant Writing? Was wäre Fern-Schreiben?

Dieser Frage vorausgegangen sind einige Betrachtungen zum Thema Distant Reading. Der Begriff ist entstanden in den angelsächsischen Literaturwissenschaften des frühen 21. Jahrhunderts und beschäftigt sich unter anderem mit quantitativen Zugriffsmöglichkeiten auf Text und Semantik, sowie mit Datenvisualisierungstechniken.[Jan15].

Hier startet mein Gedankenspiel. Was wäre ein schreibendes Gegenstück zum Distant Reading?

from pyvis.network import Network
import networkx as nx

nx_graph = nx.cycle_graph(5)
nx_graph.add_node(20, size=7, label='nah', title='fern', group=2)
nx_graph.add_node(21, size=15, label='fern', title='nah', group=2)
nx_graph.add_edge(20, 21, weight=5)
nx_graph.add_node(26, size=16, label='zufall', title='zufall', group=3)
nx_graph.add_node(27, size=12, label='schreiben(lesen)', title='schreiben', group=4)
nx_graph.add_node(28, size=8, label='teleskop', title='teleskop', group=5)
nx_graph.add_node(29, size=13, label='wahn', title='wahn', group=6)
nx_graph.add_node(30, size=11, label='code', title='code', group=7)
nx_graph.add_node(31, size=9, label='räume', title='räume', group=8)
nx_graph.add_node(32, size=9, label='generierung', title='generierung', group=9)
nx_graph.add_node(33, size=9, label='lesen(schreiben)', title='lesen', group=10)
nx_graph.add_node(34, size=9, label='schreiben(schreiben)', title='distantwriting', group=10)

nt = Network('500px', '500px')
nt.prep_notebook()
nt.from_nx(nx_graph)


nt.heading = ''
#nt.show("mindgraph.html")
#<img src="_images/mindgraph-v3.png" alt="" style="width:500px;"/>

Aus den Bruchstückhaften Gedanken ein erster Notizprozess beginnt.

Mein Schreibprozess verläuft diskontinuierlich in einem erweiterten Sinne. So sehen wir hier einen Prozess, der mit dieser Arbeit seinen Anfang nimmt, und dem ich auch in Zukunft weiter nachgehen möchte. Zwangsläufig werden an einigen Stellen Gedankenstränge verschriftlicht, die sich noch nicht schlüssig mit anderen verbinden lassen. Diese Teile lasse ich bewusst so stehen, weil deren Anschlussfähigkeit möglicherweise erst aus größerer Distanz, oder zu einem späteren Zeitpunkt erkennbar wird.

Mit der Frage nach der Ferne im Schreibprozesse versuche ich aus einer anderen Perspektive auf Textproduktion zu schauen. Die Frage dient als Folie, als Rätsel-Objekt, welches mich dazu zwingt, genauer über Lesen und Schreiben nachzudenken. Diese Arbeit funktioniert allerdings in vielerlei Hinsicht nicht nur wie ein Rätsel-Objekt, sondern auch wie ein Lern-Objekt.[Roh21] Zunächst im ganz trivialen Sinne: Ich übe Fließtext und Python schreiben. Lerne Verflechten, Neu-Anordnen. Weil Schreiben über Schreiben ein distanzübergreifendes, also breites Feld ist, wären wir auch bei einem ersten Distanzaspekt: Ich lerne das Annähern an Themenfelder und deren Überschneidungen. Textsatz, Kommentarspalten, Code- Output und Kommentare abwechselnd mit Fließtext wird hier innerhalb eines Jupyter Notebook realisiert. Jupyter Notebook kann man als Weiterentwicklung des 1988 veröffentlichten Mathematica Notebook-Interface betrachten. [Hor20] Dieser Textsatz ermöglicht mir überhaupt erst Code, Fließtext, und Zitate klar lesbar miteinander zu verbinden. Innerhalb von einem Dokument Software zu entwickeln und über diese zu reflektieren, oder andere Verbindungen zwischen Prommquelltext und Fließtext zu suchen. Ein Lern bzw. Didaktik Objekt also deshalb, weil ich durch abwechselndes Parameter-Tweaking, Kommentieren, und Notieren einen dialogischen Schreib-Prozess entwickeln kann. [Eym13]

Vielleicht darf ich mit dieser Textform ein Stückchen daran mitarbeiten, gängige Presets und Trennungen zwischen Disziplinen zu hinterfragen, zwinge mich indessen auch dazu – aus Gründen der Ökonomie – wieder andere Presets, zum Beispiel die Presets der Jupyter Notebook-Community oder auch die Presets der immer größer werdenden Browser-Software-Architekturen hinzunehmen. So enthält dieses Dokument vier verschiedene Textebenen: Fließtext, Python-Code, Code-Kommentare, Python-Output. Diese vier Textebenen stehen in unterschiedlichen Beziehungen zueinander. Manchmal stehen sie nebeneinander, manchmal folgen sie aufeinander, meistens schlagen sie jedoch eine Vertikale zueinander oder, um es mit den Worten Alexander Kluges zu sagen: Sie sind einander Brunnengräber. [Klu10] Somit wären wir bei einem weiteren Distanzaspekt dieser Markup-Textform: Durch ihre Hyperlinks lässt sie weite Sprünge zu: Distanz wird dabei zum Möglichkeitsraum für neue Anknüpfungspunkte und Verkettungen. Diese Arbeit ließe sich ohne große Schwierigkeiten in ein kollaboratives Wiki verwandeln. Wegen dieser partikulären Form muss ich mich aber auch damit zufrieden geben, dass immer wieder Text-Blöcke entstehen, die anders aufgebaut sind als die vorherigen, anders argumentieren, anders funktionieren.

Was also wäre Distant Writing?

Um mich dieser Frage zu nähern möchte zunächst einige Überlegungen zu Distanzverhältnisse bezogen auf Text festhalten. Zunächst schaue ich also aus einiger Entfernung auf Schreibprozesse. Ich schreibe über räumliche Aspekte. Über zeitliche Aspekte. Über Übersetzung. Über perspektivische Aspekte. Ich schreibe auch Leseprozesse, und stelle zur Disposition, inwiefern diese gleichzeitig Schreibprozesse sind. Ist es möglich gleichzeitig Leser:in und schreibende Person zu sein? Ich frage nach dem Nah-Schreiben. Schreibe über Wiederholung. Über Korrektur. Schreibe mit und durch Black-Boxes. Über Vervollständigung. Über Kontrolle und das Abgeben von Kontrolle. Über Schreiben aus Zufall. Über das Schreiben mit Sprachmodellen (Link zum Glossar). Während alldem entwickelt sich ein Text-Automat namens Parisisi.

Zuletzt muss ich feststellen: Es gibt Unordnung. Immer noch. Und das ist auch gut so.

Fernschreiben

Schreiben und Distanz

# Zustand 0
# model.generate()

 

Schreiben sucht das Weite

Dieser Text entsteht in einer Pandemie. Während der Covid-19 Pandemie studieren wir fern. Aus Gründen der Minimierung von Ansteckungsgefahr existieren Studierende und Lehrende der Hochschule ausschließlich im Online-Format. Unsere physikalischen Körper sind weit voneinander entfernt. Wir interagieren ausschließlich über die Browser-Fenster vor unseren Köpfen.

Geschrieben wird dieser Text aus Strom, mit einem aufklappbaren Computer (15” Screen, 2,3 GHz 8-Core i9, 32 GB Arbeitsspeicher). Ich tippe mit zwei Fingern auf einer Tastatur, und schon erscheint Text auf meinem Bildschirm, der nur kaum mehr als ein Dutzend Zentimeter vor meinem Gesicht steht. Zwischen dem Tippen und dem Erscheinen auf dem Bildschirm arbeitet ein browserbasiertes (Jupyter Notebook, SSH-Tunnel, Mozilla Firefox) System, welches auf einem virtuellen Miet-Server der Strato GmbH liegt. Zwischen diesem Laptop und den Buchstaben auf dem Bildschirm steckt also noch ein Netzwerk weiterer Computer, das also mit am Schreibprozess beteiligt ist, dazwischen ein Netz an Leitungen. Kilometer von Leitungen. Trügerische Distanzverhältnisse: Die Entfernung zwischen meinen Fingern und meinem Bildschirm beträgt aus dieser Perspektive betrachtet nicht fünfzehn Zentimeter, sondern tausende Kilometer. Ist dieser kleine Laptop eigentlich groß wie ein Häuserblock? Oder so groß wie eine ganze Stadt? Hundert Millionen Instruktionen-Schreibmaschine. Durch Lichtwellenleiter. Vergleichbar mit Windhunden, die hinter einem Stoff-Kaninchen herlaufen, versuchen sich meine Finger in Lichtgeschwindigkeit zu bewegen, schaffen es aber nie so ganz. Am Ende wird dieses Dokument prinzipiell von fast überall jedem Punkt der Erde aus auf einem Bildschirm zu sehen sein.

Während ich einen Artikel über die Geschichte der britischen Telegraphie lese, stoße ich auf ein weiteres skurriles Schreib-Werkzeug: Zeitkanon(en).

Eines Tages überquerte ein Bergmann aus einem entfernten Teil von Durham, der noch nie etwas von Zeitkanonen gehört hatte, die Newcastle Bridge, als er durch das plötzliche Dröhnen der Kanone direkt über ihm aufgeschreckt wurde. Erstaunt fragte er einen Fahrgast, “Was das gewesen sei?”, der antwortete, es sei “ein Uhr”. “Ein Uhr!” rief der Bergmann aus; “ich bin sehr froh, dass ich nicht um zwölf hier war.”

” Mr. N. J. Holmes … stellte eine Zeitkanone in Newcastle auf. 120 Meilen entfernt von Edinburgh sollte diese mittels Magnet-Zünder abgefeuert werden. An einem schönen Tag entlud der Strom, der entlang des Telegraphendrahtes gesendet problemlos, und die Kanone konnte ohne nennenswertes Zögern feuern; an einem nebligen Tag aber wurde der hochintensive Magnet-Strom in zu großem Maße zerstreut und ging verloren…”

Zwischen dem 14. Dezember 1863 und dem 14. Januar 1864 sah die Trefferquote der Zeit-Kanone unter der Leitung der Electric Telegraph Company folgendermaßen aus:

Von 31 Versuchen wurden,
korrekte Geschütze: 12
Keine Geschütze: 18
zur falsche Zeit: 1
abgefeuert

Die letzte Zeitkanone wurde 1865 in Belfast auf Einladung der Handelskammer errichtet… Die Kanone sollte täglich um 1 Uhr (Greenwich-Zeit) feuern, und war Teil einer Kampagne der Handelskammer für die Synchronisierung der Zeit mit Großbritannien. [Rob06]

Kanonenkugeln als (Ex-)Plosiv-Satzzeichen? Oder anders ausgedrückt: Schottland tätowiert sich Großbritanniens Taktstriche in den Wald. George Perec jedenfalls schrumpft sich lieber gleich selbst für das Schreiben: Er geht auf Papier spazieren und sucht nach Leerstellen. [Per74] In der Raumzeit des beschriebenen Blattes ist er sich als Schreibender der Topologie der Seite bewusst. Er ist sich auch der institutionellen Bedingungen bewusst, die die Seite umgeben. Schreiben erfolgt in einem Feld und die Texte sind spezifische Territorien.

# Hier noch mal kurz Parisi Austin Modell

An dieser Stelle gilt es lediglich festzuhalten: Nicht jedes Schriftdokument, nicht jeder Akt des Schreibens muss zwingend ein Kommunikationsakt sein. Die Kommunikationsfunktion vieler Schriftstücke scheint jedoch ein wichtiger Motor solcher technischer Entwicklungen zu sein, die der Überwindung räumlicher Entfernungen dienen. Zwar ermöglichen erst die elektronischen Kommunikationssysteme “die noch bestehende räumliche (also zeitliche) Beschränkung der Kommunikation gegen Null tendieren” zu lassen [Luh98], etwas Raumzeitüberwindendes scheint jedoch schon lange vor der Erfindung des Elektrons mit dem Schreiben verwoben zu sein. So könnte ich ein ähnliches Beispiel wie oben auch über die Handschrift formulieren: Zwischen Stift und Schrift liegen hunderte Kilometer Schulweg, globalisierte Lieferketten, Rechtschreibreformen und vieles Andere mehr. Schon der Brief aus Papier kann mittels Bot:innen tausende Kilometer weit getragen werden und ist prinzipiell überall lesbar.

Suche ich das Ferne im Schreibprozess allein in den Schreib-Werkzeugen, müsste ich einräumen, dass jedes Schreiben schon immer Fernschreiben war, und nicht erst das “elektronische” Schreiben etwas spezifisch räumlich Distanzierendes in sich trägt. Ich muss also weiter suchen.

# Generiere Model für Parisisi 1
markov_model_1 = build_markov_model(parisisi_material, 2)
from itertools import islice
def take(n, iterable):
    return list(islice(iterable, n))
print(take(20, markov_model_1.items()))
[('Es geht', ['um', 'hier']), ('geht um', ['kosmogramme']), ('um kosmogramme', ['und']), ('kosmogramme und', ['um']), ('und um', ['wettbewerb.']), ('um wettbewerb.', ['Die']), ('wettbewerb. Die', ['Berechnungen']), ('Die Berechnungen', ['der']), ('Berechnungen der', ['Kosmogramme']), ('der Kosmogramme', ['vermeiden']), ('Kosmogramme vermeiden', ['die']), ('vermeiden die', ['Kritik']), ('die Kritik', ['an']), ('Kritik an', ['patriarchalem']), ('an patriarchalem', ['Kolonialismus.']), ('patriarchalem Kolonialismus.', ['Der']), ('Kolonialismus. Der', ['Wettbewerb']), ('Der Wettbewerb', ['zwischen']), ('Wettbewerb zwischen', ['diesen']), ('zwischen diesen', ['Kosmogrammen.'])]
# Generiere Text für Parisisi 1
state_size = 2
min_length = 40
text_markov_model_1 = generate_text(markov_model_1, state_size, min_length)
Parisisi 1:
Das Ursprüngliche Kosmogramm der Technizität: Der Mensch, der aus einem Wort lernt.
Dieses klassische Denken über die Technizität des Menschen darin besteht, das man aus etwas lernt und auf etwas hin lernt.
Wir erhalten dann eine Information ohne zu wissen wo sie überhaupt herkommt.
Vor diesem Hintergrund muss das ganze weiterverfolgt werden um eine genaue Kopie seiner selbst.
 

Link zu Material

 

Lesen sucht das Gegenwärtige

Im Englischen bedeutet Reading als substantiviertes Verb nicht nur Lesen, sondern auch Lesart bzw. das Interpretierte. Reading kann also zweierlei sein: Akt oder Ergebnis.

_reading_               <---------->      _reading_ 
_lesen_                 <---------->      _lesart_  

Mit Lesart (Reading), ist im weiteren Verlauf dieser Arbeit die rezeptionszentrierte Vorstellung gemeint, in der Texten erst durch Lesarten Bedeutung verliehen wird. Bei solchen Leseprozessen sind die Interpretationen der Leser:innen entscheidend. Der Text wird als ein System von Leerstellen verstanden, welches erst beim Lesen vervollständigt wird. Diese Vervollständigungen werden durch sogenannte Interpretationsakte erzeugt. Zum Beispiel kann ein Märchen als Text existieren, aber ein Kind, das diesen Text liest, kann ihn als beängstigend lesen, während ein Erwachsener ihn charmant und nostalgisch lesen kann. Aus dieser Perspektive wird jeder Text (Bild, Partitur usw.) durch Lesart-Bildung (Acts of Interpretation) immer wieder neu produziert, und damit aktualisiert [Dru21]. Laut Johanna Drucker werden allerdings nicht nur die Texte durch die Leser:innen neu produziert, sondern auch die Leser:innen durch den Text. Texte und Leser:innen stehen also in Wechselbeziehung zueinander.

In Glossa produziert Elisa Kühnl ein Reading von einer Notation tibetischer Gebetsgesänge. Sie betrachtet immer und immer wieder einige Zeilen der Partitur, bis die Notation vor ihren Augen zu flirren beginnt. Diese fast schon psychedelische Form des Lesens nimmt sie dann als Ausgangspunkt, um mehrere Seiten über phonetische Notationen von Sprechstimmen zu schreiben. [Kuh20]

# Generiere Text für Parisisi 2
state_size = 2
min_length = 40
text_markov_model_1 = generate_text(markov_model_1, state_size, min_length)
Parisisi 2:
Digitaler Naturalismus wird nicht nur gefunden im Bild von der Maschine, die sich vom Menschen fort bewegt.
Kosmogramm sieht man in der genealogie der Ethnizität.
Nehmen wir Hier wird das Denkens und das Wissen Ordnung des Tuens.
Wurde auch Kopie seiner die Gedankenwelt charakterisieren selbst.
 

Die Lesart der Partitur tibetischer Gesänge von Elisa Kühnl schreibt sich folgendermaßen: Diese Notation ist fern der Notation abendländischer Musik. Sie scheint poetisch, luftiger, als hätte man versucht, ein visuelles Ebenbild für Stimme und Atem zu finden? [Kuh20] Ich lese in ihren Feststellungen noch einen weiteren Aspekt von Enfernung:

Die Entfernung zu vergangenen Zeiten: Schreiben erfolgt demnach in spezifischen kulturellen Domänen. Kulturelle Domänen verändern sich jedoch in der Zeit. So verändern sich auch deren Schreibpraktiken. Vielleicht können wir daraus folgern, dass alte Schriftstücke (vor allem solche, zu dessen aktualisierten Lesarten man keinen Zugang hat) eine große Distanz zum Leser aufweisen,eine zeitliche Entfernung zu einer Kultur, die es so nicht mehr gibt. Eine Distanz, die ein Staunen evoziert und so vielleicht eher poetische Lesarten fördert. Wie liest man eine dreitausend Jahre alte Quittung aus Babylon? Als Gedicht? Nicht erst Ann-James Chatons Listen-Gedichte zeigen, dass man auch einen Kassenbon zum Gedicht readen kann.

Florian Zeh formuliert es etwas anders: ”Der Mensch, das zeitüberbrückende Tier, welches Nachrichten über große Zeiträume hinweg schickt”. [Zeh19]

Ein Text kann sich nicht wehren. Ein Text beantwortet keine Rückfragen. Einen Text kann man nicht fragen. Ein Text fragt nach einer Antwort oder – rezeptionszentriert ausgedrückt – nach seinen Vervollständigungen, kann selbst aber dabei keine Rückfragen beantworten.

Suche ich das Ferne im Lesen allein im Alterungsprozess, müsste ich einräumen, dass jedes Lesen Fernlesen ist. Denn jedes Schriftstück wird irgendwann ein altes Schriftstück gewesen sein. Dann hätte nicht erst das gealterte Schriftstück etwas spezifisch zeitlich Fernes in sich. Ich muss also weiter suchen.

Kommen wir dazu noch einmal auf Elisas Reading zurück. Indem sie in der tibetischen Partitur die Suche nach einem visuellen Ebenbild für Stimme und Atem liest, zeigt sie auf einen wichtigen Vorgang. Schreiben erfolgt innerhalb spezifischer Zeichensysteme. Sind beispielsweise ikonische Zeichen oder symbolische Zeichen näher oder ferner am Lesenden? Was passiert nach der Übersetzung vom einen ins andere Zeichensystem?

# Generiere Text für Parisisi 3
state_size = 2
min_length = 40
text_markov_model_1 = generate_text(markov_model_1, state_size, min_length)
Parisisi 3:
Das cellulare das Wurde auch sich Systeme, Regierungssysteme Mutations-, Reproduktionsprinzipien
Weise Fäden, die Cellular-Automaten entwickelt
Mensch, der Atomogram
Kontinuum zwischen Und da die Denken und Who are zu Diese werden ersetzt
 

Fernschreiben als Übersetzung

Als ich im April 2021 die Gruppe meiner Mitstudierenden innerhalb des Kolloquiums frage, was Distant Writing für sie bedeute, und die Mitstudierenden darum bitte Ihre Annotationen in ein öffentliches Etherpad einzutragen, verfasst Dennis Scheiba folgenden Eintrag:

import random

def text_schrotflinte(text, schüsse=10):
    b = bytearray(text, 'utf-8')
    for schuss in range(schüsse):
        index = random.randint(0, len(b)-1)
        b[index] = max(b[index] + random.randint(-100, 100), 0)
    return str(b, 'utf-8', errors='ignore')

        
text = '''"Im Anfang schuf Gott Himmel und Erde; die Erde aber war wüst und wirr, Finsternis lag über der Urflut und Gottes Geist schwebte über dem Wasser. Gott sprach: Es werde Licht. Und es wurde Licht."'''

text_schrotflinte(text, schüsse=42)
'"Im Afang{dchXf Gott pimel und Erde; die Er?e a*r war wüs7 un|Yw!rr,\x00Finstejis lg\x00über de=Urflut und Got\x1eqs Ge/st\x00schebte übe- de< Wass)r@ G0tt spr\x00ch:   were\x00Licht. \x00nd $s wuGde Li=ht."'

Auf die metaphorische Entfernungskomponente – Schreiben mit einer Schrotflinte (einer Fernwaffe) –, sowie auf die Zufallskomponente soll an dieser Stelle nicht weiter eingegangen werden. Viel interessanter ist hier der Fingerzeig auf Übersetzung. Dennis Scheiba Spielt in diesem Beispiel mit der Übersetzung zwischen String- und Bytecode. Die Distanz zum Text-Output der Schrotflinten-Funktion wird durch eine Übersetzung, oder besser: deren Scheitern erzeugt. Man ist einer Text-Zeile ausgesetzt derer man sich erneut nähern muss.

Vielleicht könnte eine Art von Distant Writing in der Übersetzung zwischen Zeichensystemen gesucht werden. Im Zuge der Übersetzung gilt es laut Walter Benjamin ein synthetisches Drittes, ein meta-sprachliches Objekt, der wesentlichen, zu übersetzenden Merkmale eines betrachteten Objekts zu kreieren, welches jedoch selbst wieder außerhalb beider Sprachen sich befindet. Fern-Schreiben um über die Voraussetzungen von Sprache nachzudenken.

Mit dem Teleskop lesen

Close reading ist eine Vorgehensweise, mit welcher einzelne Texte, insbesondere kleinere Teilmengen genauer betrachtet werden. Dabei geht es um eine detailgetreue Analyse, und sorgfältige Interpretation eines Textes [Mat13]. Ich selbst erinnere mich an ein Seminar, in dem wir uns mehrere Stunden lang mit einer einzigen Textzeile von Wittgenstein beschäftigt haben, um diese immer und immer wieder laut vorzulesen und darüber zu diskutieren. Die Zeile lautete: “Die Philosophie ist ein Kampf gegen die Verhexung unseres Verstandes durch die Mittel unserer Sprache”. Hätten wir in dem Fall unsere Gespräche notiert, könnte man hier wortwörtlich davon sprechen, dass Lesen (die Lesart) eine Form von Schreiben (im Sinne von Vervollständigen) sein kann.

Kommen wir dazu noch einmal zum Prozess des Close Reading. Wie wird so eine Lesart produziert?

Wenn man es prozessual stark vereinfacht betrachtet, dann wird Lesen zu Schreiben oder, anders ausgedrückt, wird eine materialisierte Lesart durch folgenden zyklischen (iterativen, wiederholten) Dreischritt erzeugt.

Ein wichtiger Nähe/Distanz-Parameter scheint also in der Form der Annoation zu stecken.

Close Reading     Distant Reading    

- Text(-Ausschnitt(e)) betrachten.
- Annotieren. (Verbindungen zeichnen, Notizen machen) ↺
- Was damit machen (Vervollständigen, Text produzieren)

- Text(e)(-Ausschnitt(e)) betrachten/einlesen.
- Annotieren. (Zählen, Katrieren, Vektorisieren, Visualisieren, statistisch klassifizieren) ↺
- Was damit machen (Vervollständigen, Text produzieren)

Mit dem umgedrehten Teleskop lesen

In seinem Buch “Graphs, Maps, Trees” [Mor05] schreibt Franco Moretti über das Konzept des Distant Reading. Moretti schlägt vor, zusätzlich zur Praxis des Close Reading auch das Zählen, das Kartieren, das Visualisieren und das Erstellen von Graphen als Praktiken der Textanalyse innerhalb der Literaturwissenschaft zu etablieren. Morettis Entwurf legt eine Metapher nahe: Der Leseprozess als Blick durch eine Linse, nach Aspekt oder Perspektive durch ein Mikro- oder Makroobjektiv. In den bekannteren Beispielen schaut man mit einem umgedrehten Teleskop auf den Text. ‘Distanz ist kein Hindernis, sondern eine spezifische Form des Wissens: weniger Elemente, dafür ein schärferes Gespür für deren Gesamtzusammenhang.’ schreibt Moretti “Graphs, Maps and Trees” [Mor05].

Was würde man sehen, wenn man Moretti’s Buch überfliegt? Ich mache also eine Frequenzanalyse – in diesem Fall meistgenutzte – aller vorkommenden Adjektive in Python, und lasse die Ergebnisse zufällig in einer Wordcloud anordnen. Ich nutze dafür die Python Libraries (Spacy und Wordcloud).

f=open('corpora/moretti/franco-moretti-distant-reading.txt','r')
nlp = spacy.load("en_core_web_lg")
adjectivesAll = ([ent.text for ent in nlp(raw) if ent.pos_ == 'ADJ'])
adjectivesAllDist = nltk.FreqDist(w.lower() for w in adjectives_filtered)
mostCommonAdjectives= adjectivesAllDist.most_common(200)
wc2 = WordCloud(width = 300, height = 300, 
                background_color ='white', 
                stopwords = stopwords, 
                min_font_size = 15).generate_from_frequencies(adjectivesAllDist)
f=open('corpora/moretti/franco-moretti-distant-reading.txt','r')
raw=f.read()
tokens = nltk.word_tokenize(raw)
nlp = spacy.load("en_core_web_lg")
nlp.max_length=6500000

stopwords = nltk.corpus.stopwords.words('english')
#stopwords.append([',','.',".","'", "'s", "'re", 'sound', "someone"])
stopwords.append("sound")
stopwords.append("'s")
stopwords.append("'")
stopwords.append(".")
stopwords.append(",")
stopwords.append("same")

# More Stopworrds

stopwords.append("—")
stopwords.append("'re")
stopwords.append("-")
stopwords.append(";")
stopwords.append(",")
stopwords.append("same")


tokens_filtered = []

for word in tokens:
    if word.lower() not in stopwords:
        tokens_filtered.append(word)

allWordDist = nltk.FreqDist(w.lower() for w in tokens_filtered)
mostCommon= allWordDist.most_common(60)
#print(stopwords)

adjectivesAll = ([ent.text for ent in nlp(raw) if ent.pos_ == 'ADJ'])

adjectives_filtered = []

for word in adjectivesAll:
    if word.lower() not in stopwords:
        adjectives_filtered.append(word)


adjectivesAllDist = nltk.FreqDist(w.lower() for w in adjectives_filtered)
mostCommonAdjectives= adjectivesAllDist.most_common(200)


def grey_color_func(word, font_size, position, orientation, random_state=None,
                    **kwargs):
    return "hsl(0, 0%%, %d%%)" % random.randint(30, 60)


wc2 = WordCloud(width = 300, height = 300, 
                background_color ='white', 
                stopwords = stopwords, 
                min_font_size = 15).generate_from_frequencies(adjectivesAllDist)
plt.figure(figsize = (6, 6), facecolor = None)
plt.imshow(wc2.recolor(color_func=grey_color_func, random_state=2),
           interpolation="bilinear")
plt.axis("off")
plt.show()
_images/distant-writing_32_0.png

Vom Ergebnis der Textumformung, der Wordcloud, kann ich nicht mehr auf den Ausgangstext schließen. Ausgangstext und Wordcloud sind über eine nicht-bijektive Funktion verbunden, nicht rückführbar. In diesem Beispiel haben wir es offenbar mit einer starken Reduktion zu tun: Von 46699 Wörtern im Ausgangstext sind nur noch 21 geblieben. Wir sehen eine Karte von statistischen Häufungen vor uns. Eine linguistische Analyse. Ein Problem entsteht, wenn ich versuche diese Visualisierung, diesen Graphen, zurückzuführen auf seinen Analysegegenstand, wenn ich den Inhalt der Wordcloud in einen Satz verwandele, welcher in natürlicher Sprache funktioniert, wie beispielsweise: “First New Great Modern European Different Distant Literary”. Dann würde ich zu der Hypothese kommen, dass das Distant Reading vom Distant Reading eurozentristisch ist, was behaupten würde, dass es ironisch sei: Moretti hält mit seinen ikonoklastischen Wortwolken und Graphen ein Plädoyer für die postdisziplinäre Hochschule, produziert im Zuge dessen aber selbst wieder kolonialistische Texte. Wäre das ein Misreading, ein falsches Close Reading eines Distant Writings, provoziert von einer Karte gezählter Wörter. Oder kann man tatsächlich von gezählten Adjektiven eines einzigen Buches auf weltanschauliche Tendenzen schließen? Was müsste man dafür tun? Dafür müsste ich wahrscheinlich noch viele andere Vergleiche, Annotationen und, ja, noch einige Close Readings erzeugen. Diese Frage ausführlich zu beantworten zu beantworten, übersteigt meine Fähigkeiten und den Umfang dieser Arbeit. Ich stelle lediglich fest: Diese Form der Darstellung regt dazu an, Hypothesen aufzustellen.

Am Ende haben diese Darstellungsformen viel mit der Idee von Überblick zu tun. Ich stelle mich auf einen Berg, um die Landschaft zu überblicken. Dadurch sehe ich andere Dinge, aber nicht alle. Die Distanz als Vogelperspektive, also.

Wie sind wir zu diesem Distant Reading, zu dieser Reduktion gelangt? Wie sieht der Lese-/Schreibprozess hier aus?

Wenn man das Ganze, wie oben, prozessual stark vereinfacht, dann wird Lesen zu Schreiben, oder anders ausgedrückt, wird eine materialisierte Lesart (hier ein Distant Writing anstatt eines Close Writings) durch folgenden zyklischen (iterativen, wiederholten) Dreischritt erzeugt:

def distantreading():
    while(äußerung_unfertig):
    
        - 1. Text maschinell einlesen. (Selbstständig, oder Lassen)
        - 2. Annotieren. (Zählen, Katrieren, Kategorisieren, Vergleichen, statistisch klassifizieren)
        - 3. Mach was damit (Darüber reden, Vervollständigen, Drucken)
    
        break 
  File "<ipython-input-32-60c4fef25ad7>", line 4
    - 1. Text maschinell einlesen. (Selbstständig, oder Lassen)
            ^
SyntaxError: invalid syntax

Close- und Distantreading unterscheiden sich in:

  1. Ihren Leseprozessen

  2. In der Art der Annotationen

  3. Der Art und vor allem in der Reihenfolge der Arbeitsschritte

Annotation

Annotation verdient eine nähere Betrachtung. Prinzipiell ist Annotation eine schichtweise Ergänzung von analytischen Anmerkungen. Dies geschieht - abhängig von Medium und Kontext - über Formen von Metatext. Mit Hilfe von Annotationen kann man benennen, klassifizieren, organisieren und indizieren. Durch die Ergänzung von Schichten werden Möglichkeitsräume für neue Bedeutungszusammenhänge geschaffen. Annotation folgt aus der wiederholten Untersuchung eines Dokumentes, in diesem Fall aus der Untersuchung von Sammlungen schriftlicher Äußerungen. [Bad15]

Im Umfeld des Distant Reading werden vor allem folgende Annotationsprinzipen besprochen:

Ebene

Annotation

Morphosyntax

Wortart (Part-Of-Speech)

Morphologie

Flexionsmorphologie, Grundform, Lemma

Syntax

Konstituenten oder Dependenzen (Bäume, Hierarchien), Chunking, oft mit syntaktischen Funktionen; andere strukturelle Organisationsformen: topologische Felder

Semantik

Eigennamen, Lesarten (Word Senses z.B. WordNet Indizes), Thematische Rahmen (Frames)

Pragmatik

Koreferenz, Informationsstruktur, Diskursstruktur

Weitere

Textstruktur, Orthographie, Fehlerannotation, Phonetische Merkmale, Sprachbegleitende Merkmale

Übersicht über mögliche Annotationsebenen innerhalb von Textkorpora [Zin10]

Wichtig zu erwähnen –in Bezug auf das obige Beispiel des Distant Reading –, wäre noch, dass bei der vorliegenden Vogelperspektive vor allem eine Art der Klassifikation maßgeblich am für den Schreibprozess ist: Die statistische. Wir sehen welche Adjektive besonders Häufig vorkommen. Welche Worte mit hoher Wahrscheinlichkeit wieder auftreten.

Grundsätzlich unterstützt eine Annotation – ob nun innerhalb des Distant Reading oder innerhalb des Close Reading – eine analytische Haltung zu dem, wozu notiert wird, oder bringt sie damit möglicherweise erst hervor, indem ein Teil eines Textes ausgewählt und etwas darüber mitgeteilt wird. Wie man im Python-Code des Beispiels sieht, ist der Schlüssel zu dieser Art von Annotation ein Ankoppeln, Vergleichen, In-Beziehung-Setzen des Ausgangstextes zu anderen, annotierten Texten. Der Text wird zuerst in Beziehung gesetzt zu einer Liste von Stoppwörtern und dann zu einem riesigen Wörterbuch der englischen Sprache, welcher das POS (Point-of-Speech)-Tagging der Adjektive ermöglicht. So gesehen haben wir es in diesem kleinen Beispiel schon mit einer weitaus größeren Textmenge zu tun, als lediglich dem eingelesenen Buch. All diese Textmengen habe ich als Leser natürlich gar nicht linear gelesen. Der ganze Prozess, der ganze Distant Reading Process hat also nicht mit einem Einlesen, oder einem maschinellen Lesen begonnen, sondern vielmehr mit einer Annotation. Ich kann unmöglich all die Textmengen die allein schon für das kleine Beispiel von oben nötig waren linear gelesen haben. Das Material für computergestützte Annotationsprozesse sind maschinell eingelesene Texte. Delinearisierte Texte. Solche Texte kann ich unmöglich linear lesen. Ich muss mit einer expliziten Entscheidung für mögliche Leserichtungen oder Sprünge beginnen. Auf den ersten Blick deutet sich hier ein trügerisches Größenverhältnis an. Ich habe den Eindruck als würde ich das Material in seiner Gänze erkennen können, nur weil es auf kleinen Datenträgern gespeichert werden kann.

Schreiben aus Zufall: statistische Sprachmodelle

Unigram Sprachmodell

Ein historisches Beispiel für ein einfaches Sprachmodell, ein “Unigram Language Model”, ist die Anleitung zum Text-Cut-Up.

Es wird geschrieben indem Schnipsel aus einem Beutel voller aus Zeitungen ausgeschnittener Wörter ausgewählt werden. Jedes Token im Beutel hat die gleiche Wahrscheinlichkeit ausgewählt zu werden. [Tza78]

Ich implementiere das Unigram-Sprachmodell hier in Python als Sonderfall einer Markov-Kette. Das heißt eine Markov Kette in der die Übergangswahrscheinlichkeit von Zustand zu Zustand die gleiche ist.

In diesem Beispiel gibt es also sieben Zustände, die mit gleicher Wahrscheinlichkeit auf einander folgen können.

zeitung_cut_up = {
    'schnipsel1': ['schnipsel1', 'schnipsel2', 'schnipsel3', 'schnipsel4', 'schnipsel5', 'schnipsel6', 'schnipsel7'],
    'schnipsel2': ['schnipsel1', 'schnipsel2', 'schnipsel3', 'schnipsel4', 'schnipsel5', 'schnipsel6', 'schnipsel7'],
    'schnipsel3': ['schnipsel1', 'schnipsel2', 'schnipsel3', 'schnipsel4', 'schnipsel5', 'schnipsel6', 'schnipsel7'],
    'schnipsel4': ['schnipsel1', 'schnipsel2', 'schnipsel3', 'schnipsel4', 'schnipsel5', 'schnipsel6', 'schnipsel7'],
    'schnipsel5': ['schnipsel1', 'schnipsel2', 'schnipsel3', 'schnipsel4', 'schnipsel5', 'schnipsel6', 'schnipsel7'],
    'schnipsel6': ['schnipsel1', 'schnipsel2', 'schnipsel3', 'schnipsel4', 'schnipsel5', 'schnipsel6', 'schnipsel7'],
    'schnipsel7': ['schnipsel1', 'schnipsel2', 'schnipsel3', 'schnipsel4', 'schnipsel5', 'schnipsel6', 'schnipsel7']
}

zeitung_cut_up_keys = []

for key in zeitung_cut_up.keys():
  zeitung_cut_up_keys.append(key)

cut_up = [random.choice(zeitung_cut_up_keys)] 

for i in range(7):
    cut_up.append(random.choice(zeitung_cut_up[cut_up[i]]))   

for s in cut_up: 
    print(s)
schnipsel2
schnipsel2
schnipsel1
schnipsel1
schnipsel4
schnipsel4
schnipsel6
schnipsel1

Damit daraus ein Cut-Up werden kann, benötige ich noch Textmaterial.

Textmaterial für Parisisi.

Ich nutze einen Vortrag von Luciana Parisi aus dem Haus der Kulturen der Welt im Jahr 2019. Übersetzt von einer unbekannten Simultanübersetzerin und von mir transkribiert. [Luc19]

p1 = open('corpora/parisisi.txt','r')
parisisi_material = p1.read()
print(parisisi_material[:800]) # Die ersten 800 Zeichen des Textes
print('...')
Es geht um kosmogramme und um wettbewerb. Die Berechnungen der Kosmogramme vermeiden die Kritik an patriarchalem Kolonialismus. Der Wettbewerb zwischen diesen Kosmogrammen. Diese Technizität steckt im Kern der Ontologien des Menschlichen. Ich möchte das erklären durch eine Apothese im Zusammenhang mit Maschinellem Denken. Man muss zunächst mit dem Bankwesen anfangen, einer ursprünglichen Technizität die wir heutzutage überall finden.
Bankwesen und cellulare Automaten. Das erste Kosmogramm: ein cellularer Automat. Und dieses Kosmogramm bezieht sich auf die universelle Turingmaschine. Wir müssen uns damit auseinandersetzen was hier mitschwingt, in diesem digitalen Naturalismus. Cellulare Automaten wurden 1951 von John Newman entwickelt. Ihm ging es damals um eine genaue Kopie seiner selbst. 
...

Distant Reading als Distant Writing

Ein anderes historisches Beispiel des Unigram Sprachmodells: Frequenzanalyse

N-Gram Sprachmodell

Markov Kette(n)

Im folgenden Beispiel ein weiteres Beispiel für ein Language Model: Markov-Kette(n).

def build_markov_model(source, state_size): # Erwartet einen String und eine Anzahl von Zuständen.
    
    source = source.split()
    model = {}
    for i in range(state_size, len(source)):
        current_word = source[i]
        previous_words = ' '.join(source[i-state_size:i])
        if previous_words in model:
            model[previous_words].append(current_word)
        else:
            model[previous_words] = [current_word]

    return model

Auch wenn wir diese Funktion ausführen erhalten ein Dictionary

markov_model_1 = build_markov_model(parisisi_material, 2)
from itertools import islice
def take(n, iterable):
    return list(islice(iterable, n))
print(take(20, markov_model_1.items()))
[('Es geht', ['um', 'hier']), ('geht um', ['kosmogramme']), ('um kosmogramme', ['und']), ('kosmogramme und', ['um']), ('und um', ['wettbewerb.']), ('um wettbewerb.', ['Die']), ('wettbewerb. Die', ['Berechnungen']), ('Die Berechnungen', ['der']), ('Berechnungen der', ['Kosmogramme']), ('der Kosmogramme', ['vermeiden']), ('Kosmogramme vermeiden', ['die']), ('vermeiden die', ['Kritik']), ('die Kritik', ['an']), ('Kritik an', ['patriarchalem']), ('an patriarchalem', ['Kolonialismus.']), ('patriarchalem Kolonialismus.', ['Der']), ('Kolonialismus. Der', ['Wettbewerb']), ('Der Wettbewerb', ['zwischen']), ('Wettbewerb zwischen', ['diesen']), ('zwischen diesen', ['Kosmogrammen.'])]

Die folgende Funktion verwendet das Markov-Modell und generiert einen Text für mich. Um die gewünschte Länge zu erreichen, wird solange weiter iteriert, bis die Mindestlänge erreicht ist, und dann weiter, bis ein Token erreicht wird, der mit einem Punkt endet. Um einen Start-Zustand zu finden, wählen wir einen zufälligen Zustand mit zwei Wörtern, bei dem das erste Zeichen ein Großbuchstabe ist.

def generate_text(model, state_size, min_length):
    
    def get_new_starter():
        return random.choice([s.split(' ') for s in model.keys() if s[0].isupper()])
    text = get_new_starter()

    i = state_size
    while True:
        key = ' '.join(text[i-state_size:i])
        if key not in model:
            text += get_new_starter()
            i += 1
            continue

        next_word = random.choice(model[key])
        text.append(next_word)
        i += 1
        if i > min_length and text[-1][-1] == '.':
            break
    return ' '.join(text)
state_size = 2
min_length = 20
text_markov_model_1 = generate_text(markov_model_1, state_size, min_length)
print(text_markov_model_1)
Analogie zwischen Mensch und Maschine. Eine kapitalistische, patriarchalische und kolonialistische Abstraktion: Maschinen werden als Sklaven gesehen, die sich vom Menschen fort bewegt.

Wie es aussieht wurde das Korrigieren, das Komplettieren (sein-) gelassen. Nicht ganz. Den Qellcode des Programms könnte man durchaus korrigieren. Nicht aber den genauen Output. Dieser wird sowohl durch die stochastischen Eigenschaften des Language Models geformt als auch durch das Textmaterial (Corpus). Ist Fernschreiben also schreiben ohne Komplettierung, Korrektur, Editieren? “Komplettieren (Weg-)Lassen”?

Fernschreiben kann das loslassen von Kontrolle bedeuten. Ein Zwischenschritt. [Baj18]

Hannes Bajohr nennt den Output von Text-Automaten “Halbzeug”. Als Halbzeug wird im Allgemeinen Vormaterial bezeichnet, also vorgefertigtes Rohmaterial und Werkstücke oder Halbfabrikate der einfachsten Form. Sie bestehen in der Regel aus einem einzelnen Material, welches lediglich in eine grundlegende geometrische Form gebracht wurde.

–>> BAUSTELLE: Hier wird noch weiter über die Distanz zum Text als Material geschrieben <<–

Distant Writing als Black Box, Schreiben lassen mit 2-Layer neuronalem Netz.?

–>>BAUSTELLE:<<–

Bleibe ich bei Markov-Ketten, oder mache ich noch ein kleines neuronales Netz. Bei beiden würde ich wenig Textmaterial. 3000 Zeichen nehmen um besser zu sehen was nach Änderungen passiert.

Freiraum

Distanzwahn

Ein weiterer Bilderstürmer, Lev Manovich, äußert im Jahr 2008 – vor dem Hintergrund anwachsender maschinell einlesbarer Textvolumina – den Traum Werkzeuge zu bauen, die es uns erlauben, die gesamte menschliche Produktion der letzten 50 000 Jahre zu betrachten, und dann herauszoomen um deren Muster zu analysieren. Er spricht von “Explorativer Datenanalyse”. Man solle erst durch die Daten surfen und dann erst erst eine Hypothese bilden. Um seine Hypothese danach statistisch zu testen. [Man08]

Eie Hypothese soll sich also von selbst zeigen. Aus den Daten.

Möglicherweise hätte Reinald Götz das so beschrieben:

Distant-Reader, also Personen, die distant readen, sehen das ja eigentlich so: Sie wissen, dass an jedem Datensatz, der imaginär oder real durch die eigenen echten oder imaginären ForscherInnen-Hände geht, auch eine hoch brisante Information hängt: Dass nämlich der Geist der Forschung an jedem gescrapten oder gesammelten, gefundenen oder gekauften Data-Set hängen bleibt und hängt, und dass man das Potenzial an sich quasi immer mit dabei hat, überall, wo man agiert mit seinem Datensatz.

Die einzige Voraussetzung dafür: Man muss irgendwie fasziniert sein von der Sammlung von Daten, von seiner seltsamen geheimnisvollen Natur. Man muss natürlich auch ein Verhältnis zu statistischen Modellen haben, aber vor allem und vielmehr ein viel grundsätzliches Vergnügen am Studium der Muster, die das in den Daten selbst gespeicherte Dateninnere in die Welt hinaus externalisieren, datenentsprechend. [Goe98]

Distanz und Korrektur Kontrolle

Dieser Schreibprozess verläuft diskontinuierlich. Die Antwort auf die Frage, ob Schriften fern sind oder nicht, scheint vom eigentlichen Schreibprozess davon abzuhängen, wie sie geschrieben wurden. Also wie sie, während sie geschrieben werden korrigiert werden, wie am Text-Material gearbeitet wird.

Der folgende Text ist ein automatisches Schreiben zu der Frage, ob ein automatisches Schreiben Nah- oder Fernschreiben wäre.

“dieser stream-of-consciousness die das was sozusagen die surrealisten automatisches schreiben wollten kultivieren wollten sagen einfach rauslassen ja ist das jetzt close writing oder distant writing weil eigentlich also so ich könnte natürlich naja also ich hänge gerade an diesem es ist ein irgendwie wichtiger punkt ich behaupte es ist eben nicht close writing wenn man einfach rauslässt sagen könnte es ist ganz nah an deinem wie auch immer an dem wie du eigentlich denkst bist nah aber nein es ist ganz weit weg weil ich erst durch den editier Prozess sein die Korrektur die Textverarbeitung näher an das Schreiben komme so schreiben ist zum großen Teil auch editieren korrigieren verarbeiten durchstreichen verrückten die verschiedenen das alles das ist das ist das ist close also das ist dann close writing sagen immer wieder durchstreichen das Ergebnis ist ein distant writing das Ergebnis ist dann ein close writing und das automatische schreiben ist extrem distant des vom vom vom vom so nee nee ich bin nur an dem. “

(Oder ein Auszug aus meinen Ecriture Automatique Übungen von 2013. Auch der Text ein Distant-Writing. Weil auf Korrektur und Komplettierung verzichtet wird. Auch dieses Beispiel hat probabilistische Züge, wie vorhersehbar: wie sehr ich versuche den surrealistischen Jargon zu treffen. Anscheinend hatte ich das automatische Schreiben zu dem Zeitpunkt nicht genug geübt.)

(“Es wollte regnen, leider ging die Bibel ins swimmingpool. Gestern schrieb der Verkehrsminister mit einem Lastwagen auf Papyrus. Große Marienkäfer koitieren mit Aalen zum Geburtstag ohne dabei rot an Gelb zu duschen. Unglaublich aber ungerecht weil Violett ist schon sein Geburtszeiten Impotent. Geschichten haben oft Lenin als Erzähler. Meine Uroma kenne ich nicht. Sonnenstrahlen habe ich lang schon geliebt. Doch an dem schlimmsten Tisch stank eine Dose. Es musste wieder alle um himmelswillen sich übergeben. Warum tat sie das? Manchmal glaube ich an Saturn.”)

Während ich diese Zeile schreibe korrigiere editiere ich sie. Es ist die Korrektur laufende Änderung, der Editier-Prozess, welcher mir mein Geschriebenes näher bringt. Die Textbearbeitung eben. Closewriting könnte etwas sein eine Art ein Sreibprozess sein, welcher viele der laufenden iterativen manuellen Korrektur sein. ||: Aufschreiben -> Streichen/Ändern :|| Das, was entsteht, wenn ich einfach drauf los schreibe, ist zunächst sehr distant, weit entfernt. Erst im iterativen, zyklischen Überarbeiten nähere ich mich meinem Geschriebenen an. Ich komplettiere auf diese Art und Weise selbst meine Absätze, komplettiere manuell. Eine manuelle Änderungshistorie entsteht, in diesem Fall eigentlich implizit. (Explizit gemacht durch code-highlighting).

Bibliographie

Bad15

Jens Badura. Künstlerische Forschung. Ein Handbuch. Diaphanes, 2015.

Baj18

Hannes Bajohr. Halbzeug. Suhrkamp, 2018.

Dru21

Johanna Drucker. Visualization and Interpretation, Humanistic Approaches to Display. MIT Press, 2021.

Eym13

Ulrich Eymann. Das sokratische Gespräch – eine moderne Form des Unterrichts? Zeitschrift Pädagogik Leben, 2013.

Goe98

Reinald Goetz. Rave. Suhrkamp, 1998.

Hor20

William Horton. A brief history of jupyter notebook. 2020. URL: https://ep2020.europython.eu/media/conference/slides/7UBMYed-a-brief-history-of-jupyter-notebooks.pdf.

Jan15

S. Jänicke. On Close and Distant Reading in Digital Humanities: A Survey and Future Challenges. Göttingen Centre for Digital Humanities, 2015.

Klu10

Alexander Kluge. Die auswanderung des denkens - im gespräch mit frank schirrmacher. 2010. URL: https://www.dctp.tv/filme/schirrmacher-overmind-auswanderung-des-denkens?thema=dld-dctp.

Kuh20(1,2)

Elisa Kühnl. Glossa - Die Stimme als Instrument gegebener Umstände. Masterthesis, IMM Düsseldorf, 2020.

Luc19

Parisi Luciana. Who are we to ask. 2019. URL: https://www.hkw.de/de/app/mediathek/audio/70549.

Luh98

Niklas Luhmann. Die Gesellschaft der Gesellschaft. Suhrkamp Verlag, 1998.

Man08

Lev Manovich. Software studies and cultural analytics. 2008. URL: https://www.youtube.com/watch?v=HQ70CgpRvC4.

Mat13

Jockers Matthew. Macroanalysis. Digital Methods and Literary History. Urbana, 2013.

Mor05(1,2)

Franco Moretti. Graphs, Maps, Trees: Abstract Models for a Literary History. Verso, 2005.

Per74

George Perec. Species of Spaces and Other Pieces. Penguin Classics, 1974.

Rob06

Steven Roberts. Distant writing – a history of the telegraph companies in britain. 2006. URL: https://www.webarchive.org.uk/wayback/en/archive/20150107230812/http://distantwriting.co.uk/.

Roh21

Julian Rohrhuber. Überlegungen zu objektfunktionen in kunst und wissenschaft. 2021. URL: https://etherpad.musikinformatik.net/p/FunktionenUndObjekte.

Tza78

Tristan Tzara. Sieben Dada Manifeste. Edition Nautilus, 1978.

Zeh19

Florian Zeh. Nichts als Etwas. Masterthesis, IMM Düsseldorf, 2019.

Zin10

Heike Zinsmeister. Korpuslinguistik, Eine Einführung. Narr Francke Attempo Verlag, 2010.