Interaktion, Darstellung & Performance

Programmierung der Interaktion

Die letzten Tage war ich damit beschäftigt, dem Programm die Interaktion (Mouseclick -> an / aus der Charaktere) hinzuzufügen. Was darin resultierte, dass ich fast das gesamte visualize.py umgeschrieben habe. Anstatt der vielen draw-Befehle hat nun jedes Element eine Layer-Klasse. Dadurch wird es einfacher, festzustellen, über welchem Element sich die Maus befindet, und was alles abgeschalten wird wenn ein Charakter auf „aus“ gestellt wird (die Relationen sind Child-Layer ihrer jeweiligen Charaktere und werden somit auch ausgeschalten). Außerdem werden nicht mehr alle temporären Charaktere gezeichnet, sondern nur noch die 12 unique characters, die dann jeweils entsprechend umgefärbt werden.

Anpassungen der Darstellung

In der Gesamt-Übersicht werden nun die 5 dominantesten Emotionen mit Prozentangaben dargestellt – dadurch sind die Änderungen beim an/aus schalten ersichtlicher.

In der perLayer-Ansicht wird nach wie vor die erste Condition des Erzählers als Text ausgegeben mit Emotion, die auch die Mitte annimmt. Darunter werden allerdings auch die anderen Emotionen aufgelistet, die in diesem Absatz noch vorkommen.

Performance-Problem

Leider hat die Text()-Funktion in Python bzw. Pyglet ein memory leak. Da ich relativ viel Text in das Fenster schreibe, stürzt mein Programm schon nach etwa einer Minute ab. Trotz intensivem googlen und Bekannte um Lösungen fragen, habe ich bis jetzt noch keine Lösung dafür gefunden.

Screen Shot 2015-11-04 at 8.41.47 amScreen Shot 2015-11-04 at 8.22.19 am Screen Shot 2015-11-04 at 8.21.09 am

Screen Shot 2015-11-04 at 8.08.02 am Screen Shot 2015-11-04 at 8.00.08 am

Interaktion, Darstellung & Performance

Dominant Emotion

In der Gesamtübersicht wird jetzt die am Häufigsten vorkommende Emotion des Erzählers dargestellt.

Screen Shot 2015-10-28 at 10.12.06 pmScreen Shot 2015-10-28 at 10.19.25 pm

Dabei ist mir etwas wieder eingefallen, dass ich beinahe vergessen hätte: Manche Conditions und Relations haben mehr als eine Emotion. Derzeit nehme ich einfach die Erste, aber das ist nicht immer aussagekräftig. Wie gehe ich mit mehreren Emotionen um?

Dominant Emotion

Leichter verständliche Darstellung

Der Verständlichkeit und Übersichtlichkeit halber habe ich die dargestellten Informationen reduziert:

  • statt des gesamten Absatzes werden nur noch die relevanten Informationen dargestellt
  • anstatt in der Legende alle Farben darzustellen (bei 16 Farben wird der Platz ohnehin eng), schreibe ich die betreffende Farbe über die betreffende Aussage. Dadurch muss man auch nicht mehr suchen, welche Farbe welche Bedeutung hat

Weitere Forschritte:

  • die Relationen sind nach Emotion coloriert
  • die Relationen werden unter die Condition geschrieben, mit der Info von wen an wen die Relation ist

Dadurch ergibt sich die upgedatete To-Do-Liste:

  • Mittelwert der Emotionen (Conditions) berechnen
  • bei der Gesamtübersicht textlich ausgeben, was die „dominant emotion“ ist
  • anderen Charakteren Emotion zuordnen (aber keine „dominant emotion“ berechnen.. das wäre, denke ich, irreführend)
  • Charaktere klickbar machen

Screen Shot 2015-10-28 at 7.05.18 pm Screen Shot 2015-10-28 at 7.26.36 pm Screen Shot 2015-10-28 at 7.26.46 pm Screen Shot 2015-10-28 at 7.28.22 pm

Leichter verständliche Darstellung

Emotion to Color

Nachdem ich zuerst versucht hatte, die Emotionen-Liste von wefeelfine zu „stehlen“, musste ich feststellen, dass diese Zuteilung irgendwie überhaupt keinen Sinn machte. Sie definiert zwar ganze 108 verschiedene Farben, allerdings werden Begriffe wie „wonderful“ und „terrible“ der gleichen Farbe zugeordnet, was widersprüchlich ist, da diese beiden Adjektive einfach nicht der gleichen Emotion zugeordnet werden können.

Also wieder zurück zu den WNAffect Emotionen. Insgesamt findet das Script 16 verschiede Emotionen des Level 5 aus dem Emotionen-Baum. Anhand eines Color-Wheels habe ich Farben für diese 16 Emotionen definiert:

Screen Shot 2015-10-26 at 8.48.45 pm

und mich dabei im Großen und Ganzen an Erkenntnisse aus der Farbpsychologie gehalten, siehe z.B.

Screen Shot 2015-10-26 at 8.09.28 pm

Emotion to Color

Theoretische Fragestellungen

Fragen, die in der theoretischen Arbeit beantwortet werden können:

  • Wie verändert die visuelle Repräsentation die Aussage? welchen EInfluss hat sie auf den Wert für den User?
  • Welche Visualisierungsgesetze werden beachtet?
  • Warum spielt Interaktion so eine große Rolle?
  • Warum Emotionen anhand von Farben darstellen?
  • Wahl der Repräsentationen.. Relation als Linien, Charaktere als Formen, das gesamte Bild kreisförmig angeordnet..

Außerdem ist mir noch aufgefallen: schon während der Erstellung der Visualisierung habe ich Erkenntnisse aus visuellen Repräsentationen gewonnen. Die Visualisierung selbst zB hat es mir einfacher gemacht, Fehler in meiner Analysierung zu erkennen. Aber auch die Ausgabe der NLTK Trees und verschiedenste selbst geschriebene „print“ Funktionen haben geholfen, das Script überhaupt zu schreiben und zu verstehen und zu überprüfen.

Theoretische Fragestellungen

Up Next

Aus dem gestrigen Gespräch haben sich folgende weitere Must-Have-Kriterien herausgebildet:

  • Interaktionsmöglichkeit: Figuren und Geschichten ein- und ausblenden -> dadurch wird ersichtlich, wie sich der „durchschnittliche“ Zustand des Erzählers je nach Person verändert
  • Protokollebene: „Momentaufnahmen“ müssen gespeichert und nebeneinander angezeigt werden können, damit man verschiedene Zustände miteinander vergleichen kann

Aus meinen heutigen Versuchen heraus ergibt sich außerdem:

  • klären: Farben der Relations
  • berechnen der „Durchschnittsfarbe“: nicht addieren der einzelnen Farben, sondern berechnen, welche am häufigsten vorkommt, sodass ein klarer Zustand angezeigt wird
  • was tun mit Zuständen, die keine Emotion sind, wie zB sick, pain, suffer,…? -> Idee: anstatt der Emotions Library die Emotionen-Liste von wefeelfine verwenden: http://wefeelfine.org/data/files/feelings.txt
Up Next

Neue Sichtweisen

Das erste Update nach dem Gespräch mit Hubert: Einige Dinge sind klarer geworden, manche müssen sich noch durch Experimentieren klären.

Das erste, was ich heute gemacht habe, war, die „femaleColor“ und „maleColor“ durch Formen (Quadrat/Kreis) zu ersetzen. Damit stehen mir wieder alle Farben zur Verfügung.

Die Relations habe ich dann auf 2 Farben reduziert (Narrator-to-Figure, Figure-to-Narrator), wobei die momentan gewählten Farben nicht die endgültigen sein werden, sondern wahllos zugewiesen wurden.

Dann habe ich die Conditions wieder so umgeschrieben, dass die genaueren Beschreibungen der Emotionen gespeichert werden, d.h. nicht nur „positive“, „negative“, usw., sondern die erste klarer definierte Emotion ( entspricht Level 5, was man gut in dieser Grafik sehen kann: https://www.gsi.dit.upm.es/ontologies/wnaffect/img/wnaffect.svg)

Nun wird pro Emotion der gesamte Narrator-Kreis eingefärbt. Wird keine Emotion gefunden, bleibt der Kreis leer. Auf der Gesamt-Übersicht addieren sich alle Emotionen übereinander.

Zum Schluss habe ich noch eine schnelle Legende gebastelt, damit das alles ein wenig verständlicher wird.

Screen Shot 2015-10-22 at 11.37.12 AMScreen Shot 2015-10-22 at 1.42.58 PMScreen Shot 2015-10-22 at 1.41.55 PMScreen Shot 2015-10-22 at 1.42.10 PMScreen Shot 2015-10-22 at 1.57.57 PM

Neue Sichtweisen

Experimente mit den Conditions – Welche Visuellen Darstellungsformen sind möglich?

Was ich eigentlich erreichen wollte war:

  • zeigen, wie sich der Zustand des Erzählers im Verlauf der Zeit ändert
  • wie sich sein Zustand bezogen auf die anderen Charaktere ändert

Nun bin ich mir aber nicht mehr sicher, ob das überhaupt möglich ist.

Ich denke, das Problem an meiner derzeitigen Darstellung ist, dass die Richtung bereits die Zeit darstellt und somit nicht mehr für andere Bedeutungen genutzt werden kann. Auch Farbe ist mehr oder weniger belegt (Geschlecht der Charaktere, Erzähler im Unterschied zu anderen Charakteren).

Mein Gedanke war, für jeden Paragraph, in dem der Erzähler vorkommt, einen Strich von der Mitte nach außen zu zeichnen. Dieser Strich wird dann je nach Emotion coloriert. Weitere mögliche Eigenschaften, wie Handlung (speech, action,..) oder Zustand (mental health, physical health) könnten in weiteren Ringen um den Mittelpunkt dargestellt werden.

In nachfolgendem Screenshot sieht man zumindest schon mal die farbcodieren Emotionen (vereinfacht in positive, negative, neutral) und den Ring darum herum (noch nicht farblich codiert).

Screen Shot 2015-10-13 at 5.16.53 PM

Probleme:

  • man erkennt dabei eigentlich nichts
  • was passiert wenn es mehrere Emotionen in einem Absatz gibt?
  • gemeinsam mit den Relationen wird es ein unübersichtliches Linien-Wirrwarr (darum habe ich sie beim Screenshot ausgeblendet)
  • ich kann nicht auf die gleiche Weise den Zustand der Charaktere zeigen (aufgrund der räumlichen Festlegung)
Experimente mit den Conditions – Welche Visuellen Darstellungsformen sind möglich?

Visuelle Einteilung in Tales

Da zB in der Geschichte „The Pit and the Pendulum“ nur der Ich-Erzähler vorkommt und keine anderen Charaktere, habe ich nun den Kreis durch die Anzahl der untersuchten Geschichten geteilt und die jeweiligen Charaktere darin platziert. So sieht man auch gleich, wie viele Personen (und wie viele davon weiblich / männlich) in welcher Geschichte vorkommen.

Screen Shot 2015-10-09 at 9.39.02 PM Screen Shot 2015-10-09 at 9.39.45 PM Screen Shot 2015-10-09 at 9.39.54 PM

Bei William Wilson werde ich wohl doch den „Unbekannten“, der sich am Ende als der Ich-Erzähler selbst herausstellt, als Charakter hinzufügen. Sonst ist es ja eigentlich eine inhaltliche Vorwegnahme.

Den Ich-Erzähler habe ich momentan noch nicht hinzugefügt in der neuen Ansicht, da ich gleich in die Umsetzung seiner Emotionen gehen werde.

Da habe ich bereits in der anderen Ansicht probiert, allerdings war das ein eher kläglicher Versuch:

Screen Shot 2015-10-08 at 8.50.34 PMScreen Shot 2015-10-08 at 7.44.03 PM

Visuelle Einteilung in Tales

In an ideal world…

Folgende Probleme und „Nice-to-have“-Funktionen können gelöst und implementiert werden, wenn am Ende dafür Zeit bleibt.

Issues

  • die Relation-rules sind immer noch nicht perfekt.. daran könnte man wsl ewig arbeiten. Schön wäre aber, wenn es immer sauber vom Rest getrennte Satzteile wären.
  • Das Problem mit den 2 Morellas besteht immer noch. Hauptsächlich deshalb, weil mir keine gute Lösung einfällt, aber auch, weil ich es als kein sehr wichtiges Problem erachte. Die einzige „cleane“ Lösung die mir einfällt, ist, nur dann einen temporären Charakter zu erzeugen, wenn im Absatz nur alias-Bezeichnungen von einer Person vorkommen („wife / mother“ oder „daughter“). Das reduziert aber die gefundenen Matches so drastisch, dass mir das irgendwie unsinnig erscheint – vor allem weil der Name Morella so häufig vorkommt. Die einzige „dirty“ Lösung die mir einfällt, ist den rohen Text zu bearbeiten und hinter jedem „Morella“ den passenden aka zu schreiben, z.B. „Morella <DAUGHTER>“, und diesen dann bei jeder Textausgabe rauszuschneiden. Aber ja, das wäre halt ziemlich dirty.
  • William Wilson

Nice-to-haves

  • GUI Elemente um die Darstellung zu beeinflussen:
    • Checkboxen für Relations: [x] Erzähler-Figur Beziehungen, [x] Figur-Erzähler Beziehungen; schalten die jeweiligen Beziehungen an oder aus
    • Darstellungsmodus (betrifft die Farben der Charaktere und der Relations):
      • nach Gender
      • nach Emotion
    • Namen ein- und ausschalten:
      • stellt die Namen der Figuren dar
      • in der viewPerLayer-Ansicht wird auch der Name des Erzählers angezeigt
In an ideal world…