diff --git a/.gitattributes b/.gitattributes index 0b90841f85f5e81480a301395aa290f5fcbee64c..5d0ada14a79437c62f6a49d33262f59fd3b80a6e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2,12 +2,13 @@ notebooks/AirBnB_Use_Berlin.ipynb !filter notebooks/Art.ipynb !filter notebooks/Das_Haus_vom_Nikolaus.ipynb !filter notebooks/DraCor.ipynb !filter +notebooks/Drama_Speakers.ipynb !filter notebooks/FCA.ipynb !filter notebooks/FCA.ipynb !filter notebooks/Hamming.ipynb !filter +notebooks/Video_Games.ipynb !filter notebooks/Weinbewertungen_Vivino.ipynb !filter +notebooks/World_Risk_and_Happiness.ipynb !filter notebooks/distances.ipynb !filter -notebooks/Video_Games.ipynb !filter notebooks/wikipedia_language_editions.ipynb !filter notebooks/wikipedia_regex.ipynb !filter -notebooks/World_Risk_and_Happiness.ipynb !filter diff --git a/README.org b/README.org index 1023a064b7b77a9f50b9ee22a066a5223f35bfa5..969d02b623f90797d5cabb48d24cacd034fbd663 100644 --- a/README.org +++ b/README.org @@ -64,6 +64,9 @@ Exemplary (and excellent) computational essays from students of our module: - [[file:notebooks/AirBnB_Use_Berlin.ipynb][AirBnB Use in Berlin]] :: /Untersuchung der AirBnB Nutzung in Berlin/ by Juliane Köhler +- [[file:notebooks/Drama_Speakers.ipynb][Gender of Characters in Drama]] :: /Die Repräsentanz von weiblichen + Sprecherinnen in den Theaterstücken der deutschen und französischen + DramaCorpora/ by Janina Pingel und Vivian Schlosser - [[file:notebooks/Video_Games.ipynb][Video Games Sales]] :: /Analysis of Video Games Sales Data/ by Jan Raoul Weber - [[file:notebooks/Weinbewertungen_Vivino.ipynb][Weinbewertungen Vivino]] :: /Untersuchung von Weinbewertungen des diff --git a/notebooks/Drama_Speakers.ipynb b/notebooks/Drama_Speakers.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..1cd30d3224d8cbc44ba96f84fc93f64897986b64 --- /dev/null +++ b/notebooks/Drama_Speakers.ipynb @@ -0,0 +1,2642 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f76653f2", + "metadata": {}, + "source": [ + "<center>Institut für Bibliotheks- und Informationswissenschaft, Humboldt-Universität zu Berlin</center>\n", + "\n", + "<h1 align=\"center\">Modul Datenanalyse & -auswertung: Die Repräsentanz von weiblichen Sprecherinnen in den Theaterstücken der deutschen und französischen DramaCorpora</h1>\n", + "<h2 align=\"center\">Janina Pingel und Vivian Schlosser</h2>" + ] + }, + { + "cell_type": "markdown", + "id": "0c19f8d8", + "metadata": {}, + "source": [ + "## Inhaltsverzeichnis:\n", + "1. [Einleitung](#first-bullet)\n", + "2. [Beschreibung der Bestandteile des Datensatzes](#second-bullet) <br />\n", + " 2.1 [Wo kommt der Datensatz her?](#third-bullet) <br />\n", + " 2.2 [Wer hat die Daten aufgenommen, erhoben oder zusammengestellt?](#fourth-bullet) <br />\n", + " 2.3 [Wieviele Attribute und wieviele Datensätze sind enthalten?](#fifth-bullet) <br />\n", + " 2.4 [Beschreibung der Anzahl an Ausprägungen beider DramaCorpora ](#sixth-bullet) <br />\n", + " 2.5 [Beschreibung der ausgewählten Attribute](#seventh-bullet) <br />\n", + "3. [Deskriptive Analyse des Datensatzes](#eighth-bullet) <br />\n", + " 3.1 [Beschreibung des Attributs `firstAuthor`](#nineth-bullet) <br />\n", + " 3.2 [Beschreibung des Attributs `normalizedGenre`](#tenth-bullet) <br />\n", + " 3.3 [Beschreibung des Attributs `yearNormalized`](#eleventh-bullet) <br />\n", + " 3.4 [Beschreibung des Attributs `libretto`](#twelfth-bullet) <br />\n", + " 3.5 [Beschreibung der Attribute `numOfSpeakers`, `numOfSpeakersMale`, `numOfSpeakersFemale`, `numOfSpeakersUnkown`](#thirteenth-bullet) <br />\n", + " 3.5.1 [Modellierung der männlichen und weiblichen Sprecher:innen](#fourteenth-bullet) <br />\n", + " 3.6 [Beschreibung des Attributs `numOfActs`](#fifteenth-bullet) <br />\n", + " 3.7 [Beschreibung des Attributs `wordCountSp`](#sixteenth-bullet) <br />\n", + "4. [Beziehungen zwischen den Variablen](#seventeenth-bullet) <br />\n", + " 4.1 [Beziehungen zwischen dem `yearNormalized` und der `numOfSpeakersFemale`](#eighteenth-bullet) <br />\n", + " 4.2 [Beziehungen zwischen der `numOfSpeakersMale` und der `numOfSpeakersFemale`](#nineteenth-bullet) <br />\n", + " 4.3 [Beziehungen zwischen der `numOfActs` und der `numOfSpeakersFemale`](#twentieth-bullet) <br />\n", + " 4.4 [Beziehungen zwischen dem `wordCountSp` und der `numOfSpeakersFemale`](#twenty-first-bullet) <br />\n", + "5. [Induktive Analyse und Erweiterung](#twenty-second-bullet) <br />\n", + " 5.1 [Hypothesentests](#twenty-third-bullet) <br />\n", + " 5.1.1 [Das normalisierte Jahr hat (k)einen Einfluss auf die Anzahl an weiblichen/männlichen Sprecher:innen](#twenty-fourth-bullet) <br />\n", + " 5.1.2 [Die Anzahl der männlichen Sprecher hat (k)einen Einfluss auf die Anzahl an weiblichen Sprecherinnen](#twenty-fifth-bullet) <br />\n", + " 5.2 [weitere Korrelationen](#twenty-sixth-bullet) <br />\n", + "6. [Diskussion](#twenty-seventh-bullet) <br />\n", + "7. [Erweiterung](#twenty-eighth-bullet) <br />\n", + "7. [Fazit](#twenty-nineth-bullet) <br />" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3b2ba965", + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "\n", + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.patches as mp\n", + "import seaborn as sns\n", + "sns.set(style='white')\n", + "\n", + "from utils import decorate\n", + "from thinkstats2 import Pmf, Cdf\n", + "import scipy.stats as st\n", + "\n", + "import thinkstats2\n", + "import thinkplot\n", + "\n", + "import json\n", + "import csv\n", + "from collections import Counter" + ] + }, + { + "cell_type": "markdown", + "id": "13e8bc61", + "metadata": {}, + "source": [ + "**Code 0.0.01 - Import von Libraries und verschiedenen Einstellungen**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d1d478a9", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "# Quelle: https://stackoverflow.com/a/71221024 / Bereitgestellt von Robert Jaeschke\n", + "def chars_markdown(fname, celltype):\n", + " \"\"\"Gibt die Anzahl Zeichen (ohne Leerzeichen) in den Zellen\n", + " vom Typ celltype im Jupyter-Notebook fname zurück.\"\"\"\n", + " with open(fname) as json_file:\n", + " data = json.load(json_file)\n", + " \n", + " count = 0\n", + " for cell in data['cells']:\n", + " if cell['cell_type'] == celltype:\n", + " for line in cell['source']:\n", + " count += len(line.strip().replace(\" \", \"\"))\n", + " return count\n", + "\n", + "code = chars_markdown(\"Schlosser_Pingel.ipynb\", \"code\")\n", + "markdown = chars_markdown(\"Schlosser_Pingel.ipynb\", \"markdown\")\n", + "\n", + "print(\"Code: %6d\" % code)\n", + "print(\"Markdown: %6d\" % markdown)\n", + "print(\"Summe: %6d\" % (code+markdown))" + ] + }, + { + "cell_type": "markdown", + "id": "d1669d36", + "metadata": {}, + "source": [ + "**Code 0.0.02 - Technische Details: Zeichen ohne Leerzeichen (ZoL) der Hausarbeit**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "162cb8ac", + "metadata": {}, + "outputs": [], + "source": [ + "# Quelle: https://geekflare.com/de/python-find-mean-median-and-mode/\n", + "def mode(dataset):\n", + " frequency = {}\n", + "\n", + " for value in dataset:\n", + " frequency[value] = frequency.get(value, 0) + 1\n", + "\n", + " most_frequent = max(frequency.values())\n", + "\n", + " modes = [key for key, value in frequency.items()\n", + " if value == most_frequent]\n", + "\n", + " return modes " + ] + }, + { + "cell_type": "markdown", + "id": "a0964171", + "metadata": {}, + "source": [ + "**Code 0.0.03 - Funktion für die Berechnung des Modalwertes**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ebd3165c", + "metadata": {}, + "outputs": [], + "source": [ + "# Quelle: https://morioh.com/p/6c49c80450f9\n", + "def percentage(part, whole):\n", + " percentage = 100 * float(part)/float(whole)\n", + " return str(percentage) + \"%\"" + ] + }, + { + "cell_type": "markdown", + "id": "6f5a5a1d", + "metadata": {}, + "source": [ + "**Code 0.0.04 - Funktion zur Berechnung von Prozentzahlen**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1e1d5b37", + "metadata": {}, + "outputs": [], + "source": [ + "# Quelle: Downey, A. B. (2014). Think Stats (2nd Edition).https://greenteapress.com/thinkstats2/html/index.html \n", + "def MakeNormalModel(values, label=''):\n", + " \"\"\"Plots a CDF with a Normal model.\n", + "\n", + " values: sequence\n", + " \"\"\"\n", + " cdf = thinkstats2.Cdf(values, label=label)\n", + "\n", + " mean, var = thinkstats2.TrimmedMeanVar(values)\n", + " std = np.sqrt(var)\n", + " print('n, mean, std', len(values), mean, std)\n", + "\n", + " xmin = min(min(values), mean - 4 * std)\n", + " xmax = max(max(values), mean + 4 * std)\n", + "\n", + " xs, ps = thinkstats2.RenderNormalCdf(mean, std, xmin, xmax)\n", + " thinkplot.Plot(xs, ps, label='model', linewidth=4, color='0.8')\n", + " thinkplot.Cdf(cdf)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "68b4b592", + "metadata": {}, + "outputs": [], + "source": [ + "# Quelle: Downey, A. B. (2014). Think Stats (2nd Edition).https://greenteapress.com/thinkstats2/html/index.html \n", + "def MakeNormalPlot(values, label=''):\n", + " \"\"\"Generates a normal probability plot.\n", + "\n", + " values: sequence\n", + " \"\"\"\n", + " mean, var = thinkstats2.TrimmedMeanVar(values, p=0.01)\n", + " std = np.sqrt(var)\n", + "\n", + " xs = [-5, 5]\n", + " xs, ys = thinkstats2.FitLine(xs, mean, std)\n", + " thinkplot.Plot(xs, ys, color='0.8', label='model')\n", + "\n", + " xs, ys = thinkstats2.NormalProbability(values)\n", + " thinkplot.Plot(xs, ys, '+', alpha=0.3, label=label)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5f9c057d", + "metadata": {}, + "outputs": [], + "source": [ + "def Jitter(values, jitter=0.5):\n", + " n = len(values)\n", + " return np.random.normal(0, jitter, n) + values" + ] + }, + { + "cell_type": "markdown", + "id": "4e38dde2", + "metadata": {}, + "source": [ + "**Code 0.0.03 - 0.0.5 - Definition verschiedener Funktionen**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "62b05649", + "metadata": {}, + "outputs": [], + "source": [ + "gerdrama = pd.read_csv ('gerdracor-metadata.csv')\n", + "fredrama = pd.read_csv ('fredracor-metadata.csv')\n", + "rusdrama = pd.read_csv ('rusdracor-metadata.csv')# Auf die letzten beiden Datensätze wird in Kapitel 7 zurückgegriffen.\n", + "itadrama = pd.read_csv ('itadracor-metadata.csv')" + ] + }, + { + "cell_type": "markdown", + "id": "8831fa65", + "metadata": {}, + "source": [ + "**Code 0.0.06 - Import der Tabellen**" + ] + }, + { + "cell_type": "markdown", + "id": "dedb6743", + "metadata": {}, + "source": [ + "#### Vorbemerkung <a class=\"anchor\" id=\"zero-bullet\"></a> \n", + "* Der nachfolgende Text ist gegendert. Wir haben uns für die :- Notation entschieden- z. B.: Autor:innen. \n", + "\n", + "* Wir verwenden die Schreibweise DramaCorpus oder DramaCorpora, um explizit über die Datensätze im zugrunde liegenden DraCor-Projekt zu sprechen.\n", + "\n", + "* An einigen Stellen im französischen und im deutschen Datensatz kam es zu einer Nennung von zwei Jahreszahlen, die durch ein \"/\" getrennt waren. Um die Jahreszahlen für die weitere Analyse nutzbar zu machen, wurden diese im Zuge der Datenbereinigung direkt in der eingelesenen Exceltabelle angepasst. Dabei wurden die doppelten Jahreszahlen auf die erste genannte Zahl gekürzt und alle Zeichen hinter dem Komma abgetrennt und gelöscht.\n", + "\n", + "* Die vorliegende Arbeit umfasst die doppelte Menge an Zeichen, da sie in Partnerarbeit entstand. Jedes Kapitel wurde zusammen ausgearbeitet und diskutiert, um direkt von Beginn an eine vergleichende Analyse zu ermöglichen. \n", + "\n", + "* Im Rahmen des Seminars zu diesem Modul wurde uns die [Hausarbeit von Juliane Köhler](https://scm.cms.hu-berlin.de/ibi/notebooks/-/blob/master/AirBnB_Use_Berlin.ipynb) zur Verfügung gestellt. Aufgrund der ansprechenden Struktur haben wir uns beim Design der Codeunterschriften an ihrer Arbeit orientiert. Dankeschön!\n", + "\n", + "* Unsere in der Arbeit verwendeten Datensätze sowie die Selbstständigkeitserklärungen befinden sich in der HU-Box und können unter folgenden Link abgerufen werden: https://box.hu-berlin.de/d/71657f34b6514d8faaea/" + ] + }, + { + "cell_type": "markdown", + "id": "01fba77d", + "metadata": {}, + "source": [ + "## 1. Einleitung <a class=\"anchor\" id=\"first-bullet\"></a> \n", + "[„Sie schließen die Frauenrollen aus […]“.](https://www.schloesser.bayern.de/deutsch/presse/archiv17/bayreuth/briefe05-09-17.htm)\n", + "\n", + "So beginnt die Anklage von Wilhelmine Markgräfin von Bayreuth, die sie in einem Brief vom 23. Januar 1751 an Voltaire sendete. Voltaire, der zu dieser Zeit am Potsdamer Hof residiert, ist einer der erfolgreichsten Dramenautoren der französischen Aufklärung. \n", + "\n", + "Es geht um weibliche Repräsentanz im Drama. Ein Thema, das bis heute vielfach diskutiert und analysiert wird. In den großen Talkshows, im Internet, im Bundestag. Dabei ist eine belastbare Datenbasis und eine quantitative Analyse eine wichtige Grundlage zur Analyse des Sachverhalts. Was heutzutage durch verschiedene unabhängige Studien geschieht, wird für die klassischen geschichts- und geisteswissenschaftlicher Themen im Rahmen der Digital Humanities möglich. Diese ermöglichen es mit computergestützten Methoden literaturwissenschaftliche Fragestellungen quantitativ zu bearbeiten.\n", + "\n", + "In diesem Rahmen entstand auch das DramaCorpus-Projekt, das historische Dramen in landesspezifischen Corpora sammelt. Auf Grundlage dieser Daten soll die Beschaffenheit der weiblichen Repräsentanz untersucht werden. Zur Eingrenzung unseres Forschungsfeldes konzentrieren wir uns dabei auf den Vergleich zwischen dem deutschen und dem französischen DramaCorpus. Dabei soll im Rahmen einer explorativen Analyse wie folgt vorgegangen werden:\n", + "Zuerst beschäftigen wir uns mit den beiden Datensätzen und stellen diese vor. Wir beschreiben ihre Attribute und Ausprägungen. Anschließend werden ausgesuchte Attribute mithilfe von statistischen Methoden tiefergehend analysiert und anschließend miteinander in Beziehung gesetzt und daraus Fragestellungen für die Ãœberprüfung mittels Hypothesentests entwickelt. In der Diskussion werden die gefundenen Ergebnisse kritisch reflektiert. Danach erfolgt eine Erweiterung der betrachteten Datenbasis, eine Perspektive für weitere Datenanalysen wird aufgezeigt. Es folgt das Fazit." + ] + }, + { + "cell_type": "markdown", + "id": "735c669f", + "metadata": {}, + "source": [ + "## 2. Beschreibung der Bestandteile des Datensatzes <a class=\"anchor\" id=\"second-bullet\"></a> \n", + "### 2.1 Wo kommt der Datensatz her? <a class=\"anchor\" id=\"third-bullet\"></a> \n", + "\n", + "Die für die Arbeit verwendeten Datensätze stammen aus dem DraCor-Projekt. DraCor, kurz für \"DramaCorpus\" ist der Name für ein Projekt und eine Plattform aus dem Bereich Digital Humanities, das sich mit der \"Sammlung von Theaterstücken in (meist) europäischen Sprachen\" beschäftigt. Entstanden aus dem 2015 gestarteten und mittlerweile eingestellten Projekt zur digitalen Netzwerkanalyse literaturwissenschaftlicher Daten (gefördert durch Horizon2020), entstanden im Projekt um die Urheber Frank und Peer Trilcke, ein deutscher und ein russischer Corpus, die eine große Menge an digitalen Informationen über die jeweiligen Theaterstücke sowie technische Möglichkeiten zur Netzwerkanalyse liefern. Als Plattform verschiedensprachiger DramaCorpora hostet DraCor darüber hinaus auch Corpora, die von anderen Institutionen erstellt und gepflegt wurden.\n", + "\n", + "Ein Zugang zu \"DraCor\" ist über die Webseite [dracor.org](https://dracor.org/) möglich. Aktuell sind 15 Corpora verfügbar, zu denen sowohl Metadaten als auch die TEI-kodierten Volltexte aller in der Sammlung enthaltener Stücke vorliegen. Weitere Dateien, enthalten den reinen Sprechtext oder die Stage Directions, sowie umfangreiche Netzwerkanalysedaten, deren Auswertung sich in interaktiven Grafiken auf der Webseite verfolgen lassen. Alle Daten werden in verschiedenen Formaten zur Verfügung gestellt, von denen die gängisten .csv, .json und .txt sind. Für die vorliegende Analyse wurden die Metadaten des deutschen und französischen DramaCorpus im .csv. Format verwendet. Dies gilt auch für den russischen und italienischen Datensatz. Die Webseite ist als eine Art \"Schaufenster\" konzipiert, die vor allem der Datenpräsentation dienen soll. Ein weiterer Zugang ist über eine eigene Programmierschnittstelle (API) zugänglich. \n", + "\n", + "Alle Daten können entsprechend ihrer CreativeCommons-Lizenzen für die eigene Forschung genutzt und heruntergeladen werden, die genaue Lizenz ist auf der Ãœberblicksseite des Datensatzes vermerkt. Je nach technischer Vorbildung stehen zusätzliche Wrapper und Apps zur Verfügung, die einen direkten Zugang zu den Netzwerkanalysen ermöglichen. Da sich das Projekt als Teil der Linked Open Data Bewegung versteht, sind zusätzliche Schnittstellen zu offenen Netzwerken wie Wikipedia gegeben. Die technische Infrastruktur der Plattform wird bislang über Spenden und Freiwillige sichergestellt.\n", + "\n", + "\n", + "### 2.2 Wer hat die Daten aufgenommen, erhoben oder zusammengestellt? <a class=\"anchor\" id=\"fourth-bullet\"></a>\n", + "\n", + "Der deutsche DramaCorpus ist von Frank Fischer und Peer Trilcke im oben beschrieben Projekt zusammengestellt und herausgegeben worden und enthält deutschsprachige Theaterstücke von den 1650er bis zu den 1940er Jahren und steht unter einer [CCO-Lizenz](https://creativecommons.org/share-your-work/public-domain/cc0/). Der französische DramaCorpus ist eine TEI-codierte Version von Théâtre Classique, einer Sammlung französisch-sprachiger Dramentexte, die seit 2007 an der Université Paris-4 Sorbonne unter der Leitung von Paul Fièvre gesammelt werden. In der vorliegenden Form ist er von Carsten Milling, Frank Fischer und Mathias Göbe weiter bearbeitet worden. Der französische DramaCorpus enthält Theaterstücke aus den Jahren 1170 bis 2017 und ist unter einer [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/) lizenziert. Das bedeutet, dass die Daten neben einer Namensnennung der Autor:innen, nicht für kommerzielle Zwecke verwendet werden dürfen und eine Weitergabe zu den gleichen Bedingungen erfolgen muss." + ] + }, + { + "cell_type": "markdown", + "id": "13901f50", + "metadata": {}, + "source": [ + "### 2.3 Wieviele Attribute und wieviele Datensätze sind enthalten? <a class=\"anchor\" id=\"fifth-bullet\"></a> " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "51ed473c", + "metadata": {}, + "outputs": [], + "source": [ + "print(\"(Anzahl der Einträge, Anzahl der Attribute): \", gerdrama.shape)\n", + "print(\"(Anzahl der Einträge, Anzahl der Attribute): \", fredrama.shape)" + ] + }, + { + "cell_type": "markdown", + "id": "99af92f7", + "metadata": {}, + "source": [ + " **Code 2.3.01 - Die Anzahl der Einträge und der Attribute der Datentabellen in beiden DramaCorpora**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c42eb88c", + "metadata": {}, + "outputs": [], + "source": [ + "gerdrama.head(2)" + ] + }, + { + "cell_type": "markdown", + "id": "b9e0dc9e", + "metadata": {}, + "source": [ + "**Code 2.3.02 - die ersten beiden Zeilen der Metadaten-Tabelle des deutschen DramaCorpus**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5f9122fd", + "metadata": {}, + "outputs": [], + "source": [ + "gerdrama.columns" + ] + }, + { + "cell_type": "markdown", + "id": "499af841", + "metadata": {}, + "source": [ + " **Code 2.3.03 - Auflistung der Spaltennamen im deutschen DramaCorpus**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c711aafb", + "metadata": {}, + "outputs": [], + "source": [ + "fredrama.head(2)" + ] + }, + { + "cell_type": "markdown", + "id": "de779a85", + "metadata": {}, + "source": [ + "**Code 2.3.04 - die ersten beiden Zeilen des französischen DramaCorpus**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7b6eec94", + "metadata": {}, + "outputs": [], + "source": [ + "fredrama.columns" + ] + }, + { + "cell_type": "markdown", + "id": "84b9d9ee", + "metadata": {}, + "source": [ + " **Code 2.3.05 - Auflistung der Spaltennamen im französischen DramaCorpus**" + ] + }, + { + "cell_type": "markdown", + "id": "f9607bf9", + "metadata": {}, + "source": [ + "Für den Hauptteil der Arbeit wurden die Dateien fredracor-metadata.csv und gerdracor-metadata.csv verwendet. Der [GermanDramaCorpus](https://dracor.org/ger), der in dieser Arbeit verwendet wurde, ist zuletzt am 06.08.2022, 21:20:38 aktualisiert worden. In dieser Version besitzt der Corpus 591 einzelne Datensätze mit jeweils 34 Attributen (Mittlerweile existiert ein neues Update vom 10.09.2022, 22:27:38, das einen Datensatz mehr umfasst, dieser liegt jedoch nicht der Arbeit zugrunde). Der [FrenchDramaCorpus](https://dracor.org/fre) liegt in der Version vom 03.07.2022, 15:19:14 vor. In dieser Version hat er 1560 einzelne Datensätze mit 34 Attributen. Wie oben ersichtlich sind die Attribute in beiden Datensätzen deckungsgleich. Im weiteren Verlauf der Arbeit kommen noch die beiden Dateien rusdracor-metadata.csv und itadracor-metadata.csv hinzu. In [Kapitel 7](#twenty-eighth-bullet) werden zwei weitere Datensätze eingeführt. Der [RussianDramaCorpus](https://dracor.org/rus) mit 212 Datensätzen, der zuletzt am 03.07.2022, 07:12:32 aktualisiert worden ist und der [ItalianDramaCorpus](https://dracor.org/ita) mit 139 Datensätzen in der Version vom 02.07.2022, 21:34:29. Die beiden zusätzlichen Corpora enthalten dieselben 34 Attribute. " + ] + }, + { + "cell_type": "markdown", + "id": "3d5b5ede", + "metadata": {}, + "source": [ + "### 2.4 Beschreibung der Anzahl an Ausprägungen beider DramaCorpora <a class=\"anchor\" id=\"sixth-bullet\"></a> " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1b9fffc5", + "metadata": {}, + "outputs": [], + "source": [ + "# nach Juliane Köhler: Datenanalyse & -auswertung: MAP - Untersuchung der AirBnB Nutzung in Berlin \n", + "# abgerufen unter https://scm.cms.hu-berlin.de/ibi/notebooks/-/blob/master/AirBnB_Use_Berlin.ipynb\n", + "name = gerdrama['name'].nunique()\n", + "id = gerdrama['id'].nunique()\n", + "firstAuthor = gerdrama['firstAuthor'].nunique()\n", + "numOfCoAuthors = gerdrama['numOfCoAuthors'].nunique()\n", + "title = gerdrama['title'].nunique()\n", + "subtitle = gerdrama['subtitle'].nunique()\n", + "normalizedGenre = gerdrama['normalizedGenre'].nunique()\n", + "yearNormalized = gerdrama['yearNormalized'].nunique()\n", + "size = gerdrama['size'].nunique()\n", + "libretto = gerdrama['libretto'].nunique()\n", + "averageClustering = gerdrama['averageClustering'].nunique()\n", + "density = gerdrama['density'].nunique()\n", + "averagePathLength = gerdrama['averagePathLength'].nunique()\n", + "maxDegreeIds = gerdrama['maxDegreeIds'].nunique()\n", + "averageDegree = gerdrama['averageDegree'].nunique()\n", + "diameter = gerdrama['diameter'].nunique()\n", + "yearPremiered = gerdrama['yearPremiered'].nunique()\n", + "yearPrinted = gerdrama['yearPrinted'].nunique()\n", + "maxDegree = gerdrama['maxDegree'].nunique()\n", + "numOfSpeakers = gerdrama['numOfSpeakers'].nunique()\n", + "numOfSpeakersFemale = gerdrama['numOfSpeakersFemale'].nunique()\n", + "numOfSpeakersMale = gerdrama['numOfSpeakersMale'].nunique()\n", + "numOfSpeakersUnknown = gerdrama['numOfSpeakersUnknown'].nunique()\n", + "numPersonGroups = gerdrama['numPersonGroups'].nunique() \n", + "numConnectedComponents = gerdrama['numConnectedComponents'].nunique()\n", + "yearWritten = gerdrama['yearWritten'].nunique()\n", + "numOfSegments = gerdrama['numOfSegments'].nunique()\n", + "wikipediaLinkCount = gerdrama['wikipediaLinkCount'].nunique()\n", + "numOfActs = gerdrama['numOfActs'].nunique()\n", + "wordCountText = gerdrama['wordCountText'].nunique()\n", + "wordCountSp = gerdrama['wordCountSp'].nunique()\n", + "wordCountStage = gerdrama['wordCountStage'].nunique()\n", + "numOfP = gerdrama['numOfP'].nunique()\n", + "numOfL = gerdrama['numOfL'].nunique()\n", + "\n", + "print('Im Deutschen Dramenkorpus sind die folgenden Attribute mit verschieden vielen Ausprägungen vertreten:')\n", + "print(' name: %d Ausprägungen \\n id: %d Ausprägungen' %(name, id))\n", + "print(' firstAuthor %d Ausprägungen \\n numOfCoAuthors: %d Ausprägungen' %(firstAuthor, numOfCoAuthors))\n", + "print(' title: %d Ausprägungen' %(title))\n", + "print(' subtitle: %d Ausprägungen \\n normalizedGenre: %d Ausprägungen \\n yearNormalized: %d Ausprägungen' %(subtitle, normalizedGenre, yearNormalized))\n", + "print(' size: %d Ausprägungen' %(size))\n", + "print(' libretto: %d Ausprägungen \\n averageClustering: %d Ausprägungen' %(libretto, averageClustering))\n", + "print(' density: %d Ausprägungen' %(density))\n", + "print(' averagePathLength: %d Ausprägungen' %(averagePathLength))\n", + "print(' averageDegree: %d Ausprägungen \\n diameter: %d Ausprägungen' %(averageDegree, diameter))\n", + "print(' yearPremiered: %d Ausprägungen \\n yearPrinted: %d Ausprägungen \\n maxDegree: %d Ausprägungen' %(yearPremiered, yearPrinted, maxDegree))\n", + "print(' numOfSpeakers: %d Ausprägungen \\n numOfSpeakersFemale: %d Ausprägungen' %(numOfSpeakers, numOfSpeakersFemale))\n", + "print(' numOfSpeakersMale: %d Ausprägungen \\n numOfSpeakersUnknown: %d Ausprägungen' %(numOfSpeakersMale, numOfSpeakersUnknown))\n", + "print(' numPersonGroups: %d Ausprägungen' %(numPersonGroups))\n", + "print(' numConnectedComponents: %d Ausprägungen \\n yearWritten: %d Ausprägungen \\n numOfSegments: %d Ausprägungen' %(numConnectedComponents, yearWritten, numOfSegments))\n", + "print(' wikipediaLinkCount: %d Ausprägungen' %(wikipediaLinkCount))\n", + "print(' numOfActs: %d Ausprägungen \\n wordCountText: %d Ausprägungen \\n wordCountSp: %d Ausprägungen' %(numOfActs, wordCountText, wordCountSp))\n", + "print(' wordCountStage: %d Ausprägungen \\n numOfP: %d Ausprägungen' %(wordCountStage, numOfP))\n", + "print(' numOfL: %d Ausprägungen' %(numOfL))" + ] + }, + { + "cell_type": "markdown", + "id": "51069dfe", + "metadata": {}, + "source": [ + " **Code 2.4.01 - Auflistung der Anzahl an Ausprägungen aller Attribute im deutschen DramaCorpus**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "97591c15", + "metadata": {}, + "outputs": [], + "source": [ + "# nach Juliane Köhler: Datenanalyse & -auswertung: MAP - Untersuchung der AirBnB Nutzung in Berlin \n", + "# abgerufen unter https://scm.cms.hu-berlin.de/ibi/notebooks/-/blob/master/AirBnB_Use_Berlin.ipynb\n", + "frename = fredrama['name'].nunique()\n", + "freid = fredrama['id'].nunique()\n", + "frefirstAuthor = fredrama['firstAuthor'].nunique()\n", + "frenumOfCoAuthors = fredrama['numOfCoAuthors'].nunique()\n", + "fretitle = fredrama['title'].nunique()\n", + "fresubtitle = fredrama['subtitle'].nunique()\n", + "frenormalizedGenre = fredrama['normalizedGenre'].nunique()\n", + "freyearNormalized = fredrama['yearNormalized'].nunique()\n", + "fresize = fredrama['size'].nunique()\n", + "frelibretto = fredrama['libretto'].nunique()\n", + "freaverageClustering = fredrama['averageClustering'].nunique()\n", + "fredensity = fredrama['density'].nunique()\n", + "freaveragePathLength = fredrama['averagePathLength'].nunique()\n", + "frefremaxDegreeIds = fredrama['maxDegreeIds'].nunique()\n", + "freaverageDegree = fredrama['averageDegree'].nunique()\n", + "frediameter = fredrama['diameter'].nunique()\n", + "freyearPremiered = fredrama['yearPremiered'].nunique()\n", + "freyearPrinted = fredrama['yearPrinted'].nunique()\n", + "fremaxDegree = fredrama['maxDegree'].nunique()\n", + "frenumOfSpeakers = fredrama['numOfSpeakers'].nunique()\n", + "frenumOfSpeakersFemale = fredrama['numOfSpeakersFemale'].nunique()\n", + "frenumOfSpeakersMale = fredrama['numOfSpeakersMale'].nunique()\n", + "frenumOfSpeakersUnknown = gerdrama['numOfSpeakersUnknown'].nunique()\n", + "frenumPersonGroups = fredrama['numPersonGroups'].nunique() \n", + "frenumConnectedComponents = fredrama['numConnectedComponents'].nunique()\n", + "freyearWritten = fredrama['yearWritten'].nunique()\n", + "frenumOfSegments = fredrama['numOfSegments'].nunique()\n", + "frewikipediaLinkCount = fredrama['wikipediaLinkCount'].nunique()\n", + "frenumOfActs = fredrama['numOfActs'].nunique()\n", + "frewordCountText = fredrama['wordCountText'].nunique()\n", + "frewordCountSp = fredrama['wordCountSp'].nunique()\n", + "frewordCountStage = fredrama['wordCountStage'].nunique()\n", + "frenumOfP = fredrama['numOfP'].nunique()\n", + "frenumOfL = fredrama['numOfL'].nunique()\n", + "\n", + "print(' frename: %d Ausprägungen \\n freid: %d Ausprägungen' %( frename, freid))\n", + "print(' frefirstAuthor %d Ausprägungen \\n frenumOfCoAuthors: %d Ausprägungen' %( frefirstAuthor, frenumOfCoAuthors))\n", + "print(' fretitle: %d Ausprägungen' %( fretitle))\n", + "print(' fresubtitle: %d Ausprägungen \\n frenormalizedGenre: %d Ausprägungen \\n freyearNormalized: %d Ausprägungen' %( fresubtitle, frenormalizedGenre, freyearNormalized))\n", + "print(' fresize: %d Ausprägungen' %( fresize))\n", + "print(' frelibretto: %d Ausprägungen \\n freaverageClustering: %d Ausprägungen' %( frelibretto, freaverageClustering))\n", + "print(' fredensity: %d Ausprägungen' %( fredensity))\n", + "print(' freaveragePathLength: %d Ausprägungen' %( freaveragePathLength))\n", + "print(' freaverageDegree: %d Ausprägungen \\n frediameter: %d Ausprägungen' %( freaverageDegree, frediameter))\n", + "print(' freyearPremiered: %d Ausprägungen \\n freyearPrinted: %d Ausprägungen \\n fremaxDegree: %d Ausprägungen' %( freyearPremiered, freyearPrinted, fremaxDegree))\n", + "print(' frenumOfSpeakers: %d Ausprägungen \\n frenumOfSpeakersFemale: %d Ausprägungen' %( frenumOfSpeakers, frenumOfSpeakersFemale))\n", + "print(' frenumOfSpeakersMale: %d Ausprägungen \\n frenumOfSpeakersUnknown: %d Ausprägungen' %( frenumOfSpeakersMale, frenumOfSpeakersUnknown))\n", + "print(' frenumPersonGroups: %d Ausprägungen' %( frenumPersonGroups))\n", + "print(' frenumConnectedComponents: %d Ausprägungen \\n freyearWritten: %d Ausprägungen \\n frenumOfSegments: %d Ausprägungen' %( frenumConnectedComponents, freyearWritten, frenumOfSegments))\n", + "print(' frewikipediaLinkCount: %d Ausprägungen' %( frewikipediaLinkCount))\n", + "print(' frenumOfActs: %d Ausprägungen \\n frewordCountText: %d Ausprägungen \\n frewordCountSp: %d Ausprägungen' %( frenumOfActs, frewordCountText, frewordCountSp))\n", + "print(' frewordCountStage: %d Ausprägungen \\n frenumOfP: %d Ausprägungen' %( frewordCountStage, frenumOfP))\n", + "print(' frenumOfL: %d Ausprägungen' %( frenumOfL))" + ] + }, + { + "cell_type": "markdown", + "id": "39510637", + "metadata": {}, + "source": [ + "**Code 2.4.02 - Auflistung der Anzahl an Ausprägungen aller Attribute im französischen DramaCorpus**" + ] + }, + { + "cell_type": "markdown", + "id": "70bd8c43", + "metadata": {}, + "source": [ + "In den oberen beiden Codes sind die einzelnen Ausprägungen aller Attribute aufgelistet, um uns einen ersten Eindruck über die Daten zu verschaffen. Dabei wurden die folgenden Ausprägungen besonders interessant:\n", + "Einer uniquen Anzahl von 591 uniquen Titeln (`title`) stehen 220 Erstautor:innen (`firstAuthor`) gegenüber. Einige der Autor:innen müssen somit mit mehreren Stücken vertreten sein. Obwohl der französischen DramaCorpus dreimal so groß wie der Deutsche ist (`freid: 1560`), ist die Anzahl an Erstautor:innen ähnlich (`frefirstAuthor: 397`). Auch hier müssen einige Autor:innen besonders häufig vertreten sein. \n", + "Im deutschen Datensatz besitzen die Aufführungs-, Erscheinungs-, und Entstehungsjahre, sowie das normalisierte Jahr (`yearNormalized: 182`, `yearPremiered: 193`, `yearPrinted: 181`, `yearWritten: 175`) eine ähnliche Anzahl an Ausprägungen. Dies ist im französischen Datensatz anders (`freyearNormalized: 281`, `freyearPremiered: 646`, `freyearPrinted: 284`, `freyearWritten: 4 `). Dort sieht man größere Unterschiede zwischen den Attributen. Das normalisierte Jahr und das Entstehungsjahr sind in beiden Corpora ähnlich stark ausgeprägt.\n", + "Besonders auffällig ist, dass der französische DramaCorpus weniger Ausprägungen bei den Sprecher:innen allgemein besitzt (deutsch: 82, französisch: 57). Im deutschen DramaCorpus unterscheiden sich die Anzahl an Ausprägungen zwischen den männlichen und weiblichen Sprecher:innen deutlich (`numOfSpeakerMale: 71`, `numOfSpeakerFemale: 27`). Im französischen Datensatz ist das Verhältnis, wenn auch niedriger, ausgewogener (`numOfSpeakerMale: 23`, `numOfSpeakerFemale: 13`). \n", + "\n", + "\n", + "### 2.5 Beschreibung der ausgewählten Attribute <a class=\"anchor\" id=\"seventh-bullet\"></a> \n", + "Aus den oben analysierten 34 Attributen wurde eine Auswahl von zehn relevanten Attributen getroffen. Dabei wurde im Sinne des Forschungsthemas darauf geachtet das Attribut der weiblichen Sprecherinnen sowie der anderen Sprecher:innengruppen zu untersuchen. Die weiteren Attrbute bilden eine möglichst umfangreiche Auswahl an weiteren Parametern, um ein Drama umfassend zu beschreiben und in mögliche Beziehungen zu den Sprecher:innen zu setzen. Die untersuchten Attribute sind `firstAuthor`, `normalizedGenre`, `yearNormalized`, `libretto`, `numOfSpeakers`, `numOfSpeakersMale`, `numOfSpeakersFemale`, `numOfSpeakersUnknown`, `numOfActs` und `wordCountSp`. Im Folgenden werden diese näher betrachtet. \n", + "Die weiter unten stehenden Attribute finden keine tiefergehende Betrachtung, in den folgenden Kapiteln werden diese wiederholt als Referenz herangezogen.\n", + "Für die einzelnen Attribute der Datensätze findet sich keine eigene Dokumentation, weshalb mit den Informationen von der Webseite, dem Rückschluss auf klassische statistische Parameter und die Interpretation der Notation geschlossen werden muss.\n", + "\n", + "- firstAuthor: Name des/r Erstautors/in, nur Nachname, **nominal**, Datentyp: object\n", + "- normalizedGenre: Genre, in diesem Attribut werden die verschiedenen Genrebeschreibungen in drei Klassen zusammengefasst, **nominal**, Datentyp: object\n", + "- yearNormalized: Normalisiertes Jahr, dieses Jahr ist normalerweise das frühere Datum zwischen dem Datum des Erstdrucks und dem Jahr der Uraufführung. Bei Werken die später als 10 Jahre nach ihrer Entstehung veröffentlicht oder aufgeführt werden ist das Jahr der Entstehung das »normalisierte Jahr«. Dies soll eine sinnhafte Einordnung in den Entstehungskontext ermöglichen, (Erläutert unter: [DraCor](https://dracor.org/doc/faq/#normalized-year)) **metrisch**, Datentyp: integer \n", + "- libretto: Ãœberprüfung, ob das Drama ein Libretto ist, **nominal**, Datentyp: boolescher Operator\n", + "- numOfSpeakers: Anzahl aller sprechenden Personen, **metrisch**, Datentyp: integer\n", + "- numOfSpeakersFemale: Anzahl der weiblichen Sprecherinnen, **metrisch**, Datentyp: integer\n", + "- numOfSpeakersMale: Anzahl der männlichen Sprecher, **metrisch**, Datentyp: integer\n", + "- numOfSpeakersUnknown: Anzahl der sprechenden Personen, deren Geschlecht nicht zugeordnet wurde, **metrisch**, Datentyp: integer \n", + "- numOfActs: Anzahl der Akte, **metrisch**, Datentyp: integer\n", + "- wordCountSp: Anzahl an Wörtern, die im Text von Personen gesprochen werden, **metrisch**, Datentyp: integer\n", + "\n", + "\n", + "\n", + "- yearPremiered: Jahr der Erstaufführung, **metrisch**, Datentyp: object. Da das Attribut nicht normalisiert wurde kann es zu einer Notation kommen, in der zwei Jahre mit einem Schrägstrich als Wert festgehalten sind. Dadurch ist die metrische Variable als Zeichenkette gespeichert und muss für die Berechnung umgeformt werden\n", + "- yearPrinted: Jahr der gedruckten Erstausgabe, **metrisch**, Datentyp: float. Ursprünglich war das Attribut im französischen Datensatz als object gespeichert\n", + "- yearWritten: Jahr der Entstehung, **metrisch**, gespeichert als float. Ursprünglich war das Attribut in beiden Datensätzen ebenfalls als object gespeichert. Beide Attribute wurden bereits vor dem einlesen des Datensatzes umgeformt (siehe [Vorbemerkung](#zero-bullet))\n", + "- wordCountText: Anzahl an Wörtern, die im gesamten Text vorkommen (gesprochene Wörter, Regieanweisung und weitere Texte, wie Vor-/Nachwörter, Kommentare usw.), **metrisch**, Datentyp: integer\n", + "- wordCountStage: Anzahl an Wörtern, die in Regieanweisungen verwendet werden, **metrisch**, Datentyp: integer" + ] + }, + { + "cell_type": "markdown", + "id": "a823afa4", + "metadata": {}, + "source": [ + "## 3. Deskriptive Analyse des Datensatzes <a class=\"anchor\" id=\"eighth-bullet\"></a> \n", + "\n", + "Im Folgenden analysieren wir jedes der vorgestellten Attribute für den deutschen und den französischen Datensatz und gehen dabei besonders auf die folgenden Fragen ein:\n", + "* Was sind die größten und die kleinsten Ausprägungen bei den nominalen Daten?\n", + "* Was sind Mittelwert und Standardabweichung bei numerischen Daten?\n", + "* Wie sehen die Verteilungen der Ausprägungen aus?\n", + "\n", + "Je nach Attribut können die folgenden Methoden zu Einsatz kommen:\n", + "* Beschreibungsfunktionen\n", + "* Berechnungsmethoden für statistische Kennzahlen und prozentuale Anteile\n", + "* Datenvisualisierung mittels Histogrammen, Balkendiagramme, PMFs, CDFs und CCDFs\n", + "* Modellierungen von Verteilungen " + ] + }, + { + "cell_type": "markdown", + "id": "df9d320b", + "metadata": {}, + "source": [ + "### 3.1 Beschreibung des Attributs `firstAuthor` <a class=\"anchor\" id=\"nineth-bullet\"></a> \n", + "Zunächst interessiert uns, wer die zehn häufigsten literarischen Vertreter der beiden Corpora sind und in welchem Umfang deren Stücke in den Datensätzen vorkommen." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "05b8250b", + "metadata": {}, + "outputs": [], + "source": [ + "thinkstats2.Hist(gerdrama.firstAuthor)" + ] + }, + { + "cell_type": "markdown", + "id": "438e031f", + "metadata": {}, + "source": [ + "**Code 3.1.01 Auflistung der Ausprägungen des Attributes `firstAuthor` im deutschen DramaCorpus**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ae84fe89", + "metadata": {}, + "outputs": [], + "source": [ + "thinkstats2.Hist(fredrama.firstAuthor)" + ] + }, + { + "cell_type": "markdown", + "id": "0ca78511", + "metadata": {}, + "source": [ + "**Code 3.1.02 Auflistung der Ausprägungen des Attributes `firstAuthor` im französischen DramaCorpus**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5b4c674a", + "metadata": {}, + "outputs": [], + "source": [ + "# Quelle: https://stackoverflow.com/questions/38622082/plot-histogram-of-a-list-of-strings-in-python\n", + "counts = Counter(gerdrama.firstAuthor)\n", + "common = counts.most_common(10)\n", + "labels = [item[0] for item in common]\n", + "number = [item[1] for item in common]\n", + "nbars = len(common)\n", + "\n", + "plt.figure(figsize=(16,4))\n", + "plt.bar(np.arange(nbars), number, tick_label=labels)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "4b1cf143", + "metadata": {}, + "source": [ + "**Code 3.1.03 Darstellung der zehn häufigsten Autoren im deutschen DramaCorpus**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9ebde73d", + "metadata": {}, + "outputs": [], + "source": [ + "# Quelle: https://stackoverflow.com/questions/38622082/plot-histogram-of-a-list-of-strings-in-python\n", + "fcounts = Counter(fredrama.firstAuthor)\n", + "fcommon = fcounts.most_common(10)\n", + "flabels = [item[0] for item in fcommon]\n", + "fnumber = [item[1] for item in fcommon]\n", + "fnbars = len(fcommon)\n", + "\n", + "plt.figure(figsize=(16,4))\n", + "plt.bar(np.arange(fnbars), fnumber, tick_label=flabels)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "3bc3472d", + "metadata": {}, + "source": [ + "**Code 3.1.04 Darstellung der zehn häufigsten Autoren im frazösischen DramaCorpus**" + ] + }, + { + "cell_type": "markdown", + "id": "bc45f697", + "metadata": {}, + "source": [ + "Die in [Kapitel 2.4](#sixth-bullet) aufgestellte These, dass einige Autoren mehrfach vertreten sind, kann bestätigt werden. Wenig überraschend ist das Johann Wolfgang von Goethe mit 23 Stücken (Dies entspricht in etwa der Gesamtzahl seiner geschriebenen Dramen) der häufigste Autor im deutschen DramaCorpus ist - gefolgt von Scheerbart (20) und Hofmannsthal (17). Offensichtlich gibt es eine Häufigkeit von Autoren, dessen Stücke der Klassik zuzuweisen sind. Auch Pierre Corneille - mit 73 Dramen, der häufigste Autor im französischen DramaCorpus - wird der französischen Klassik zugeordnet. Im französichen DramaCorpus haben die häufigsten zehn Autoren mehr veröffentlichte Dramen, dies kann einerseits an den umfangreicheren Datensatz liegen, andererseits sind einige Stücke z.B. von Corneille mehrfach aufgeführt - durch unterschiedliche Inszenierungen oder unterschiedliche Erscheinungsjahre. Tatsächlich hat Corneille ungefähr eine ähnliche Anzahl an Stücken geschrieben wie Goethe." + ] + }, + { + "cell_type": "markdown", + "id": "ffcb9538", + "metadata": {}, + "source": [ + "### 3.2 Beschreibung des Attributs `normalizedGenre` <a class=\"anchor\" id=\"tenth-bullet\"></a> \n", + "Bei der Variablen `normalizedGenre` ist vor allem das Verhältnis der Genre zueinander interessant." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f0837f53", + "metadata": {}, + "outputs": [], + "source": [ + "gergenre = thinkstats2.Hist(gerdrama.normalizedGenre)\n", + "gergenre" + ] + }, + { + "cell_type": "markdown", + "id": "ef7e5416", + "metadata": {}, + "source": [ + "**Code 3.2.01 - Verteilung der Genre im deutschen DramaCorpus**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b5be78ba", + "metadata": {}, + "outputs": [], + "source": [ + "fregenre = thinkstats2.Hist(fredrama.normalizedGenre)\n", + "fregenre" + ] + }, + { + "cell_type": "markdown", + "id": "77e0d180", + "metadata": {}, + "source": [ + "**Code 3.2.02 - Verteilung der Genre im französischen DramaCorpus**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ce1ba852", + "metadata": {}, + "outputs": [], + "source": [ + "plt.subplot(121)\n", + "thinkplot.hist(gergenre, align=\"left\")\n", + "decorate (xlabel='genre (german)', ylabel='count')\n", + "plt.subplot(122)\n", + "thinkplot.hist(fregenre, align=\"left\")\n", + "decorate (xlabel='genre (french)', ylabel='count')\n", + "plt.subplots_adjust(left=0.1,\n", + " bottom=0.1, \n", + " right=1.5, \n", + " top=0.9, \n", + " wspace=0.3, \n", + " hspace=0.35)" + ] + }, + { + "cell_type": "markdown", + "id": "16c6dd0e", + "metadata": {}, + "source": [ + "**Code 3.2.03 - Histogramme der Verteilung der Genre in beiden DramaCorpora**" + ] + }, + { + "cell_type": "markdown", + "id": "495c1a1c", + "metadata": {}, + "source": [ + "Im deutschen DramaCorpus sind 310 Datensätze und im französischen 1114 Datensätze mit Genres verschlagwortet. Etwa ein Drittel der Datensätze in beiden Corpora sind nicht verschlagwortet (NaNs).\n", + "In beiden Corpora ist die Komödie (Comedy) das meist vorkommende Genre. Unterschiede zeigen sich jedoch im Verhältnis zum Genre Tragödie (Tragedy). Im französischen Corpus ist die Tragödie im Verhältnis zur Komödie etwa halb so oft vertreten. Im deutschen Corpus sind es etwa Dreiviertel der Datensätze. Das Mischgenre Tragikomödie (Tragicomedy) nimmt in beiden Fällen den kleinsten Anteil ein. Dennoch kommt es im französischen DramaCorpus im Verhältnis zur Gesamtzahl (ungefähr dreimal mehr) deutlich häufiger vor als im deutschen Corpus." + ] + }, + { + "cell_type": "markdown", + "id": "8bb04e07", + "metadata": {}, + "source": [ + "### 3.3 Beschreibung des Attributs `yearNormalized` <a class=\"anchor\" id=\"eleventh-bullet\"></a> \n", + "Das normalisierte Jahr, dass für das Drama charakteristische Jahr, ist besonders interessant, da es eine solide Anzahl an Ausprägung in beiden Datensätzen enthält - was bereits in [Kapitel 2.4](#sixth-bullet) ersichtlich wurde." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a13cced7", + "metadata": {}, + "outputs": [], + "source": [ + "gerdrama.yearNormalized.min(), gerdrama.yearNormalized.max(), gerdrama.yearNormalized.median(), gerdrama.yearNormalized.mean(), gerdrama.yearNormalized.std(), mode (gerdrama.yearNormalized)" + ] + }, + { + "cell_type": "markdown", + "id": "8b60511e", + "metadata": {}, + "source": [ + "**Code 3.3.01 - statistische Kennzahlen für das Attribut `yearNormalized` im deutschen DramaCorpus in der Reihenfolge Minimalwert, Maximalwert, Median, arithmetisches Mittel, Modalwert**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9b324475", + "metadata": {}, + "outputs": [], + "source": [ + "fredrama.yearNormalized.min(), fredrama.yearNormalized.max(),fredrama.yearNormalized.median(), fredrama.yearNormalized.mean(), fredrama.yearNormalized.std(), mode (fredrama.yearNormalized)" + ] + }, + { + "cell_type": "markdown", + "id": "740379da", + "metadata": {}, + "source": [ + "**Code 3.3.02 - statistische Kennzahlen für das Attribut `yearNormalized` im französischen DramaCorpus in der Reihenfolge Minimalwert, Maximalwert, Median, arithmetisches Mittel, Modalwert**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9ee73b1c", + "metadata": {}, + "outputs": [], + "source": [ + "gerdrama.yearNormalized.value_counts().sort_index() " + ] + }, + { + "cell_type": "markdown", + "id": "330cbf38", + "metadata": {}, + "source": [ + "**Code 3.3.03 - Anzahl jeder Ausprägung für das Attribut `yearNormalized` im deutschen DramaCorpus**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "74e70f57", + "metadata": {}, + "outputs": [], + "source": [ + "fredrama.yearNormalized.sort_index().value_counts()" + ] + }, + { + "cell_type": "markdown", + "id": "f0297f70", + "metadata": {}, + "source": [ + "**Code 3.3.04 - Anzahl jeder Ausprägung für das Attribut `yearNormalized` im französischen DramaCorpus**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1735808d", + "metadata": {}, + "outputs": [], + "source": [ + "plt.subplot(221)\n", + "plt.hist(gerdrama.yearNormalized, align=\"left\", bins=182)\n", + "plt.xlabel ('year normalized (german)', size=16)\n", + "plt.ylabel('count', size=16)\n", + "\n", + "plt.subplot(222)\n", + "plt.hist(fredrama.loc[fredrama.yearNormalized>1170].yearNormalized, align=\"left\", bins=281)\n", + "plt.xlabel ('year normalized (french)', size=16)\n", + "plt.ylabel('count', size=16)\n", + "\n", + "plt.subplot(223)\n", + "plt.hist(gerdrama.yearNormalized, align=\"left\", bins=18)\n", + "plt.xlabel ('year normalized (german)', size=16)\n", + "plt.ylabel('count', size=16)\n", + "plt.xlim ([1650,1950])\n", + "\n", + "plt.subplot(224)\n", + "plt.hist(fredrama.loc[fredrama.yearNormalized>1170].yearNormalized, align=\"left\", bins=28)\n", + "plt.xlabel ('year normalized (french)', size=16)\n", + "plt.ylabel('count', size=16)\n", + "plt.xlim([1650,1950])\n", + "\n", + "plt.subplots_adjust(left=0.1,\n", + " bottom=0.1,\n", + " right=3, \n", + " top=2.5, \n", + " wspace=0.3, \n", + " hspace=0.35)" + ] + }, + { + "cell_type": "markdown", + "id": "9557c8e1", + "metadata": {}, + "source": [ + "**Code 3.3.05 - vier Histogramme zur Analyse der Verteilung des Attributs `yearNormalized` in beiden DramaCorpora**" + ] + }, + { + "cell_type": "markdown", + "id": "67486256", + "metadata": {}, + "source": [ + "Das älteste Drama des französischen DramaCorpus (Minimalwert) wird auf 1170 datiert - das Jüngste (Maximalwert) auf 2017. Im deutschen DramaCorpus ist die Spanne zwischen dem Minimal- und dem Maximalwert etwas geringer. Etwa 350 Jahre liegen zwischen dem ältesten Werk (1650) und dem jüngsten Werk (1947). Zu dem scheinen die Werte im französischen DramaCorpus etwas stärker zu streuen (std ≈ 85,62) als im deutschen DramaCorpus (std ≈ 57,35). Die Ãœberprüfung mit `value_counts` bestätigt, dass die erhöhte Standardabweichung durch einzelne Extremwerte, sogenannte Ausreißer, geprägt ist, von denen der größte der Minimalwert 1170 im französischen DramaCorpus liegt. \n", + "Neben dem Ausschluss dieses Wertes, muss eine Eingrenzung der Zeitabschnitte vorgenommen werden, da die x-Achsen in den oberen beiden Diagrammen zu unterschiedlich sind. In den unteren beiden Histogrammen haben wir deshalb einen Zeitabschnitt von 1650 bis 1950 gewählt, da sich dort die meisten unserer Werte befinden. Um eine genauere Aussage treffen zu können, sind die Werte in Klassen (bins) unterteilt, die die Größe von je einem Zehntel der Anzahl der Ausprägungen beider DramaCorpora besitzen. Lustigweise stellen wir im deutschen DramaCorpus fest, dass es einen Einbruch der Stücke Mitte des 19. Jahrhunderts gab. Dies passt z. B. auf das historische Ereignis der deutschen Einigungskriege (1864-1871) und der Auflösung des Deutschen Bundes (1866). Danach sieht man eine Steigung der Werte um 1900. Der Modalwert liegt bei 1904. Historisch bildete sich hier das deutsche Kaiserreich. Der Modalwert des französischen DramaCorpus liegt bei 1778. Historisch lassen sich hier die Anfänge der Französischen Revolution (1789) verorten. Die Werte sinken in den darauffolgenden Jahren. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e62a37ee", + "metadata": {}, + "outputs": [], + "source": [ + "cdfgeryearN = Cdf(gerdrama.yearNormalized, label='year Normalized (german)')\n", + "cdffreyearN = Cdf(fredrama.yearNormalized, label='year Normalized (french)')\n", + "\n", + "thinkplot.PrePlot(2)\n", + "thinkplot.Cdfs([cdfgeryearN, cdffreyearN])\n", + "decorate (xlabel='year normalized', ylabel='CDF')" + ] + }, + { + "cell_type": "markdown", + "id": "dba8c935", + "metadata": {}, + "source": [ + "**Code 3.3.06 - Die CDFs für das Attribut `yearNormalized` in beiden DramaCorpora**" + ] + }, + { + "cell_type": "markdown", + "id": "7036bf78", + "metadata": {}, + "source": [ + "In der CDF lassen sich noch einmal deutlich die Ausreißer ablesen. Zusätzlich lässt sich erkennen, dass die Entwicklung der in den Corpora enthaltenen Dramen ca. 100 Jahre auseinander liegt. Die Steigung der CDFs verläuft jedoch ähnlich." + ] + }, + { + "cell_type": "markdown", + "id": "83dfd476", + "metadata": {}, + "source": [ + "### 3.4 Beschreibung des Attributs `libretto` <a class=\"anchor\" id=\"twelfth-bullet\"></a> \n", + "Beim booleschen Operator (`libretto`) ist vor allem der prozentuale Anteil der zwei Ausprägungen entscheidend. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5648bf7f", + "metadata": {}, + "outputs": [], + "source": [ + "gerdrama.libretto.describe()" + ] + }, + { + "cell_type": "markdown", + "id": "0256d2aa", + "metadata": {}, + "source": [ + "**Code 3.4.01 - Beschreibung des Attributs `libretto` am Beispiel des deutschen DramaCorpus**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "43a285ef", + "metadata": {}, + "outputs": [], + "source": [ + "gerlibretto = thinkstats2.Hist(gerdrama.libretto)\n", + "gerlibretto" + ] + }, + { + "cell_type": "markdown", + "id": "1bcfe656", + "metadata": {}, + "source": [ + "**Code 3.4.02 - Verteilung der Ausprägungen des Attributs `libretto` im deutschen DramaCorpus**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "98a5f96d", + "metadata": {}, + "outputs": [], + "source": [ + "frelibretto = thinkstats2.Hist(fredrama.libretto)\n", + "frelibretto" + ] + }, + { + "cell_type": "markdown", + "id": "f30bc92a", + "metadata": {}, + "source": [ + "**Code 3.4.03 - Verteilung der Ausprägungen des Attributs `libretto` im französischen DramaCorpus**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f6251ee2", + "metadata": {}, + "outputs": [], + "source": [ + "print(\"\\nAnteil der Libretti im deutschen DramaCorpus:\", percentage(55, 591))\n", + "print(\"\\nAnteil der Libretti im französischen DramaCorpus:\", percentage(58, 1560))" + ] + }, + { + "cell_type": "markdown", + "id": "7b459212", + "metadata": {}, + "source": [ + "**Code 3.4.04 - Berechnung der prozentualen Anteile der Libretti in beiden DramaCorpora**" + ] + }, + { + "cell_type": "markdown", + "id": "e8b44831", + "metadata": {}, + "source": [ + "Wir stellen fest, dass beide DramaCorpora weniger als 10 % Libretti enthalten. Im Vergleich miteinander hat der deutsche Datensatz (≈ 9,3 %) dreimal mehr Libretti als der französische (≈ 3,7 %). " + ] + }, + { + "cell_type": "markdown", + "id": "937036dc", + "metadata": {}, + "source": [ + "### 3.5 Beschreibung der Attribute `numOfSpeakers`, `numOfSpeakersMale`, `numOfSpeakersFemale`, `numOfSpeakersUnknown` <a class=\"anchor\" id=\"thirteenth-bullet\"></a> \n", + "Die vier Attribute, die sich mit den Sprecher:innen beschäftigen, werden gemeinsam analysiert, um die Verteilungen der Sprecher:innen zwischen den beiden DramaCorpora und untereinander betrachten zu können." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "713fb637", + "metadata": {}, + "outputs": [], + "source": [ + "gerspeakers_tab =(gerdrama.loc[:,['numOfSpeakers','numOfSpeakersMale', 'numOfSpeakersFemale', 'numOfSpeakersUnknown']])\n", + "gerspeakers_tab.describe()" + ] + }, + { + "cell_type": "markdown", + "id": "2c78066f", + "metadata": {}, + "source": [ + "**Code 3.5.01 statistische Kennzahlen für die vier Gruppen von Sprecher:innen im deutschen DramaCorpus**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a1589585", + "metadata": {}, + "outputs": [], + "source": [ + "frespeakers_tab =(gerdrama.loc[:,['numOfSpeakers','numOfSpeakersMale', 'numOfSpeakersFemale', 'numOfSpeakersUnknown']])\n", + "frespeakers_tab.describe()" + ] + }, + { + "cell_type": "markdown", + "id": "9fa89706", + "metadata": {}, + "source": [ + "**Code 3.5.02 statistische Kennzahlen für die vier Gruppen von Sprecher:innen im französischen DramaCorpus**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "be941ff4", + "metadata": {}, + "outputs": [], + "source": [ + "print(\"\\nModalwert für `numOfSpeakers` im deutschen Drama:\", mode(gerdrama.numOfSpeakers))\n", + "print(\"\\nModalwert für `numOfSpeakersFemale` im deutschen Drama:\", mode(gerdrama.numOfSpeakersFemale))\n", + "print(\"\\nModalwert für `numOfSpeakersMale` im deutschen Drama:\", mode(gerdrama.numOfSpeakersMale))\n", + "print(\"\\nModalwert für `numOfSpeakersUnknown` im deutschen Drama:\", mode(gerdrama.numOfSpeakersUnknown)) \n", + "print(\"\\nModalwert für `numOfSpeakers` im französischen Drama:\", mode(fredrama.numOfSpeakers))\n", + "print(\"\\nModalwert für `numOfSpeakersFemale` im französischen Drama:\", mode(fredrama.numOfSpeakersFemale))\n", + "print(\"\\nModalwert für `numOfSpeakersMale` im französischen Drama:\", mode(fredrama.numOfSpeakersMale))\n", + "print(\"\\nModalwert für `numOfSpeakersUnknown` im französischen Drama:\", mode(fredrama.numOfSpeakersUnknown))" + ] + }, + { + "cell_type": "markdown", + "id": "050fc4c5", + "metadata": {}, + "source": [ + "**Code 3.5.03 Modalwerte für die vier Gruppen von Sprecher:innen in beiden DramaCorpora**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "136c1612", + "metadata": {}, + "outputs": [], + "source": [ + "cdffemale = Cdf(gerdrama.numOfSpeakersFemale, label= 'female speakers (german)')\n", + "cdfmale = Cdf(gerdrama.numOfSpeakersMale, label = 'male speakers (german)' )\n", + "cdfunknown = Cdf(gerdrama.numOfSpeakersUnknown, label = 'unknown speakers (german)')\n", + "cdfspeakers = Cdf(gerdrama.numOfSpeakers, label = 'speakers (german)')\n", + "frecdffemale = Cdf(fredrama.numOfSpeakersFemale, label= 'female speakers (french)')\n", + "frecdfmale = Cdf(fredrama.numOfSpeakersMale, label = 'male speakers (french)' )\n", + "frecdfunknown = Cdf(fredrama.numOfSpeakersUnknown, label = 'unknown speakers (french)')\n", + "frecdfspeakers = Cdf(fredrama.numOfSpeakers, label = 'speakers (french)')\n", + "\n", + "plt.subplot(121)\n", + "thinkplot.PrePlot (4)\n", + "thinkplot.Cdfs([cdfmale, cdffemale, cdfunknown, cdfspeakers])\n", + "decorate(xlabel='speakers (german)', \n", + " ylabel='CDF',\n", + " xlim = [0,100])\n", + "\n", + "plt.subplot(122)\n", + "thinkplot.PrePlot (4)\n", + "thinkplot.Cdfs([frecdfmale, frecdffemale, frecdfunknown, frecdfspeakers])\n", + "decorate(xlabel='speakers (french)', \n", + " ylabel='CDF',\n", + " xlim = [0,100])\n", + "\n", + "plt.subplots_adjust(left=0.1,\n", + " bottom=0.1, \n", + " right=3, \n", + " top=1.5, \n", + " wspace=0.15, \n", + " hspace=0.35)" + ] + }, + { + "cell_type": "markdown", + "id": "21feb95b", + "metadata": {}, + "source": [ + "**Code 3.5.04 vergleichende CDFs für die vier Gruppen von Sprecher:innen im deutschen und französischen DramaCorpus**" + ] + }, + { + "cell_type": "markdown", + "id": "6683bcd1", + "metadata": {}, + "source": [ + "Im deutschen DramaCorpus lässt sich ein größerer Unterschied zwischen den weiblichen und männlichen Sprechern erkennen. Der Mittelwert der männlichen Sprecher liegt bei fast 17 Sprechern (≈ 16,898) und der Mittelwert der weiblichen bei knapp 5 (≈ 4,863). Der Modalwert beider Corpora zu der Variable `numOfSpeakersFemale` liegt bei 2. Somit ist die Anzahl der weiblichen Sprecherinnen allgemein gering, jedoch ist die männliche Anzahl an Sprechern im französischen DramaCorpus geringer. Der Mittelwert liegt hier bei rund 4 (≈ 4,397). Es lässt sich zu dem noch erkennen, dass die allgemeine Anzahl an Sprecher:innen im französischen DramaCorpus mit maximal 99 Sprechern viel geringer ist als bei dem deutschen DramaCorpus mit maximal 925 Sprechern. Es lassen sich eindeutige Unterschiede zwischen den unterschiedlichen Gruppen erkennen.\n", + "\n", + "In der CDF der deutschen Sprecher:innen lassen sich zwei deutliche Gruppen von Verläufen erkennen. Dabei verlaufen die männlichen Sprechern und Sprecher:innen allgemein flacher, als die Kurven der weiblichen und unbekannten Sprecher:innen. Dies deckt sich mit der in [Kapitel 2.4](#sixth-bullet) gewonnen Erkenntnis, dass die Anzahl an Ausprägungen bei den männlichen und allgemeinen Sprecher:innen um einiges höher und offensichtlich gleichmäßig verteilt ist, sodass es zu einer kontinuierlich steigenden Kurve kommt. Der ähnliche Verlauf der männlichen Sprecherkurve mit den allgemeinen Sprecher:innen lässt dazu vermuten, dass die männlichen Sprecher die Gesamtanzahl ein Sprecher:innen im deutschen DramaCorpus dominieren. In der CDF der französischen Sprecher:innen hingegen verlaufen alle vier Kurven relativ ähnlich, wobei zu erkennen ist, dass sich die männlichen und weiblichen Sprecher:innen im Verlauf kaum unterscheiden. Auch dies deckt sich mit der in [Kapitel 2.4](#sixth-bullet) beobachteten ähnlicheren Anzahl an Ausprägungen. Die folgenden PMFs werden eine genauere Aussage über die Verteilungen der jeweiligen Sprecher:innengruppen treffen können. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "156147b8", + "metadata": {}, + "outputs": [], + "source": [ + "frepmfmale = Pmf(fredrama.numOfSpeakersMale, label = 'male speakers (french)' )\n", + "frepmffemale = Pmf(fredrama.numOfSpeakersFemale, label = 'female speakers (french)' )\n", + "frepmfunknown = Pmf(fredrama.numOfSpeakersUnknown, label = 'unknown speakers (french)' )\n", + "frepmfspeakers = Pmf(fredrama.numOfSpeakers, label = 'speakers (french)' )\n", + "pmfmale = Pmf(gerdrama.numOfSpeakersMale, label = 'male speakers (german)' )\n", + "pmffemale = Pmf(gerdrama.numOfSpeakersFemale, label = 'female speakers (german)' )\n", + "pmfunknown = Pmf(gerdrama.numOfSpeakersUnknown, label = 'unknown speakers (german)' )\n", + "pmfspeakers = Pmf(gerdrama.numOfSpeakers, label = 'speakers (german)' )\n", + "\n", + "plt.subplot(221)\n", + "thinkplot.PrePlot (2)\n", + "thinkplot.Pmfs([pmffemale, frepmffemale])\n", + "decorate(xlabel='number of speakers female', \n", + " ylabel='PMF',\n", + " xlim = [0,16])\n", + "\n", + "plt.subplot(222)\n", + "thinkplot.PrePlot (2)\n", + "thinkplot.Pmfs([pmfmale, frepmfmale])\n", + "decorate(xlabel='number of speakers male', \n", + " ylabel='PMF',\n", + " xlim = [0,30])\n", + "\n", + "plt.subplot(223)\n", + "thinkplot.PrePlot (2)\n", + "thinkplot.Pmfs([pmfunknown, frepmfunknown])\n", + "decorate(xlabel='number of speakers unknown', \n", + " ylabel='PMF',\n", + " xlim = [0,16])\n", + "plt.grid()\n", + "\n", + "plt.subplot(224)\n", + "thinkplot.PrePlot (2)\n", + "thinkplot.Pmfs([pmfspeakers, frepmfspeakers])\n", + "decorate(xlabel='number of speakers', \n", + " ylabel='PMF',\n", + " xlim = [0,30])\n", + "\n", + "plt.subplots_adjust(left=0.1,\n", + " bottom=0.1, \n", + " right=3, \n", + " top=3, \n", + " wspace=0.15, \n", + " hspace=0.35)" + ] + }, + { + "cell_type": "markdown", + "id": "40a57e7c", + "metadata": {}, + "source": [ + "**Code 3.5.05 vergleichende PMFs des deutschen und französischen DramaCorpus für jede Gruppe an Sprecher:innen**" + ] + }, + { + "cell_type": "markdown", + "id": "ea5cb424", + "metadata": {}, + "source": [ + "Die PMFs zeigen uns einen direkten Vergleich der prozentualen Anteile der Sprecher:innen. Somit können wir erneut erkennen, dass die Verteilung der weiblichen Sprecherinnen auch zwischen den beiden DramaCorpora sehr ähnlich verläuft. Dabei vertritt der deutsche DramaCorpus noch mehr Dramen, die auch einen höheren Anteil an Sprecherinnen umfassen. Im Vergleich dazu sind die männlichen Sprecher des deutschen DramaCorpus sehr vielfältig verteilt, sodass es keinen Wert gibt, der besonders oft vertreten ist. Dies sieht im französischen DramaCorpus anders aus. Hier gibt es, ähnlich wie bei den weiblichen Sprecherinnen, einige häufig vertretene Werte. Ebenfalls deutlich wird, dass die französischen Dramen im Allgemeinen eine höhere Anzahl an wenigen Sprechern aufweisen und somit sich auch die PMF der männlichen Sprecher bei wenigen Sprechern ausschlägt. \n", + "Im direkten Vergleich des Attributs `numOfSpeakersUnknown` sehen wir auch hier eine starke Ähnlichkeit zwischen den beiden Corpora. Beide Corpora haben wenige Stücke in denen viele Sprecher:innen vorkommen, denen ein Unknown zugewiesen wurde.\n", + "\n", + "Interessant im französischen DramaCorpus zu sehen ist, dass die allgemeine Verteilung der Sprecher:innen zwischen 6-10 Sprecher:innen liegt, was sich scheinbar auf die weiblichen und männlichen Sprecher:innen aufteilt, deren Anzahl am häufigsten im Bereich 2-3 Sprecherinnen bzw. 4-6 Sprecher liegen.\n", + "Dahingegen gibt es im deutschen DramaCorpus eine hohe Häufigkeit für eine geringe Anzahl an weiblichen Sprecherinnen gegenüber der hohen Häufigkeiten für die vielzahl an männlichen Sprechern. " + ] + }, + { + "cell_type": "markdown", + "id": "f80241ed", + "metadata": {}, + "source": [ + "### 3.5.1 Modellierung der männlichen und weiblichen Sprecher:innen <a class=\"anchor\" id=\"fourteenth-bullet\"></a> \n", + "Die glockenförmige Kurve der PMF bei den männlichen Sprechern im deutschen Datensatz erinnert im weitesten Sinne an eine Normalverteilung. Bei der stark rechtsschiefen Verteilung der weiblichen Sprecherinnen könnte eine Paretoverteilung vorliegen. Beides wird nachfolgend überprüft." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "27620330", + "metadata": {}, + "outputs": [], + "source": [ + "cdfmale = Cdf(gerdrama.numOfSpeakersMale, label='number of speakers male (german)' )\n", + "frecdfmale = Cdf(fredrama.numOfSpeakersMale, label='number of speakers male (french)')\n", + "thinkplot.PrePlot(2)\n", + "thinkplot.Cdfs([cdfmale, frecdfmale])\n", + "\n", + "decorate(xlabel='male speakers (log)', \n", + " ylabel='CDF',\n", + " xscale='log')" + ] + }, + { + "cell_type": "markdown", + "id": "f8337b70", + "metadata": {}, + "source": [ + "**Code 3.5.06 Prüfung auf Lognormalverteilung der männlichen Sprecher**" + ] + }, + { + "cell_type": "markdown", + "id": "eba57bbb", + "metadata": {}, + "source": [ + "Eine Prüfung auf eine klassische Normalverteilung lieferte kein Ergebnis. Die beiden obigen CDFs prüfen auf einer logarithmierten X-Skala, ob eine Lognormalverteilung der Variablen `numOfSpeakersMale` vorliegt. Die typische S-Kurve, die auf eine Normalverteilung der logarithmierten Werte hinweist, lässt sich im deutschen Datensatz bezüglich der männlichen Sprecher direkt erkennen.\n", + "Jedoch trifft dies nicht auf den französischen DramaCorpus zu. Im Folgenden werden die Daten des deutschen DramaCorpus der Variable `numOfSpeakersMale` mit den Modellen einer Lognormalverteilung verglichen." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "64a40579", + "metadata": {}, + "outputs": [], + "source": [ + "values = np.log10(gerdrama.numOfSpeakersMale.loc[~(gerdrama.numOfSpeakersMale == 0)]) # Löschung der Nullwerte \n", + "\n", + "plt.subplot(121)\n", + "MakeNormalModel(values, label='number of male speaker (german)')\n", + "decorate(title=' CDF of the logarithm of male speaker, compared to a normal model', \n", + " xlabel='male speaker', \n", + " ylabel='CDF')\n", + "\n", + "plt.subplot(122)\n", + "MakeNormalPlot(values, label='number of speaker male')\n", + "decorate(title='normal probability plot for the logarithm of male speaker', \n", + " xlabel='Standard normal sample', \n", + " ylabel='speaker male (log10)')\n", + "\n", + "plt.subplots_adjust(left=0.1,\n", + " bottom=0.1, \n", + " right=2.5, \n", + " top=1.1, \n", + " wspace=0.15, \n", + " hspace=0.35)" + ] + }, + { + "cell_type": "markdown", + "id": "3c9b8af0", + "metadata": {}, + "source": [ + "**Code 3.5.07 Vergleich der Werte des Attributs `numOfSpeakersMale` mit dem Modell der Lognormalverteilung**" + ] + }, + { + "cell_type": "markdown", + "id": "a41b2b40", + "metadata": {}, + "source": [ + "Die Verteilung der männlichen Sprecher folgt einer Lognormalverteilung. Die CDF der logarithmierten X-Skala verläuft fast genau wie das Modell. Mit Ausnahme weniger Abweichungen am oberen und unterem Ende der Geraden, liegen die Daten im logarithmierten normal probability plot ebenfalls auf dem Modell der Lognormalverteilung. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "86ca31e3", + "metadata": {}, + "outputs": [], + "source": [ + "cdffemale = Cdf(gerdrama.numOfSpeakersFemale, label='number of speakers female (german)')\n", + "frecdffemale = Cdf(fredrama.numOfSpeakersFemale, label='number od speakers female (french)')\n", + "frecdfmale = Cdf(fredrama.numOfSpeakersMale, label='number of speakers male (french)')\n", + "\n", + "thinkplot.PrePlot(3)\n", + "thinkplot.Cdfs([cdffemale, frecdffemale, frecdfmale],complement=True )\n", + "decorate(xlabel='Female Speakers', \n", + " ylabel='Complementary CDF, log scale',\n", + " xscale='log',\n", + " yscale='log')\n", + "\n", + "plt.subplots_adjust(left=0.1,\n", + " bottom=0.1, \n", + " right=1.4, \n", + " top=1.2, \n", + " wspace=0.15, \n", + " hspace=0.35)" + ] + }, + { + "cell_type": "markdown", + "id": "3c4f56bb", + "metadata": {}, + "source": [ + "**Code 3.5.08 Ãœberprüfung der Paretoverteilung für die `numOfSpeakersFemale`in beiden Corpora, sowie die `numOFSpeakersMale` im französischen DramaCorpus (CCDF auf der log-log-Skala)**" + ] + }, + { + "cell_type": "markdown", + "id": "a26764a3", + "metadata": {}, + "source": [ + "Die Ãœberprüfung, ob die weiblichen Sprecherinnen beider Corpora und die männlichen Sprecher aus dem französischen DramaCorpus einer Paretoverteilung folgen, passiert durch die Darstellung der CCDFs auf der log-log-Skala. Scheinbar lassen sich die Sprecherdaten des französischen DramaCorpus keiner Verteilung zuordnen, am ehesten kann man noch erkennen, dass die Variable `numOfSpeakersFemale` einer Paretoverteilung folgt, da hier eine Gerade zu erkennen ist. Auch die anderen Daten, die hier zu sehen sind, weichen am oberen und vor allem am unteren Ende, stark von der Geraden ab." + ] + }, + { + "cell_type": "markdown", + "id": "a8f2d27d", + "metadata": {}, + "source": [ + "### 3.6 Beschreibung des Attributs `numOfActs` <a class=\"anchor\" id=\"fifteenth-bullet\"></a> \n", + "Die Anzahl der Akte ist eine wichtige Kennzahl, um eine Aussage über die formale Gestaltung eines Dramas zu treffen. Dabei ist es besonders lohnenswert zu untersuchen, ob sich die Dramen der beiden Länder strukturell unterscheiden." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "09e7866c", + "metadata": {}, + "outputs": [], + "source": [ + "gerdrama.numOfActs.min(), gerdrama.numOfActs.max(), gerdrama.numOfActs.median(), gerdrama.numOfActs.std(), mode (gerdrama.numOfActs)" + ] + }, + { + "cell_type": "markdown", + "id": "17654af8", + "metadata": {}, + "source": [ + "**Code 3.6.01 - statistische Kennzahlen für das Attribut `numOfActs` im französischen DramaCorpus**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4ede504a", + "metadata": {}, + "outputs": [], + "source": [ + "fredrama.numOfActs.min(), fredrama.numOfActs.max(), fredrama.numOfActs.median(), fredrama.numOfActs.std(), mode (fredrama.numOfActs)" + ] + }, + { + "cell_type": "markdown", + "id": "37dc08ca", + "metadata": {}, + "source": [ + "**Code 3.6.02 - statistische Kennzahlen für das Attribut `numOfActs` im französischen DramaCorpus**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d4a40a61", + "metadata": {}, + "outputs": [], + "source": [ + "frea = fredrama.numOfActs.sample (n=591)\n", + "frea" + ] + }, + { + "cell_type": "markdown", + "id": "08786070", + "metadata": {}, + "source": [ + "**Code 3.6.03 - Auswahl eines gleich großen Zufallsamples aus dem französischen DramaCorpus (n=591)**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "174de5fd", + "metadata": {}, + "outputs": [], + "source": [ + "bins = np.linspace (0,12,13)\n", + "plt.hist([gerdrama.numOfActs, (frea)], bins, label = ['number of acts (german)', 'number of acts (french)'], align='left')\n", + "decorate(xlabel='number of acts', \n", + " ylabel='count')" + ] + }, + { + "cell_type": "markdown", + "id": "545cb1d2", + "metadata": {}, + "source": [ + "**Code 3.6.04 vergleichendes Histogramm der Verteilung des Attributs `numOfActs` im deutschen und französischen DramaCorpus**" + ] + }, + { + "cell_type": "markdown", + "id": "01b78ed8", + "metadata": {}, + "source": [ + "Der deutsche DramaCorpus enthält Dramen mit einer Anzahl von 0-12 Akten. 0-8 Akte sind im französischen DramaCorpus vorhanden. Der Median liegt im deutschen Corpus bei 3 und unterscheidet sich vom Modalwert, der bei 5 liegt. Im französischen Corpus liegen der Median und der Modalwert bei 1. Beide Corpora haben eine ähnliche Standardabweichung (2,1, 2,0) von zwei Akten. \n", + "Um die Vergleichbarkeit in einem gemeinsamen Histogramm zu gewährleisten, ziehen wir ein Sample von 591 aus dem französischen DramaCorpus. Wir erkennen, dass im deutschen DramaCorpus ein, drei und fünf Akt-Dramen am häufigsten vertreten sind, was sich mit dem klassischen Modell der [Grundformen des Dramas](https://learnattack.de/schuelerlexikon/deutsch/grundformen-des-dramas) deckt, das im deutschen eher zugunsten der 5-Akt-Struktur und im französischen zur 1-Akt-Struktur tendiert. Nicht nachvollziehbar in dieser Darstellung ist die Frage, ob es sich bei der hohen Anzahl an Dramen ohne Akteinteilung um Dramen ohne eine klassische Dramenstruktur handelt oder ob die Zahl Null in diesem Kontext eher der Bedeutung eines NaNs entspricht. Dennoch ist festzuhalten, dass beide Länder sich an einer klassischen Akteinteilung orientieren." + ] + }, + { + "cell_type": "markdown", + "id": "6f686137", + "metadata": {}, + "source": [ + "### 3.7 Beschreibung des Attributs `wordCountSp` <a class=\"anchor\" id=\"sixteenth-bullet\"></a> \n", + "Die Repräsentanz der Figuren drückt sich über die gesprochenen Wörter aus. Zu Beginn der Analyse soll deswegen ein Ãœberblick über die Verteilung der gesprochenen Wörter aufgezeigt werden. Zusätzlich wird bei dieser Variable erstmals die sprachwissenschaftliche Ebene eines Dramas berücksichtigt." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "08b249a7", + "metadata": {}, + "outputs": [], + "source": [ + "gerdrama.wordCountSp.describe (), fredrama.wordCountSp.describe ()" + ] + }, + { + "cell_type": "markdown", + "id": "c2645818", + "metadata": {}, + "source": [ + "**Code 3.7.02 - Beschreibung des Attributs `wordCountSp` im deutschen und französischen DramaCorpus**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "904081da", + "metadata": {}, + "outputs": [], + "source": [ + "plt.subplot(121)\n", + "plt.hist(gerdrama.wordCountSp, bins=300)\n", + "plt.xlabel ('word Count Spoken (german)', size= 16) \n", + "plt.ylabel ('count', size= 16)\n", + "plt.xlim ([0,60000])\n", + "\n", + "plt.subplot(122)\n", + "plt.hist(fredrama.wordCountSp, bins=100)\n", + "plt.xlabel ('word Count Spoken (french)', size=16) \n", + "plt.ylabel ('count', size=16)\n", + "plt.xlim ([0,40000])\n", + "\n", + "plt.subplots_adjust(left=0.1,\n", + " bottom=0.1, \n", + " right=3, \n", + " top=1.3, \n", + " wspace=0.15, \n", + " hspace=0.35)" + ] + }, + { + "cell_type": "markdown", + "id": "53b9a992", + "metadata": {}, + "source": [ + "**Code 3.7.03 zwei Histogramme über die Verteilung des Attributs `wordCountSp` im deutschen und französischen DramaCorpus**" + ] + }, + { + "cell_type": "markdown", + "id": "211c5d55", + "metadata": {}, + "source": [ + "Die beiden Histogramme vergleichen die gesprochenen Wörter im deutschen und französischen DramaCorpus. Um eine Vergleichbarkeit der Grafiken zu gewährleisten, sind die Skalen auf 0 - 60000 im deutschen DramaCorpus und 0 - 40000 im französischen DramaCorpus beschränkt. Zusätzlich wurden bins in Höhe von 300 (deutscher DramaCorpus) und 100 (französischer DramaCorpus) gesetzt.\n", + "Der Maximalwert von `wordCountSp` des deutschen DramaCorpus (max: 172.530) ist mehr als dreimal so hoch wie der französische Maximalwert (max: 50.352). Folglich ist auch die Standardabweichung im Deutschen (std: 11.999 (deutsch), std: 6.562 (französisch)) deutlich höher, da sich die Daten innerhalb eines größeren Intervalls verteilen.\n", + "\n", + "Bei den Histogrammen lassen sich zwei hohe Säulenpaare beim deutschen DramaCorpus und ein hoher Ausschlag im französischen DramaCorpus erkennen. Vermuten lässt sich, dass die häufig vorkommenden Drei- und Fünfakter des deutschen DramaCorpus in den beiden Spitzen des Histogramms widerspiegeln - beide Säulenpaare unterschieden sich voneinander und ordnen sich bei der Skala zwischen 5.000-10.000 und um die 20.000 Wörter ein.\n", + "Wenn wir das mit dem vorigen Attribut `numOfActs` vergleichen, deckt sich die Stelle des hohen Ausschlags wohlmöglich mit den Ein-Akt-Modellen im französischen DramaCorpus, deren Wortzahl in diesem Fall im Bereich von circa +/- 5000 Wörtern liegt. Ein weiterer Anstieg bei einer Wortanzahl > 15000, könnte in diesem Fall der hohen Ausprägungen an Fünfakter entsprechen, die es im französischen DramaCorpus gibt. " + ] + }, + { + "cell_type": "markdown", + "id": "4b6cc911", + "metadata": {}, + "source": [ + "## 4. Beziehungen zwischen den Variablen <a class=\"anchor\" id=\"seventeenth-bullet\"></a> \n", + "Nach der Analyse der einzelnen Attribute werden die Variablen in Beziehung zueinander gesetzt. Im Fokus steht vor allem die Variable `numOfSpeakersFemale`. \n", + "Diese wird mit ausgewählten metrischen Variablen (`yearNormalized`, `numOfSpeakersMale`, `numOfActs` und `wordCountSp`) in jeder Visualisierung verglichen. Dabei liegt eine besondere Gewichtung auf der Beziehung zwischen männlichen und weiblichen Sprecher:innen.\n", + "Die nominalen Variablen `firstAuthor` und `normalizedGenre` werden als dritte Dimension für die Erweiterung der Ergebnisse herangezogen. " + ] + }, + { + "cell_type": "markdown", + "id": "24a57571", + "metadata": {}, + "source": [ + "### 4.1 Beziehungen zwischen dem `yearNormalized` und der `numOfSpeakersFemale`/`numOfSpeakersMale` <a class=\"anchor\" id=\"eighteenth-bullet\"></a> " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2e40bec7", + "metadata": {}, + "outputs": [], + "source": [ + "x= fredrama.yearNormalized\n", + "y= fredrama.numOfSpeakersFemale\n", + "x2= gerdrama.yearNormalized\n", + "y2= gerdrama.numOfSpeakersFemale\n", + "\n", + "def pltcolor(lst): # https://stackoverflow.com/questions/8202605/matplotlib-scatterplot-color-as-a-function-of-a-third-variable,\n", + " cols=[] # answer of Tirtha, from July 16th, 2018\n", + " for l in lst:\n", + " if l=='Corneille':\n", + " cols.append('magenta')\n", + " elif l=='Carmontelle':\n", + " cols.append('yellow')\n", + " \n", + " elif l=='Dancourt':\n", + " cols.append('aqua') \n", + " elif l=='Voltaire':\n", + " cols.append('lime')\n", + " \n", + " elif l=='Marivaux':\n", + " cols.append('blue')\n", + " else:\n", + " cols.append('darkgrey')\n", + " return cols\n", + "\n", + "def pltcolor2(lst):\n", + " cols=[]\n", + " for l in lst:\n", + " if l=='Goethe':\n", + " cols.append('magenta')\n", + " elif l=='Scheerbart':\n", + " cols.append('yellow')\n", + " \n", + " elif l=='Hofmannsthal':\n", + " cols.append('aqua')\n", + " elif l=='Kotzebue':\n", + " cols.append('lime')\n", + " \n", + " elif l=='Schnitzler':\n", + " cols.append('blue')\n", + " else:\n", + " cols.append('darkgrey')\n", + " return cols\n", + "\n", + "\n", + "cols=pltcolor(fredrama.firstAuthor)\n", + "cols2=pltcolor2(gerdrama.firstAuthor)\n", + "\n", + "plt.subplot (121, facecolor='grey')\n", + "\n", + "magenta_p = mp.Patch(color='magenta', label = 'Goethe')\n", + "yellow_p = mp.Patch(color='yellow', label = 'Scheerbart')\n", + "aqua_p = mp.Patch(color='aqua', label = 'Hofmannsthal')\n", + "lime_p = mp.Patch(color='lime', label = 'Kotzebue')\n", + "blue_p = mp.Patch(color='blue', label = 'Schnitzler')\n", + "\n", + "plt.scatter(x=x2,y=y2,s=100, alpha=0.4, c=cols2, label=cols2)\n", + "plt.axis ([1700,1950,0,20])\n", + "plt.xlabel ('normalized Year (german)', fontsize=16)\n", + "plt.ylabel('female Speakers (german)', fontsize=16)\n", + "plt.legend(handles=[magenta_p,yellow_p, aqua_p, lime_p, blue_p])\n", + "plt.grid(True)\n", + "\n", + "plt.subplot (122, facecolor='grey')\n", + "plt.scatter(x=x,y=y,s=100, alpha=0.4, c=cols, label=cols)\n", + "\n", + "fmagenta_p = mp.Patch(color='magenta', label = 'Corneille')\n", + "fyellow_p = mp.Patch(color='yellow', label = 'Carmontelle')\n", + "faqua_p = mp.Patch(color='aqua', label = 'Dancourt')\n", + "flime_p = mp.Patch(color='lime', label = 'Voltaire')\n", + "fblue_p = mp.Patch(color='blue', label = 'Marivaux')\n", + "\n", + "\n", + "plt.axis ([1500,2020,0,20])\n", + "plt.xlabel ('normalized Year (french)', fontsize=16)\n", + "plt.ylabel('female Speakers (french)', fontsize=16)\n", + "plt.legend(handles=[fmagenta_p, fyellow_p, faqua_p, flime_p, fblue_p])\n", + "plt.grid(True)\n", + "\n", + "plt.subplots_adjust(left=0.1,\n", + " bottom=0.1, \n", + " right=3, \n", + " top=1.3, \n", + " wspace=0.15, \n", + " hspace=0.5)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "f0b532e3", + "metadata": {}, + "source": [ + "**Code 4.1.01 Streudiagramme der Beziehung zwischen dem normalisierten Jahr und der Anzahl an weiblichen Sprecherinnen, eingefärbt nach den fünf häufigsten Autoren für den französischen und deutschen DramaCorpus**" + ] + }, + { + "cell_type": "markdown", + "id": "f4667f19", + "metadata": {}, + "source": [ + "Die Verteilung des Attributs `yearNormalized` lässt eine charakteristische Form erkennen, bei der bestimmte zeitliche Epochen besonders ausgeprägt sind. Inwiefern die Zeit einen Einfluss auf die weibliche Repräsentanz haben, soll als Erstes veranschaulicht werden.\n", + "\n", + "Im deutschen Datensatz sehen wir neben einem \"Dramenloch\" Ende des 19. Jahrhunderts, in dem wenige Dramen entstanden sind, eine Konstante bei 0-7 Frauen in den deutschen Dramen in den Jahren 1750 bis 1930. Eine sehr hohe Anzahl an weiblichen Rollen findet sich zwischen den Jahren 1800-1850 sowie um 1900 herum. Auch die Anzahl der Sprecherinnen im französischen Datensatz scheint relativ konstant zu sein. Dabei kommt es über die Jahrhunderte hinweg zu einer konstanten weiblichen Dramenbesetzung mit einer Anzahl von 0-5 Frauen, wobei zu Anfang des 17. Jahrhunderts einige Stücke mit mehr Frauen erkennbar sind. Dabei wirkt es jedoch so, als ob die Datenpunkte für eine höhere Repräsentanz an weiblichen Sprecherinnen in der jüngeren Vergangenheit abnehmen. Dies muss mit einer genaueren Analyse geprüft werden. \n", + "\n", + "Die Einfärbung nach den fünf häufigsten Autoren in beiden Datensätzen verdeutlicht, welche Literaturepochen am stärksten vertreten sind. Im französischen DramaCorpus ist das vor allem die französische Klassik. Im deutschen DramaCorpus wären dies die Zeit unmittelbar nach der Aufklärung zur Zeit der Romantik und Weimarer Klassik und die Zeit zu Anbruch der Moderne. Dies deckt sich mit den Erkenntnissen aus [Kapitel 3.1](#nineth-bullet) Corneille und Goethe, die beiden häufigsten Autoren, sind stehen am Anfang der jeweiligen Zeitachse und besitzen ein breite Verteilung weiblicher Rollen. Im französischen Datensatz hat Dancourt im Verhältnis relativ viele weibliche Figuren hingegen Voltaire und Carmontelle eher eine geringe weibliche Besetzung haben. Im deutschen Datensatz verteilen sich die Anzahl an weiblichen Sprecherinnen relativ gleichmäßig, wobei Scheerbart hier einen eher geringen Anteil an weiblichen Sprecherinnen hat. Der Vorwurf der Markgräfin Wilhelmine aus der [Einleitung](#first-bullet) trifft auf ausgewählte Autoren in beiden DramaCorpora zu, kann die Frage nach der weiblichen Repräsentanz jedoch nicht alleine beantworten. Es müssen weitere Zusammenhänge untersucht werden." + ] + }, + { + "cell_type": "markdown", + "id": "5ab5ee01", + "metadata": {}, + "source": [ + "Im weiteren Schritt wird versucht mithilfe von eingezeichneten Regressionsgeraden zu untersuchen, ob eine lineare Beziehung vorliegt und, ob die französischen Sprecherinnen wirklich abnehmen. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e274173f", + "metadata": {}, + "outputs": [], + "source": [ + "gerfemalejitter = Jitter(gerdrama.numOfSpeakersFemale, 2.5)\n", + "frefemalejitter = Jitter(fredrama.numOfSpeakersFemale, 2.5)\n", + "geryearjitter = Jitter(gerdrama.yearNormalized, 2.5)\n", + "freyearjitter = Jitter(fredrama.yearNormalized, 2.5)\n", + "fremalejitter = Jitter(fredrama.numOfSpeakersMale, 2.5)\n", + "germalejitter = Jitter (gerdrama.numOfSpeakersMale, 2.5)" + ] + }, + { + "cell_type": "markdown", + "id": "67acb323", + "metadata": {}, + "source": [ + "**Code 4.1.02 Definitionen, der zu vergleichenden Attribute und Hinzufügen von Unschärfe (\"Jitter\")**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "73bf4752", + "metadata": {}, + "outputs": [], + "source": [ + "# Regressiongerade für die weiblichen deutschen Sprecherinnen\n", + "subset1 = gerdrama.dropna(subset=['yearNormalized', 'numOfSpeakersFemale'])\n", + "xs1 = subset1['yearNormalized']\n", + "ys1 = subset1['numOfSpeakersFemale']\n", + "res1 = st.linregress(xs1, ys1)\n", + "\n", + "# Regressiongerade für die weiblichen französischen Sprecherinnen\n", + "subset = fredrama.dropna(subset=['yearNormalized', 'numOfSpeakersFemale'])\n", + "xs = subset['yearNormalized']\n", + "ys = subset['numOfSpeakersFemale']\n", + "res = st.linregress(xs, ys)\n", + "\n", + "# Regressiongerade für die männlichen deutschen Sprecher\n", + "subset3 = gerdrama.dropna(subset=['yearNormalized', 'numOfSpeakersMale'])\n", + "xs3 = subset3['yearNormalized']\n", + "ys3 = subset3['numOfSpeakersMale']\n", + "res3 = st.linregress(xs3, ys3)\n", + "\n", + "# Regressiongerade für die männlichen französische Sprecher\n", + "subset2 = fredrama.dropna(subset=['yearNormalized', 'numOfSpeakersMale'])\n", + "xs2 = subset2['yearNormalized']\n", + "ys2 = subset2['numOfSpeakersMale']\n", + "res2 = st.linregress(xs2, ys2)" + ] + }, + { + "cell_type": "markdown", + "id": "d38f9f25", + "metadata": {}, + "source": [ + "**Code 4.1.03 vier lineare Regressionen, die jeweils die männlichen und weiblichen Sprecher:innen in ein Verhältnis mit dem normalisierten Jahr stellen**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "93021984", + "metadata": {}, + "outputs": [], + "source": [ + "fx = np.linspace(1150, 2020) # Sprecherinnen französisch\n", + "fy = res.intercept + res.slope * fx\n", + "fx1 = np.linspace(1640, 2020) # Sprecherinnen deutsch\n", + "fy1 = res1.intercept + res1.slope * fx1\n", + "fx2 = np.linspace(1150,2020) # Sprecher französisch\n", + "fy2 = res2.intercept + res2.slope * fx2\n", + "fx3 = np.linspace(1640,2020) # Sprecher deutsch\n", + "fy3 = res3.intercept + res3.slope * fx3" + ] + }, + { + "cell_type": "markdown", + "id": "c44a84e6", + "metadata": {}, + "source": [ + "**Code 4.1.04 Definitionen der Regressionsgeraden für die Visualisierung**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "062d63af", + "metadata": {}, + "outputs": [], + "source": [ + "plt.subplot(221)\n", + "plt.plot(geryearjitter, gerfemalejitter, 'o', alpha=0.5, markersize=5) \n", + "plt.plot(fx1, fy1, '-', alpha=1, color='lime')\n", + "\n", + "lime_line = mp.Patch (color = 'lime', label = 'Linear regression of the number of Speakers female (german)')\n", + "\n", + "plt.xlabel(\"year normalized\", size=18)\n", + "plt.ylabel(\"number of female speakers (german)\", size=18)\n", + "plt.title ('Relationship normalized year vs. female speakers (german)', size=17)\n", + "plt.legend (handles = [lime_line])\n", + "\n", + "\n", + "plt.subplot(222)\n", + "plt.plot(freyearjitter, frefemalejitter, 'o', alpha=0.5, markersize=5) \n", + "plt.plot(fx, fy, '-', alpha=1, color='lime')\n", + "\n", + "flime_line = mp.Patch (color = 'lime', label = 'Linear regression of the number of Speakers female (french)')\n", + "\n", + "plt.title ('Relationship normalized year vs. female speakers (french)', size=16)\n", + "plt.xlabel(\"year normalized\", size=16)\n", + "plt.ylabel(\"number of female speakers (french)\", size=16)\n", + "plt.legend (handles = [flime_line])\n", + "\n", + "\n", + "plt.subplot(223)\n", + "plt.plot(geryearjitter, germalejitter, 'o', alpha=0.5, markersize=3) \n", + "plt.plot(fx3, fy3, '-', alpha=1, color='magenta')\n", + "plt.plot(fx1, fy1, '-', alpha=1, color='lime')\n", + "\n", + "magenta_line = mp.Patch (color = 'magenta', label = 'Linear regression of the number of Speakers male (german)')\n", + "\n", + "plt.title ('Relationship normalized year vs. male speakers (german)', size=16)\n", + "plt.xlabel(\"year normalized\", size=16)\n", + "plt.ylabel(\"number of male speakers (german)\", size=16)\n", + "plt.legend (handles = [lime_line, magenta_line])\n", + "\n", + "\n", + "plt.subplot(224)\n", + "plt.plot(freyearjitter, fremalejitter, 'o', alpha=0.5, markersize=3) \n", + "plt.plot(fx2, fy2, '-', alpha=1, color='magenta')\n", + "plt.plot(fx, fy, '-', alpha=1, color='lime')\n", + "\n", + "fmagenta_line = mp.Patch (color = 'magenta', label = 'Linear regression of the number of Speakers male (french)')\n", + "\n", + "plt.title ('Relationship normalized year vs. male speakers (french)', size=16)\n", + "plt.xlabel(\"year normalized\", size=16)\n", + "plt.ylabel(\"number of male speakers (french)\", size=16)\n", + "plt.legend (handles = [flime_line, fmagenta_line])\n", + "\n", + "plt.subplots_adjust(left=0.1,\n", + " bottom=0.1, \n", + " right=3, \n", + " top=3, \n", + " wspace=0.15, \n", + " hspace=0.35)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "7f25aa84", + "metadata": {}, + "source": [ + "**Code 4.1.05 vier Streudiagramme zur Visualisierung der Beziehung des normalisierten Jahres und der weiblichen und männlichen Sprecher:innen, jeweils mit integrierter Regressionsgeraden**" + ] + }, + { + "cell_type": "markdown", + "id": "a44de114", + "metadata": {}, + "source": [ + "Das Verhältnis des normalisierten Jahres im Verhältnis zu den weiblichen sowie männlichen Sprechern weist für beide DramaCorpora eine sehr geringe Steigung auf, wobei im deutschen DramaCorpus fast eine Null-Gerade, also kein linearer Zusammenhang zu erkennen ist. Die Tendenz der weiblichen und männlichen Sprecherinnen verläuft dabei in dieselbe Richtung. Die französische Regressionsgerade fällt im Verhältnis zu beiden Sprecher:innen negativ aus und lässt dabei eine schwache Linearität vermuten. Vergleicht man die Regressionslinien der beiden Sprecher:innengruppen, laufen die Geraden im deutschen DramaCorpus kaum merklich auseinander, im französischen jedoch aufeinander zu. Die beobachteten Ergebnisse werden in [Kapitel 5.1.1](#twenty-fourth-bullet) bei der Wahl der Hypothesentests eine größere Rolle spielen." + ] + }, + { + "cell_type": "markdown", + "id": "a9083783", + "metadata": {}, + "source": [ + "### 4.2 Beziehungen zwischen der `numOfSpeakersMale` und der `numOfSpeakersFemale` <a class=\"anchor\" id=\"nineteenth-bullet\"></a> " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "079baf50", + "metadata": {}, + "outputs": [], + "source": [ + "x= fredrama.numOfSpeakersFemale\n", + "y= fredrama.numOfSpeakersMale\n", + "x2= gerdrama.numOfSpeakersFemale\n", + "y2= gerdrama.numOfSpeakersMale\n", + "\n", + "def pltcolor(lst): # https://stackoverflow.com/questions/8202605/matplotlib-scatterplot-color-as-a-function-of-a-third-variable,\n", + " cols=[] # answer of Tirtha, from July 16th, 2018\n", + " for l in lst:\n", + " if l=='Comedy':\n", + " cols.append('blue')\n", + " elif l=='Tragedy':\n", + " cols.append('red')\n", + " \n", + " elif l=='Tragicomedy':\n", + " cols.append('yellow') \n", + " else:\n", + " cols.append('white')\n", + " return cols\n", + "\n", + "\n", + "cols=pltcolor(fredrama.normalizedGenre)\n", + "cols2=pltcolor(gerdrama.normalizedGenre)\n", + "fig = plt.figure()\n", + "\n", + "comedy_p = mp.Patch(color='blue', label = 'Comedy')\n", + "tragedy_p = mp.Patch(color='red', label = 'Tragedy')\n", + "tragicomedy_p = mp.Patch(color='yellow', label = 'Tragicomedy')\n", + "\n", + "plt.subplot(121)\n", + "\n", + "ax = plt.scatter(x=x, y=y, s = 100, c = cols, alpha=0.5)\n", + "plt.xlim(0, 100)\n", + "plt.ylim(0, 100)\n", + "plt.xlabel ('female speakers (french)', fontsize=20)\n", + "plt.ylabel('male speakers (french)', fontsize=20)\n", + "plt.grid(True)\n", + "\n", + "ax_new = fig.add_axes([0.77, 3.7, 1.1, 1.1]) #\n", + "plt.scatter(x=x, y=y, s =300, c = cols, alpha=0.5)\n", + "plt.axis ([0,20,0,20])\n", + "plt.legend(handles=[comedy_p, tragedy_p, tragicomedy_p])\n", + "\n", + "plt.grid(True)\n", + "\n", + "plt.subplot(122)\n", + "plt.scatter(x=x2,y=y2,s=100,c=cols2, alpha=0.5)\n", + "\n", + "plt.axis ([0,100,0,100])\n", + "plt.xlabel ('female speakers (german)', fontsize=20)\n", + "plt.ylabel('male speakers (german)', fontsize=20)\n", + "plt.legend(handles=[comedy_p, tragedy_p, tragicomedy_p])\n", + "\n", + "plt.subplots_adjust(left=0.1,\n", + " bottom=3.3, \n", + " right=4, \n", + " top=5, \n", + " wspace=0.1, \n", + " hspace=0.5)\n", + "plt.grid(True)\n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "id": "a168ecd9", + "metadata": {}, + "source": [ + "**Code 4.2.01 Streudiagramme der Beziehung zwischen der Anzahl an weiblichen und männlichen Sprecher:innen, eingefärbt nach dem `normalizedGenre`**" + ] + }, + { + "cell_type": "markdown", + "id": "7c7f56ca", + "metadata": {}, + "source": [ + "Wir plotten zwei Streudiagramme, um das Verhältnis der männlichen zu den weiblichen Sprecherinnen aufzeigen. Da die Daten im französischen DramaCorpus sehr eng beieinanderliegen, ist es nötig, den zentralen Bereich zu vergrößern. Während im französischen Datensatz eine fast quadratische Anordnung sichtbar wird, bei der es gleichermaßen Stücke mit einer Mehrzahl an weiblichen oder männlichen Sprecher:innen gibt, zeigt sich in den deutschsprachigen Dramen ein deutlich monotoner Zusammenhang. Hierbei übersteigt die Zahl der männlichen Sprecher, die der weiblichen um ein Vielfaches. Als weitere Dimension färben wir die Verteilung nach dem `normalizedGenre`ein. Daran können wir erkennen, dass die deutsche Tragödie männlich dominiert ist. Bis auf wenige Ausnahmen kommt die deutsche Komödie im Allgemeinen mit weniger Sprecher:innen aus. Der Anteil der weiblichen Sprecherinnen ist im Gegensatz zur Tragödie ausgeglichener. Die französische Tragikomödie scheint minimal männlich dominiert zu sein. Im französischen Datensatz erkennen wir einen \"Tragödienknoten\", der die Punkte für die Komödie überlappt. Es scheint eine stärkere Norm im Umfang der Besetzung der Tragödien im französischen DramaCorpus zu geben. In der Komödie scheint dies freier ausgelegt zu sein. \n", + "\n", + "Ein weiterer Plot, in dem die Anzahl an Akten eingefärbt wurde, zeigt, dass sich die französischen Stücke mit mehr Akten tendenziell der Tragödie zuordnen lassen, hingegen die französische Komödie mit wenigen Akten auskommt. Da dieser Plot keine weitere Erkenntnis für die Fragestellung hat, wird dieser nicht ausführlich aufgeführt. Stattdessen konzentrieren wir uns darauf, ob die Anzahl der Akte die Anzahl der weiblichen Sprecherinnen beeinflusst." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3a071007", + "metadata": {}, + "outputs": [], + "source": [ + "# Regressiongerade für die weiblichen und männlichen deutschen Sprecher:innen\n", + "subset4 = gerdrama.dropna(subset=['numOfSpeakersMale', 'numOfSpeakersFemale'])\n", + "xs4 = subset4['numOfSpeakersFemale']\n", + "ys4 = subset4['numOfSpeakersMale']\n", + "res4 = st.linregress(xs4, ys4)\n", + "\n", + "# Regressiongerade für die weiblichen und männlichen französichen Sprecher:innen\n", + "subset5 = fredrama.dropna(subset=['numOfSpeakersMale', 'numOfSpeakersFemale'])\n", + "xs5 = subset5['numOfSpeakersFemale']\n", + "ys5 = subset5['numOfSpeakersMale']\n", + "res5 = st.linregress(xs5, ys5)" + ] + }, + { + "cell_type": "markdown", + "id": "bc031a1a", + "metadata": {}, + "source": [ + "**Code 4.2.02 zwei lineare Regressionen, die jeweils die männlichen Sprecher in ein Verhältnis mit den weiblichen Sprecherinnen stellen**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ec73a4eb", + "metadata": {}, + "outputs": [], + "source": [ + "fx4 = np.linspace(0,100)\n", + "fy4 = res4.intercept + res4.slope * fx4\n", + "fx5 = np.linspace(0,50)\n", + "fy5 = res5.intercept + res5.slope * fx5" + ] + }, + { + "cell_type": "markdown", + "id": "4639f80d", + "metadata": {}, + "source": [ + "**Code 4.2.03 Definitionen der Regressionsgeraden für die Visualisierung**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f1155409", + "metadata": {}, + "outputs": [], + "source": [ + "plt.subplot(121)\n", + "plt.plot(frefemalejitter, fremalejitter, 'o', alpha=0.5, markersize=5) \n", + "plt.plot(fx5, fy5, '-', alpha=1, color='orange')\n", + "\n", + "plt.axis ([0,50,0,50])\n", + "\n", + "line_orange_frespeaker = mp.Patch (color = 'orange', label = 'Linear regression between male and female speaker(french)')\n", + "\n", + "plt.xlabel(\"number of female speakers (french)\", size=18)\n", + "plt.ylabel(\"number of male speakers (french)\", size=18)\n", + "plt.title ('Relationship between male and female speakers (french)', size=16)\n", + "plt.legend (handles = [line_orange_frespeaker])\n", + "\n", + "plt.subplot(122)\n", + "plt.plot(gerfemalejitter, germalejitter, 'o', alpha=0.5, markersize=5) \n", + "plt.plot(fx4, fy4, '-', alpha=1, color='orange')\n", + "\n", + "plt.axis ([0,100,0,100])\n", + "\n", + "line_orange_speaker = mp.Patch (color = 'orange', label = 'Linear regression between male and female speaker(german)')\n", + "\n", + "plt.xlabel(\"number of female speakers (german)\", size=18)\n", + "plt.ylabel(\"number of male speakers (german)\", size=18)\n", + "plt.title ('Relationship between male and female speakers (german)', size=16)\n", + "plt.legend (handles = [line_orange_speaker])\n", + "\n", + "plt.subplots_adjust(left=0.1,\n", + " bottom=0.1, \n", + " right=3.5, \n", + " top=1.5, \n", + " wspace=0.2, \n", + " hspace=0.35)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "96dfad7d", + "metadata": {}, + "source": [ + "**Code 4.2.04 zwei Streudiagramme zur Visualisierung der Beziehung der männlichen Sprecher und der weiblichen Sprecherinnen, jeweils mit integrierter Regressionsgeraden**" + ] + }, + { + "cell_type": "markdown", + "id": "669c6a4c", + "metadata": {}, + "source": [ + "Das Verhältnis zwischen den männlichen und den weiblichen Sprecher:innen weist für beide DramaCorpora eine positive Steigung auf, die beim deutschen DramaCorpus sehr steil verläuft. Viele der Daten passen gut auf die errechnete Regressionsgerade, weshalb sich bereits jetzt ein stark linearer Zusammenhang erkennen lässt. Im französischen DramaCorpus sieht man jedoch, dass nur ein Teil der Regressionslinie durch die clusterförmig angeordneten Daten verläuft. Welche Konsequenzen dies für den Hypothesentest hat, wird weiter in [Kapitel 5.1.2](#twenty-fifth-bullet) erläutert." + ] + }, + { + "cell_type": "markdown", + "id": "35eae67f", + "metadata": {}, + "source": [ + "### 4.3 Beziehungen zwischen der `numOfActs` und der `numOfSpeakersFemale` <a class=\"anchor\" id=\"twentieth-bullet\"></a> " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f9fde0c8", + "metadata": {}, + "outputs": [], + "source": [ + "sp_data2 = gerdrama.dropna(subset=['numOfActs', 'numOfSpeakersFemale'])\n", + "\n", + "fig, ax = plt.subplots(figsize=(12, 5))\n", + "sns.boxplot(ax=ax, x= 'numOfActs', y= 'numOfSpeakersFemale', data=sp_data2, whis=10)\n", + "\n", + "sns.despine(left=True, bottom=True)\n", + "plt.xlabel('number of female speakers (german)', size=16)\n", + "plt.ylabel('')\n", + "plt.ylim(None,40);\n", + "\n", + "sp_data = fredrama.dropna(subset=['numOfActs', 'numOfSpeakersFemale'])\n", + "\n", + "fig, ax = plt.subplots(figsize=(12, 5))\n", + "sns.boxplot(ax=ax, x= 'numOfActs', y= 'numOfSpeakersFemale', data=sp_data, whis=10)\n", + "\n", + "sns.despine(left=True, bottom=True)\n", + "plt.xlabel('number of female speakers (french)', size=16)\n", + "plt.ylabel('')\n", + "plt.ylim(None,30);" + ] + }, + { + "cell_type": "markdown", + "id": "2ca82d18", + "metadata": {}, + "source": [ + "**Code 4.3.01 Zwei Boxplots zur Visualisierung der Beziehung zwischen der Anzahl an Akten und der Anzahl weiblicher Sprecherinnen**" + ] + }, + { + "cell_type": "markdown", + "id": "5cee7468", + "metadata": {}, + "source": [ + "Offensichtlich gibt es je nach Aktzahl eine unterschiedliche Anzahl weiblicher Sprecherinnen. Diese wird jedoch vor allem durch einzelne Ausreißer bestimmt, wie die Antennen beider Boxplots verdeutlichen. Die Höhe der Boxen befindet sich bei allen Akten im selben Bereich, was dafür spricht, dass die Anzahl an weiblichen Sprecherinnen nicht von der Anzahl der Akte beeinflusst wird. Da die Variable `numOfActs` somit nur einen geringen Einfluss auf die weibliche Repräsentanz in den vorhandenen Dramen hat, wird uns die Variable nicht bezüglich unserer Fragestellung weiterhelfen können und bleibt in der weiteren Betrachtung außen vor." + ] + }, + { + "cell_type": "markdown", + "id": "b2be14cf", + "metadata": {}, + "source": [ + "### 4.4 Beziehungen zwischen dem `wordCountSp` und der `numOfSpeakersFemale` <a class=\"anchor\" id=\"twenty-first-bullet\"></a> " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c571f5e9", + "metadata": {}, + "outputs": [], + "source": [ + "x= fredrama.numOfSpeakersFemale\n", + "y= fredrama.wordCountSp\n", + "x2= gerdrama.numOfSpeakersFemale\n", + "y2= gerdrama.wordCountSp\n", + "\n", + "# für eine angenehmere Lesbarkeit wurden die weißen Punkte minimal eingefärbt\n", + "plt.subplot (121, facecolor='grey')\n", + "plt.scatter(x=x2,y=y2,s=100, alpha=0.5, c='lavenderblush') \n", + "plt.axis ([0,20,0,60000])\n", + "plt.xlabel ('female speakers (german)', size=16)\n", + "plt.ylabel('spoken words (german)', size=16)\n", + "\n", + "plt.grid(True)\n", + "\n", + "plt.subplot (122, facecolor='grey')\n", + "plt.scatter(x=x,y=y,s=100, alpha=0.5, c='lavenderblush')\n", + "plt.axis ([0,15,0,60000])\n", + "plt.xlabel ('female speakers (french)', size=16)\n", + "plt.ylabel('spoken words (french)', size=16)\n", + "\n", + "plt.grid(True)\n", + "\n", + "plt.subplots_adjust(left=0.1,\n", + " bottom=0.1, \n", + " right=3.5, \n", + " top=1.5, \n", + " wspace=0.2, \n", + " hspace=0.35)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "caa563bb", + "metadata": {}, + "source": [ + "**Code 4.4.01 Zwei Streudiagramme der Beziehung zwischen der Anzahl an gesprochenen Worten und der Anzahl weiblicher Sprecherinnen für beide DramaCorpora**" + ] + }, + { + "cell_type": "markdown", + "id": "e5a1050f", + "metadata": {}, + "source": [ + "Es lässt sich kaum ein Zusammenhang zwischen der Anzahl weiblicher Sprecherinnen und der Anzahl an gesprochenen Worten beobachten. Dies liegt zum einen daran, dass wir in beiden Corpora eine stabförmige Anordnung finden, die für jede Anzahl an Frauen von wenigen bis zu sehr vielen Worten reicht. Je höher die Anzahl an weiblichen Sprecherinnen wird, desto höher steigt die Anzahl an gesprochenen Worten. Zum anderen tritt dieser Effekt in gleicher Art und Weise für die männlichen Sprecher auf. Das liegt daran, dass es keine Geschlechterunterteilung zu der Variablen `wordCountSp` gibt.\n", + "Diese Unterteilung findet Platz in den Datensätzen zur jeweiligen Dramenbesetzung, die über die Webseite heruntergeladen oder die API abgerufen werden können und wird später in der [Erweiterung](#twenty-eighth-bullet) Erwähnung finden." + ] + }, + { + "cell_type": "markdown", + "id": "d6e70c58", + "metadata": {}, + "source": [ + "Nach den vorangegangenen Vergleichen ließen sich interessante Beziehungen zwischen dem normalisierten Jahr und der Anzahl an männlichen Sprechern gegenüber der weiblichen Sprecherinnen erkennen. Die Variablen `numOfActs` und `wordCountSpoken` lieferten keine Ergebnisse für die Fragestellung. \n", + "\n", + "Die visuellen Beziehung sollen nun im Rahmen von Hypothesentests überprüft werden. Dabei untersuchen wir das Forschungsthema der weiblichen Repräsentanz anhand von zwei Leitfragen:\n", + "\n", + "- Welchen Einfluss hat das normalisierte Jahr auf die Anzahl der weiblichen und der männlichen Sprecherinnen?\n", + "- Welchen Einfluss hat die Anzahl der männlichen Sprecher auf die weiblichen Sprecherinnen?" + ] + }, + { + "cell_type": "markdown", + "id": "f88232e0", + "metadata": {}, + "source": [ + "## 5. Induktive Analyse und Erweiterung <a class=\"anchor\" id=\"twenty-second-bullet\"></a> " + ] + }, + { + "cell_type": "markdown", + "id": "6d4aa6f6", + "metadata": {}, + "source": [ + "Jede der Leitfragen wird mit einem eigenen Hypothesentest beantwortet. Danach wird auf [weitere Korrelationen](#twenty-sixth-bullet) eingegangen. " + ] + }, + { + "cell_type": "markdown", + "id": "20352d76", + "metadata": {}, + "source": [ + "### 5.1 Hypothesentests <a class=\"anchor\" id=\"twenty-third-bullet\"></a> " + ] + }, + { + "cell_type": "markdown", + "id": "44b11b2a", + "metadata": {}, + "source": [ + "### 5.1.1 Das normalisierte Jahr hat (k)einen Einfluss auf die Anzahl an weiblichen/männlichen Sprecher:innen <a class=\"anchor\" id=\"twenty-fourth-bullet\"></a> " + ] + }, + { + "cell_type": "markdown", + "id": "95c8bc75", + "metadata": {}, + "source": [ + "Die Regressionslinie in [Kapitel 4.1](#eighteenth-bullet) für die Beziehung des normalisierten Jahres (`yearNormalized`) mit den weiblichen und männlichen Sprecher:innen im französischen Datensatz zeigt eine schwache lineare Beziehung zwischen den Variablen. Wir können den Pearson-Korrelationskoeffizienten bestimmen. Im deutschen DramaCorpus hingegen war die Steigung fast nicht erkennbar, es ist also nicht von einer linearen Beziehung auszugehen. Trotz mangelnder Linearität kann jedoch ein monotoner Zusammenhang bestehen. Für diese Ãœberprüfung eignet sich der Spearmansche Rangkorrelationskoeffizient.\n", + "\n", + "Folgende Hypothesen werden aufgestellt: \n", + "\n", + "*H.1.0 - Nullhypothese: Das normalisierte Jahr (`year Normalized`) hat keinen Einfluss auf die Anzahl an weiblichen Sprecherinnen.*\n", + "\n", + "*H.2.0 - Nullhypothese: Das normalisierte Jahr (`year Normalized`) hat keinen Einfluss auf die Anzahl an männlichen Sprechern.*" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f89ba97a", + "metadata": {}, + "outputs": [], + "source": [ + "print(\"\\nSpearman-Korrelation und Signifikanz für H 1.0 im deutschen Drama: \\n\", st.spearmanr(gerdrama['yearNormalized'], gerdrama['numOfSpeakersFemale']))\n", + "print(\"\\nPearson-Korrelation und Signifikanz für H.1.0 im französischen Drama: \\n\", st.pearsonr(fredrama['yearNormalized'], fredrama['numOfSpeakersFemale']))\n", + "print(\"\\nSpearman-Korrelation und Signifikanz für H 2.0 im deutschen Drama: \\n\", st.spearmanr(gerdrama['yearNormalized'], gerdrama['numOfSpeakersMale']))\n", + "print(\"\\nPearson-Korrelation und Signifikanz für H.2.0 im französischen Drama: \\n\", st.pearsonr(fredrama['yearNormalized'], fredrama['numOfSpeakersMale']))" + ] + }, + { + "cell_type": "markdown", + "id": "268913e9", + "metadata": {}, + "source": [ + "**Code 5.1.1.01 Spearman-Rangkorrelationskoeffizient / Pearson-Korrelationskoeffient und Signifikanz der Hypothesen H.1.0 und H.2.0 für die beiden DramaCorpora**" + ] + }, + { + "cell_type": "markdown", + "id": "349831a2", + "metadata": {}, + "source": [ + "Wie in [Kapitel 4.1](#eighteenth-bullet) erkennbar, sind die Tendenzen im deutschen DramaCorpus positiv und im französischen DramaCorpus negativ. Die statistische Ãœberprüfung zeigt, dass die Korrelationen für beide Datensätze statistisch signifikant sind (p < 0,05). Dabei weist der deutsche DramaCorpus für beide Sprecher:innengruppen auch für den Spearmanschen Rangkorrelationskoeffizienten eine sehr schwache positive Korrelationen auf (corr ≈ 0,1 (weiblich), corr ≈ 0,092 (männlich)). Laut der von uns herangezogenen [Interpretationstabelle](https://www.medistat.de/glossar/korrelation-assoziation/rangkorrelationskoeffizient-nach-spearman) gilt die negative französischen Korrelation (corr ≈ -0,31 (weiblich), corr ≈ -0.33 (männlich)) als mäßig ausgeprägt und die Nullhypothese kann verworfen werden. Die Ausprägung der Korrelation im deutschen DramaCorpus ist zu gering um die Nullhypothese aufzugeben.\n", + "\n", + "In beiden Datensätzen gibt es einen minimalen Unterschied zwischen den männlichen und weiblichen Sprecher:innen, da wir die Nullhypothese im deutschen Datensatz beibehalten würden, können diese Werte unbeachtet bleiben - Das normalisierte Jahr hat keinen Einfluss auf die beiden Sprecher:innengruppen. Im französischen DramaCorpus korrelieren die männlichen Sprecher etwas stärker negativ, als die weiblichen Sprecher:innen, was auch die minimal steiler abfallende [Regressionsgerade](#eighteenth-bullet) aufzeigt. Man könnte davon ausgehen, wenn mehr männliche Sprecher abnehmen, dass im Verhältnis irgendwann mehr weibliche Sprecher:innen hinzukommen. Diese These ist jedoch aufgrund der mäßigen Korrelation nicht haltbar. Festzuhalten ist jedoch: Mit zunehmendem Jahr sinkt die Anzahl der französischen Sprecher:innen insgesamt." + ] + }, + { + "cell_type": "markdown", + "id": "ba01d6d8", + "metadata": {}, + "source": [ + "### 5.1.2 Die Anzahl der männlichen Sprecher hat (k)einen Einfluss auf die Anzahl der weiblichen Sprecherinnen <a class=\"anchor\" id=\"twenty-fifth-bullet\"></a> " + ] + }, + { + "cell_type": "markdown", + "id": "3daf1e7b", + "metadata": {}, + "source": [ + "Neben der Frage, ob sich die weibliche Repräsentanz im Wandel der Zeit verändert hat, ließ sich in [Kapitel 4.2](#nineteenth-bullet) bereits beobachten, dass auch die Geschlechterverteilung eine Rolle spielt. Als dritte Hypothese soll daher der statistische Zusammenhang zwischen männlichen und weiblichen Sprecher:innen überprüft werden. Da in beiden Datensätzen ein linearer Zusammenhang erkennbar war, der durch zwei unterschiedlich steigende Regressionsgeraden sichtbar wurde, kann in diesem Fall für beide Datensätze der Pearson-Korrelationskoeffizient berechnet werden. \n", + "\n", + "Folgende Hypothese wird aufgestellt:\n", + "\n", + "*H.3.0 - Nullhypothese: Die Anzahl der männlichen Sprecher hat keinen Einfluss auf die Anzahl der weiblichen Sprecherinnen*" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ac6c690c", + "metadata": {}, + "outputs": [], + "source": [ + "print(\"\\nPearson-Korrelation und Signifikanz für H 3.0 im deutschen Drama: \\n\", st.pearsonr(gerdrama['numOfSpeakersMale'], gerdrama['numOfSpeakersFemale']))\n", + "print(\"\\nPearson-Korrelation und Signifikanz für H.3.0 im französischen Drama: \\n\", st.pearsonr(fredrama['numOfSpeakersMale'], fredrama['numOfSpeakersFemale']))" + ] + }, + { + "cell_type": "markdown", + "id": "1a571421", + "metadata": {}, + "source": [ + "**Code 5.1.2.01 Pearson-Korrelationskoeffient und Signifikanz der Hypothese H.3.0 für die beiden DramaCorpora**" + ] + }, + { + "cell_type": "markdown", + "id": "d08c02d9", + "metadata": {}, + "source": [ + "Auch hier sind die beobachteten Zusammenhänge statistisch signifikant (p < 0,05). Zudem kann für beide Datensätze die Nullhypothese zugunsten einer positiven Korrelation verworfen werden. Dabei ist die Korrelation weiblicher und männlicher Sprecher:innen im deutschen DramaCorpus am stärksten ausgeprägt (corr ≈ 0,68). Es lässt sich von einer deutlichen Korrelation sprechen. Die Anzahl der männlichen Sprecher hat einen starken Einfluss auf die weiblichen Sprecherinnen. Im französischen Datensatz ist die Korrelation allerdings schwach (corr ≈ 0,25). Dies hängt, trotz linearer Steigung, mit der quadratischen Anordnung der Daten zusammen. Auf Basis, der in [Kapitel 4.2](#nineteenth-bullet) erzeugten Residuen, lässt sich der R-Squared-Wert berechnen, der anzeigt wie die Regressionsgeraden beschaffen sind." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "09bc4811", + "metadata": {}, + "outputs": [], + "source": [ + "print(\"\\nR-Squared-Wert für`numOfSpeakersMale` und `numOfSpeakersFemale` im deutschen DramaCorpus:\", res4, res4.rvalue**2)\n", + "print(\"\\nR-Squared-Wert für`numOfSpeakersMale` und `numOfSpeakersFemale` im französischen DramaCorpus:\", res5, res5.rvalue**2)" + ] + }, + { + "cell_type": "markdown", + "id": "04e4ef54", + "metadata": {}, + "source": [ + "**Code 5.1.2.02 Parameter der Regression und errechneter R-Squared-Wert für die optimale Regressionsgeraden männlicher und weiblicher Sprecher:innen**" + ] + }, + { + "cell_type": "markdown", + "id": "27fc05be", + "metadata": {}, + "source": [ + "Die ausgeprägte Steigung der Regressionsgeraden im deutschen DramaCorpus zeigt, dass auf eine Frau ein Vielfaches an Männern kommt. Durch die Regressionsgeraden im deutschen Datensatz lassen sich knapp 50 % der Daten erklären (R-Squared-Wert ≈ 0.47).\n", + "Zu Erklärungslücken kommt es im Bereich der hohen Anzahl an männlichen Sprechern, da die Werte hier vereinzelter und verstreuter auftreten. Das lässt sich nicht für den französischen Datensatz sagen. Die Steigung ist deutlich niedriger, hier würden mithilfe der Regression lediglich 6 % der Werte nachvollziehbar werden (R-Squared-Wert ≈ 0.06). Die schwache Korrelation, die mittels Pearson bestimmt wurde sowie die quadratische Anordnung der Daten lässt es zu, dass eher ein monotoner Zusammenhang zwischen den Daten besteht, bei dem viele männliche ebenso auf viele weibliche Sprecherinnen treffen. Dies soll mit dem Rangkorrelationskoeffizienten nach Spearman überprüft werden. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e883b868", + "metadata": {}, + "outputs": [], + "source": [ + "print(\"\\nSpearman-Korrelation und Signifikanz für H.3.0 im französischen Drama: \\n\", st.spearmanr(fredrama['numOfSpeakersMale'], fredrama['numOfSpeakersFemale']))" + ] + }, + { + "cell_type": "markdown", + "id": "c8cbf4f7", + "metadata": {}, + "source": [ + "**Code 5.1.2.03 Spearman-Rangkorrelationskoeffizient und Signifikanz der Hypothese H.3.0 für den französischen DramaCorpus**" + ] + }, + { + "cell_type": "markdown", + "id": "b5aef4e2", + "metadata": {}, + "source": [ + "Die oben aufgestellte These kann hiermit bestätigt werden. Der Zusammenhang ist nicht mehr schwach, sondern mäßig. Für den französischen Datensatz gilt: Die Anzahl an männlichen Sprechern hat einen Einfluss auf die weiblichen Sprecherinnen. Die Beziehung lässt sich besser als monotoner anstatt linearer Zusammenhang beschreiben. Es gilt: Je mehr Männer, desto mehr Frauen. " + ] + }, + { + "cell_type": "markdown", + "id": "55ebfee1", + "metadata": {}, + "source": [ + "### 5.2 weitere Korrelationen <a class=\"anchor\" id=\"twenty-sixth-bullet\"></a> " + ] + }, + { + "cell_type": "markdown", + "id": "d0a374d1", + "metadata": {}, + "source": [ + "Zusätzlich zu den ausführlich untersuchten Hypothesen unserer Forschungsfrage interessiert uns, an welcher Stelle in unseren beiden Datensätzen weitere Zusammenhänge bestehen. Dazu bilden wir kleinere Tabellen, die nur die in dieser Hausarbeit berücksichtigten Variablen einbeziehen und lassen uns die Korrelationen nach Spearman als Heatmaps ausgeben." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e2a4e11e", + "metadata": {}, + "outputs": [], + "source": [ + "gerdrama_small = gerdrama.drop(columns = ['numOfCoAuthors','numOfSegments','yearPrinted','size', 'averageClustering', 'averageDegree','averagePathLength','density', 'numPersonGroups','numOfP', 'numOfL','diameter', 'maxDegree', 'numConnectedComponents', 'wikipediaLinkCount'])\n", + "fredrama_small = fredrama.drop(columns = ['numOfCoAuthors','numOfSegments','yearPrinted','size', 'averageClustering', 'averagePathLength','density', 'numPersonGroups','numOfP', 'numOfL','diameter', 'maxDegree', 'averageDegree','numConnectedComponents', 'wikipediaLinkCount'])" + ] + }, + { + "cell_type": "markdown", + "id": "3c972f39", + "metadata": {}, + "source": [ + "**Code 5.2.01 Löschen, der für die Heatmap irrelevanten Spalten der Metadatentabelle beider DramaCorpora**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0b0611e6", + "metadata": {}, + "outputs": [], + "source": [ + "cormat = gerdrama_small.corr(method='spearman')\n", + "fre_cormat = fredrama_small.corr(method='spearman')" + ] + }, + { + "cell_type": "markdown", + "id": "8ea8923a", + "metadata": {}, + "source": [ + "**Code 5.2.02 Erstellen der Korrelationsmatrizen**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "76d4041e", + "metadata": {}, + "outputs": [], + "source": [ + "sns.heatmap(cormat)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7b7ca929", + "metadata": {}, + "outputs": [], + "source": [ + "sns.heatmap(fre_cormat)" + ] + }, + { + "cell_type": "markdown", + "id": "251446db", + "metadata": {}, + "source": [ + "**Code 5.2.03 Heatmaps mit den Korrelationen der relevanten Attribute im deutschen und französischen DramaCorpus**" + ] + }, + { + "cell_type": "markdown", + "id": "0bdea67c", + "metadata": {}, + "source": [ + "Im französischen Datensatz kommen stärkere negative Korrelationen vor. Hinzu kommt, dass neben dem bereits untersuchten `yearNormalized` auch das `yearWritten` stärker mit den verschiedenen Sprecher:innen (`numOfSpeakers`, `numOfSpeakersMale`, `numOfSpeakersFemale`, `numOfSpeakersUnknown`) korreliert. Im deutschen Datensatz hingegen ist auffällig, dass die männlichen Sprecher (`numOfSpeakersMale`) sehr stark mit der allgemeinen Anzahl an Sprecher:innen (`numOfSpeakers`) korrelieren. Das verdeutlicht, dass ein Anstieg an Sprecher:innen insgesamt immer mit einem Anstieg männlicher Sprecher einhergeht - die männliche Dominanz wird erneut deutlich.\n", + "Das `yearWritten` korreliert im französischen DramaCorpus deutlich mit der Anzahl der gesprochenen Wörter im Drama (`wordCountText`, `wordCountSp`, `wordCountStage`). Zudem lässt sich erkennen, dass die Variable `wordCountStage` im deutschen DramaCorpus stärker mit den Variablen `wordCountText` und `wordCountSp` korreliert, als dies im französische Datensatz geschieht." + ] + }, + { + "cell_type": "markdown", + "id": "99780eaa", + "metadata": {}, + "source": [ + "## 6. Diskussion <a class=\"anchor\" id=\"twenty-seventh-bullet\"></a> \n", + "Die bisherigen Ergebnisse sind nicht ohne eine kritische Betrachtung weiterzuverwenden.\n", + "Zunächst einmal geschieht eine Limitation durch die Datenbasis selbst. Der deutsche DramaCorpus versucht zwar eine möglichst große Datenbasis zu bieten, in der Auswahl der zugrunde liegenden Daten wurde jedoch auch auf die Qualität der technischen Auszeichnung der Volltexte geachtet [(Trilcke, Fischer, Kampkaspar 2015)](doi:10.5281/zenodo.3627710). Das gilt auch für den französischen Datensatz, der das Ergebnis eines einzelnen [Forschungsprojektes](https://www.theatre-classique.fr/index.html) ist und damit ebenfalls keinen repräsentativen Kanon präsentiert. Dennoch konnte kein anderer Datensatz gefunden werden, der eine ähnliche Menge an Theaterstücken und zusätzlich verfügbaren Metadaten liefert.\n", + "\n", + "Zudem ist zu beachten, dass alle Autoren des zugrundeliegenden Datensatzes männlich sind. Die vorliegenden Aussagen repräsentieren also nur den männlichen Blick. Zusätzlich zu den Limitationen im Umfang, kommt es also auch zu einer Limitation der repräsentierten Personen.\n", + "In Zukunft bräuchte es eine Erweiterung des DramaCorpus, damit der Frage nachgegangen werden kann, ob oder wie sich die weiblichen Sprecherinnen in der fortlaufenden Zeit und hinsichtlich der männlichen Sprechern verändern, wenn ein größeren Anteil an weiblich gelesenen Autor:innen enthalten ist.\n", + "\n", + "Zugunsten des Forschungsdesigns wurde zum Teil auf normalisierte Variablen (yearNormalized, normalizedGenre) zurückgegriffen. Diese Daten erleichtern zwar die Mustererkennung, limitieren jedoch die Aussagekraft, da sie bereits eine durch den Datensatzersteller vorgenommene Vereinfachung der ursprünglichen Daten beinhalten. An dieser Stelle könnte leicht ein bewusster oder unbewusster Bias der Datenersteller übernommen werden. Eine nähere Untersuchung der Unterschiede im yearPremiered, yearWritten und yearPrinted lieferte jedoch keine nennenswerten Unterschiede und wird deswegen nicht in dieser Arbeit ausgeführt. Bei den Genres ist diese Ãœberprüfung schwieriger, da es sich um eine nominale Variable handelt. Ein Einsatz von Textanalysemethoden wäre sicher gewinnbringend.\n", + "\n", + "Formal ist zudem zu berücksichtigen, dass die im französischen und deutschen Datensatz enthaltenen Dramen unterschiedliche Zeiträume umfassen. Dies und die teilweise großen Ausreißer machen eine Einschränkung der angezeigten Achsen nötig. Dabei wurde besonders darauf geachtet, dass die formale Begrenzung der Achsen nicht die Aussagekraft verändert, sondern lediglich eine bessere Vergleichbarkeit der verschiedenen Datensätze ermöglicht.\n", + "\n", + "Ziemlich am Anfang ließ sich Wilhelmines Vorwurf gegenüber Voltaire bestätigen, dies ist jedoch noch der Anfang der Erkenntnisse zum Thema weibliche Repräsentanz.\n", + "\n", + "Inhaltlich überrascht uns die Erkenntnis, dass weder die deutschen männlichen noch die weiblichen Sprecher:innen mit dem normalisierten Jahr korrelieren und sich die Anzahl der Sprecher:innen über die Jahre hinweg nicht großartig zu ändern scheint. Spannend ist auch, dass sich die Korrelationsstärken der weiblichen und der männlichen Sprecher:innen nicht voneinander unterscheiden, sondern sich ähnlich innerhalb der Jahrhunderte verhalten. Dies scheint wenig realitätsnah, da die im deutschen DramaCorpus vertretenen Jahre, gleich durch mehrere gesellschaftliche Umbrüche geprägt waren. Zu Anfang der Aufklärung und Ende der Aufklärung existierte ein diverses Frauenbild, sowohl in der Gesellschaft als auch auf der Bühne, das vor allem durch französische Einflüsse geprägt war. Dies führte auf jeden Fall zu einem oft geänderten Bild des Weiblichen auf der Bühne, aber scheinbar nicht dazu, dass sich die Anzahl an weiblichen Sprecherinnen änderte. \n", + "\n", + "Die französischen Dramen hingegen haben im Laufe der Jahre einen Rückgang an Sprecher:innen. Das kann auf mehrere Gründe zurückzuführen sein. Eine Vermutung könnte in der Entwicklung des Einakters liegen, der ab dem 18. Jahrhundert zunehmend an Beliebtheit gewonnen hat, jedoch einen geringeren Umfang und somit weniger Sprecher:innen besitzen kann. Verstärkend könnte auch hinzukommen, dass Pierre Corneille, der häufigste Autor des französischen DramaCorpus, bereits seit dem 17. Jahrhundert forderte, dass keine neuen Figuren nach dem ersten Akt eingeführt werden sollten. Die angeführten Thesen sind nur Vermutungen, da sich die Korrelationen jedoch in den verschiedenen Sprecherinnengruppen ähneln und mäßig stark ausgeprägt sind, halten wir die Ergebnisse eher für valide.\n", + "\n", + "Weiterhin überrascht hat uns die quadratische Clusterform der Korrelation zwischen weiblichen und männlichen Sprecher:innen, die im französischen DramaCorpus besser als monotoner Zusammenhang erklärt werden kann. Warum die Korrelation im Vergleich zum deutschen Datensatz so gering und das mengenmäßige Verhältnis der Rollen auch recht ausgewogen erscheint, ist eine Frage der in einer anderen Arbeit nachgegangen werden sollte.\n", + "Nicht überraschend war die starke Linearität im deutschen Drama Corpus, bei der die Steigung eine deutliche Mehrzahl an männlichen Sprechern gezeigt hat. Die Einfärbung nach Genres und Akten hat diese These näher erläutert, da die männlich dominierten Stücke meist Tragödien mit vielen Akten sind. \n", + "\n", + "Die beobachteten Effekte beziehen sich ausschließlich auf die in den Theatertexten konzipierten Geschlechter- und Rollenzuweisungen. Keine Aussage kann über die tatsächliche Bühnenumsetzung getroffen werden. Zudem erlaubt der quantitative Ansatz keine Aussage über die soziale Rolle der Sprecherinnen – ein Stück mit vielen Frauenrollen muss nicht gleichermaßen ein Stück mit einer hohen Repräsentanz, wenn nicht sogar ein feministisches Stück sein, um differenziertere Aussagen zum weiblichen Sprechanteil zu treffen, müssten weitere Daten generiert werden." + ] + }, + { + "cell_type": "markdown", + "id": "60f1d147", + "metadata": {}, + "source": [ + "## 7. Erweiterung <a class=\"anchor\" id=\"twenty-eighth-bullet\"></a> \n", + "\n", + "Im Rahmen dieses Kapitels gehen wir zwei möglichen Erweiterungen nach, die sich im Laufe der Arbeit als nützlich herausgestellt haben.\n", + "\n", + "Die erste Frage wäre, inwiefern eine hohe Anzahl weiblicher Sprecher:innen auch mit einer hohen Menge an weiblichen Redeanteil einhergeht, daher würden wir gerne eine Schleife implementieren, die eine Reihe von Schritten durchläuft.\n", + "\n", + "Dies wäre mit den weiteren Daten des DraCor-Projektes möglich, kann aufgrund weiterer Limitationen durch den Platz dieser Arbeit und die Kenntnisse der Autorinnen an dieser Stelle nur textlich skizziert werden:\n", + "\n", + "1. Erstellen von vier neuen Spalten in der Metadatentabelle des deutschen DramaCorpus:\n", + "- speechActsFemale\n", + "- speechActsMale\n", + "- wordsSpokenFemale\n", + "- wordsSpokenMale\n", + "z.B. mit dem []-Operator oder df.insert (), jede dieser Spalten sollte numerische Werte fassen können.\n", + "2. Download der list of characters-Tabellen für jedes Theaterstück des DramaCorpus, diese enthalten die für die Analyse relevanten Spalten gender, numOfSpeechActs, numofWords\n", + "3. Einlesen der Daten in das Jupyter-Notebook\n", + "4. Implementieren der Schleife, die die folgenden Schritte durchläuft:\n", + "- einen Datensatz der list of characters- Dateien mithilfe seiner ID aufrufen\n", + "- eine Rechenoperation durchführen bei der für die Ausprägung MALE und FEMALE des Attributs gender jeweils die Gesamtanzahl der SpeechActs und SpokenWords berechnet wirden, z.b. mit der .sum ()-Funktion\n", + "- jede dieser Gesamtzahlen soll in eine neue Variable gespeichert werden, z.B. numofSpeechActs_total\n", + "- jede der neu berechneten Summen soll in einer eigenen Variablen abgespeichert werden\n", + "- mithilfe der ID, die einem Stück zugewiesen wurde, kann das Skript die neu berechneten Werte in die korrekte Zeile des Hauptdatensatzes schreiben.\n", + "5. Wiederholung für jede ID des Datensatzes\n", + "\n", + "\n", + "Als zweites möchten wir auf die Internationalität der Datenbasis im gesamten DraCor-Projekt eingehen und werfen einen Blick auf den russischen und italienischen DramaCorpus. Die Ergänzung weiterer DraCoR-Datensätze kann der weiblichen Repräsentanz in europäischen Dramen einen größeren Stellenwert geben, als es die bisherige Analyse nur zweier Datensätze erlaubt." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "49c9bec4", + "metadata": {}, + "outputs": [], + "source": [ + "italy = mp.Patch(color='orange', label = 'italy')\n", + "russia = mp.Patch(color='cornflowerblue', label = 'russia')\n", + "\n", + "plt.subplot(121)\n", + "plt.scatter(rusdrama.yearNormalized, rusdrama.numOfSpeakersFemale, alpha = 0.5)\n", + "plt.xlabel ('normalized year (italy/russia)', size=18)\n", + "plt.ylabel('female speaker (italy/russia)', size=18)\n", + "plt.legend(handles=[italy, russia])\n", + "\n", + "plt.subplot(121)\n", + "plt.scatter(itadrama.yearNormalized, itadrama.numOfSpeakersFemale, alpha = 0.5)\n", + "\n", + "plt.subplot(122)\n", + "plt.scatter(rusdrama.numOfSpeakersFemale, rusdrama.numOfSpeakersMale, alpha = 0.5)\n", + "plt.xlabel ('female speaker (italy/russia)', size=18)\n", + "plt.ylabel('male speaker (italy/russia)', size=18)\n", + "plt.legend(handles=[italy, russia])\n", + "\n", + "plt.subplot(122)\n", + "plt.scatter(itadrama.numOfSpeakersFemale, itadrama.numOfSpeakersMale, alpha = 0.5)\n", + "\n", + "plt.subplots_adjust(left=0.1,\n", + " bottom=0.1, \n", + " right=3.5, \n", + " top=1.5, \n", + " wspace=0.2, \n", + " hspace=0.35)" + ] + }, + { + "cell_type": "markdown", + "id": "0bd5db39", + "metadata": {}, + "source": [ + "**Code 7.0.01 zwei Streudiagramme der russischen und italienischen DramaCorpora, die die Beziehung zwischen dem `yearNormalized` und `numOfSpeakersFemale` und die Beziehung zwischen den `numOfSpeakersMale` und `numOfSpeakersFemale` aufzeigen**" + ] + }, + { + "cell_type": "markdown", + "id": "a1dadf69", + "metadata": {}, + "source": [ + "Für den russischen und italienischen Datensatz werden die Variablenpaare `yearNormalized`-`numOfSpeakersFemale` und `numOfSpeakersMale`-`numOfSpeakersFemale`betrachtet, die für die ursprünglichen beiden Datensätze bereits ausführlich analysiert und getestet wurden. Hierbei lassen einige interessante Gemeinsamkeiten und Differenzen erkennen. \n", + "\n", + "Die Datensätze besitzen eine große zeitliche Varianz untereinander. Der italienische Datensatz hat eine konstante Menge von 0-10 weiblichen Sprecherinnen - Ausreißer gib es kaum - und besitzt vor allem Stücke des 15. und frühen 16. Jahrhunderts, eine Zeitspanne, die an den französischen Datensatz erinnert. Von der Form her lassen sich zwei Cluster erkennen, in deren Mitte eine Lücke steht. Anders als im \"Dramenloch\" des deutschen Datensatzes ist diese Lücke um ca. 200 Jahre nach vorne verschoben und befindet sich hier zwischen dem 16. und 17. Jahrhundert. Es sieht fast so aus, dass das zweite Cluster kleiner als das erste ist. Der russische Datensatz hingegen weist eine Vielzahl an weiblichen Sprecher:innen auf und führt vor allem Stücke zwischen dem 18. und 19. Jahrhundert - Beginn der Aufklärung - dies ist wohl die kürzeste Zeitspanne bei den bislang betrachteten DramaCorpora.\n", + "\n", + "Die Beziehung zwischen den männlichen und den weiblichen Sprecher:innen ist im italienischen Datensatz ähnlich wie im Französische. Beide besitzen ein Knotenpunkt, indem sich die meisten Datenpunkte befinden. Hingegen zeigt der Russische einige starke Ausreißer in den höheren Sprecher:innenzahlen, die wir bislang vor allem auch im deutschen DramaCorpus vorgefunden haben. Auch in diesen beiden Datensätzen liegt die Anzahl der weiblichen Sprecherinnen nicht über der, der männlichen Sprecher." + ] + }, + { + "cell_type": "markdown", + "id": "d6568f5b", + "metadata": {}, + "source": [ + "## 8. Fazit <a class=\"anchor\" id=\"twenty-nineth-bullet\"></a> \n", + "Die vorangehende Arbeit hat die Repräsentanz der weiblichen Sprecherinnen im deutschen und französischen DramaCorpus untersucht. Hierfür wurden aus insgesamt 34 Attributen der DraCor-Metadaten Tabelle zehn Elemente genauer analysiert, wobei die Variable `numOfSpeakersFemale` für die Fragestellung der Arbeit am bedeutsamsten wurde.\n", + "Dieses Attribut wurde vor allem mit den weiblichen Sprecherinnen zwischen den Variablen `numOfSpeakerMale` und `yearNormalized` in Beziehung gesetzt und auf eine statistische Signifikanz geprüft. \n", + "\n", + "Es gibt einen mäßigen Zusammenhang zwischen den weiblichen Sprecherinnen und dem normalisierten Jahr, bei dem die Anzahl der weiblichen französischen Sprecherinnen in der jüngeren Vergangenheit abnimmt. Dieser Effekt deckt sich mit den Korrelationen, die zwischen dem normalisierten Jahr und den männlichen französischen Sprechern beobachtet werden konnten. Der Rückgang an weiblichen Rollen ist kein Zeichen abnehmender weiblicher Repräsentanz, sondern ein allgemeiner Effekt, der für alle Sprecher:innen gilt und sich zwischen Männern und Frauen kaum unterscheidet. In den Daten des deutschen DramaCorpus kommt es zu keiner relevanten Beziehung zwischen den Variablen. \n", + "\n", + "Im deutschen Datensatz gibt es eine steigende positive Korrelation zwischen der Anzahl der weiblichen und der männlichen Sprecher:innen, wobei die Anzahl der männlichen Sprecher, die auf eine Frauenrolle kommt, um ein Vielfaches höher ist. Dieser Effekt tritt besonders im Genre \"Tragödie\" auf. Im französischen DramaCorpus ist die Verteilung beider Geschlechter, wie eine quadratische Matrix aufgebaut, in welchem die Rollen mit einem leichten Männerüberschuss, eher ausgewogen verteilt sind.\n", + "\n", + "Da vor allem Gesamtsummen zueinander ins Verhältnis gesetzt worden sind, ist die Notwendigkeit einer tiefergehenden Analyse mit zunehmender Beschäftigung immer deutlicher geworden. Ein Vorschlag, wie systematisch neue Daten generiert werden können, wird in [Kapitel 7](#twenty-eighth-bullet) skizziert.\n", + "\n", + "Die vorliegende Arbeit konnte Wilhelmine von Bayreuths Aussage dahingehend bestätigen, dass die weibliche Repräsentanz sich historisch in einer Wechselwirkung mit anderen Parametern bewegt und das deutsche Drama von einer hohen männlichen Dominanz geprägt ist. \n", + "Dabei zeigt der DramaCorpus auf, wie wichtig genau solche Projekte gegenwärtig sind. Denn der Einblick in historische Begebenheiten ermöglicht teilweise auch eine bessere Beurteilung aktueller Geschehnisse und lässt interessante Parallelen zu." + ] + } + ], + "metadata": { + "language_info": { + "name": "python", + "pygments_lexer": "ipython3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}