Mögliche Nächste Schritte

Relations:

  • Direkte Rede als Beziehung? Dialog zwischen zwei Personen sichtbar machen

Temporäre Character

  • temporäre Character auch dann erzeugen, wenn nur Personalpronomen vorkommen, es aber nur eine passende Person in der gesamten Geschichte gibt — ERLEDIGT
  • Beachten der direkten Rede: KEINEN temporären Erzähler erzeugen, wenn „I“ in einer direkten Rede vorkommt — ERLEDIGT

Conditions:

  • Zustände der Person, Aussagen über sich selbst; würde dann keine Relation ergeben, sondern einen Zustand innerhalb der eigenen Person

Actions:

  • herausfinden von Handlungen durch betrachten der Verben in den Conditions?
Advertisements
Mögliche Nächste Schritte

Relations – part II

Updates:

  • ähnlich wie mit den POS-Tags, habe ich auch den „gechunkedten“ Corpus ausgelagert; mit der zuvor definierten Grammar-rule für relations lauft jetzt ein Script durch, „chunket“ die Wörter wenn zutreffend in relations-Gruppen und speichert alles in eigene Files
  • diese Files werden dann vom Haupt-Script ausgelesen und für jeden temporären Character werden die im jeweiligen Paragraphen vorkommenden „relation-chunks“ ausgelesen und auf Richtigkeit geprüft
  • Richtigkeit bedeutet: ja, dieser temporäre Character kommt in dieser Relation vor UND er ist die erste Person dieser Relation (um Doppelungen mit Erzähler zu vermeiden) UND die zweite Person ist eine andere (z.B. „I taught myself …“ gilt nicht als Beziehung)
  • es wird dann eine Instanz der Klasse Relation erzeugt, die folgende Attribute hat: layerID, taleID, fromID, toID, relationTokens, relationString
  • bzw. ist „Relation“ die Superklasse der Subklassen Relation_Narrator und Relation_Figure; je nachdem, von welchem temporären Character die Relation ausgeht, wird entweder eine Instanz der einen oder der anderen Klasse erzeugt

Dadurch können folgende Outputs generiert werden:

Screen Shot 2015-09-30 at 9.04.12 PM Screen Shot 2015-09-30 at 9.04.21 PM

Issues:

Der momentane Stand erwischt noch nicht alle Relations und nicht alle die er erwischt sind „sauber“. Trotzdem werde ich mit dem Stand erstmal weiter arbeiten, und nur für eventuelle spätere Verbesserungen die Issues hier auflisten:

  • wenn mehrere Figuren namentlich im Absatz vorkommen, ist es nicht möglich, eindeutige Zuweisungen bei „her“ / „she“ etc. zu machen. Ein Lösungsansatz wäre, nach dem davor zuletzt genannten Namen zu suchen
  • wenn in dem gesamten Absatz kein eindeutiger Name vorkommt, gibt es momentan keine Figur-zu-Erzähler-Beziehung (da von vornherein die temporäre Figur gar nicht erzeugt wurde *); in umgekehrter Richtung (Erzähler-zu-Figur) gibt es sie nur dann, wenn die Figur eindeutig zuweisbar ist (z.B. kommt in der Beziehung „her“ vor und es gibt nur eine weibliche Figur in der ganzen Geschichte, dann geht das Script davon aus, dass es die sein muss);
  • Personalpronomen in der Mehrzahl („they, „we“ etc) werden gänzlich außer Acht gelassen
  • „it“ wird gänzlich außer Acht gelassen, da dies meistens nicht auf eine Relation hindeutet („It dawned on me“, „I realised it“ etc)

*) man müsste das Script zumindest so weit umschreiben, dass, wenn es nur eine weibliche Person gibt, ein temporärer Charakter erzeugt wird wenn weibliche Personalpronomen in dem Absatz vorkommen (und vice versa mit männlichen natürlich).

Relations – part II

Distant Reading

„We need distant reading, Franco Moretti argues, because its opposite, close reading, can’t uncover the true scope and nature of literature.“

Moretti ist der Meinung, Distant Reading muss Close Reading ersetzen, weil die Datenmengen zu groß werden und die Menge an Daten, die ein einzelner Mensch lesen kann, lächerlich ist im Vergleich zur Menge an Daten, die er eigentlich lesen müsste.

Andererseits ist Moretti aber daran gescheitert, reines „Distant Reading“ zu betreiben und daraus wirkliche Erkenntnisse zu gewinnen. Vielleicht liegt das daran, dass man Distant Reading doch mit Close Reading kombinieren muss, um einen wirklichen Einblick zu bekommen? Oder daran, dass Moretti seine Visualisierungen manuell erzeugt hat, und dadurch zu sehr von den eigenen Erwartungen getrieben war, als sich vom System überraschen zu lassen?

Und würde die „Visual Poe“ Visualisierung nicht beides anders machen? Da man durch die einzelnen Paragraphen „sliden“ kann, ist es einem auch möglich, einzelne Paragraphen genauer zu analysieren – vielleicht reichen Sample-Beispiele in Kombination mit dem Gesamtbild. Und auch das Automatisierte würde hier ganz anders ins Spiel kommen, da die Visualisierung eben von einem Programm und nicht händisch erzeugt wird.

Distant Reading

Zusätzliches Script zum Erstellen der POS-Tags

Da es 60-90 Sekunden dauert, alle Wörter aller Texte mit dem passenden Part-of-Speech-Tag zu taggen (noun, verb, etc.), war ich gezwungen, mich näher mit Corpora zu befassen und hab festgestellt, dass man mit der NLTK Library ganz einfach eigene Corpora laden kann.

Dafür braucht man nur .pos-Files mit den getaggten Wörtern. Daher gibt es jetzt ein weiteres Script, das die Text-Files durchgeht und für jedes Wort den dazugehörigen POS-Tag sucht und dann je Text ein pos-File schreibt. Dieses Script braucht man also nur laufen lassen, wenn sich etwas in den Textfiles ändert.

Die pos-Files werden im eigentlichen Script als TaggedCorpus geladen und können von überall aus zur Analyse verwendet werden.

Die Ladezeit des Haupt-Scripts reduziert sich dadurch wieder auf 0.5s

Zusätzliches Script zum Erstellen der POS-Tags

Extract Relations between 2 characters (first attempts)

Coming up with a grammar rule that finds relations:

grammar = r“““
DESC: {<PRP\$>+<JJ|VBD|VBN>?<NN>+}
REL: {<PRP>+<VBD|VBP|RB|VBN>*<IN>?<TO>?<PRP|PRP\$>+}
„““

Screen Shot 2015-09-26 at 12.07.12 PM

Screen Shot 2015-09-26 at 12.03.57 PM

second attempt, a little more possibilities:

grammar = r“““
REL: {<PRP>+<VBD|VBP|RB|VBN>+<IN>?<TO>?<PRP|PRP\$>+<RB>?<NN|NNS>?}
REL: {<PRP|NNP>+<CC>?<PRP|NNP>?<VB.|RB><NN|NNS>}
„““

Screen Shot 2015-09-26 at 1.27.39 PM

Screen Shot 2015-09-26 at 1.30.02 PM

third attempt; covers a lot of cases, so I will go with this one for now and may refine it later:

grammar = r“““
REL: {<PRP>+<VB.|RB|VBN>+<IN>?<TO>?<PRP|PRP\$|NNP>+<VB.>*<RB|IN|DT>*<VB.|JJ>*<NN|NNS|PRP|PRP\$>?}
REL: {<PRP|NNP>+<CC><PRP|NNP>?<VB.|RB><NN|NNS>}
„““

Screen Shot 2015-09-26 at 2.23.01 PM

Screen Shot 2015-09-26 at 2.29.32 PM

Extract Relations between 2 characters (first attempts)

Python Update

successfully done:

  • scans folder with txt Files and generates tale-instance for each file
  • runs through XML and generates unique figures and narrators
  • runs through tale-instances and generates a layer for each paragraph
  • got nodebox module up and running (for visualization)

currently in progress:

  • go through each layer and generate an instance of a temporary character, if a unique character is found in this paragraph OPEN ISSUES: Ausnahmen abfangen, z.B. wenn „I“ in direkter Rede vorkommt, kann es auch eine andere Person sein und nicht der Erzähler; oder wenn nur possessiv-pronomen anstatt personalpronomen (my, her, his) — ERLEDIGT
  • for each temporary character, analyze their relations (narrator – character) — ERLEDIGT

„visualize.py“ currently displays a dot for every unique character and the narrator in the center:

Screen Shot 2015-09-22 at 10.51.11 AM

respectively all characters color-coded by gender:

Screen Shot 2015-09-22 at 3.09.36 PM

Python Update