From cebd116b9e8ef98a71af7090155fb72508435cb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kier=C3=A1n=20Meinhardt?= Date: Thu, 13 Jun 2024 00:05:35 +0200 Subject: [PATCH] quantitative-literaturwissenschaft: some metre exploration, but does it work? --- .../Untitled.ipynb | 242 ++++++++++++++++++ quantitative-literaturwissenschaft/shell.nix | 13 + 2 files changed, 255 insertions(+) create mode 100644 quantitative-literaturwissenschaft/Untitled.ipynb create mode 100644 quantitative-literaturwissenschaft/shell.nix diff --git a/quantitative-literaturwissenschaft/Untitled.ipynb b/quantitative-literaturwissenschaft/Untitled.ipynb new file mode 100644 index 0000000..959c761 --- /dev/null +++ b/quantitative-literaturwissenschaft/Untitled.ipynb @@ -0,0 +1,242 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 60, + "id": "6330d681-02fc-4faa-8fc8-2df53e8207b4", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from typing import List, Tuple, Literal, Generator, TypeVar\n", + "from numpy.typing import NDArray\n", + "import itertools\n", + "import math\n", + "import matplotlib.pyplot as plt\n", + "import random" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "794067ab-a647-4229-8fbd-70eb932f30b5", + "metadata": {}, + "outputs": [], + "source": [ + "A = TypeVar(\"A\")\n", + "\n", + "def get_transitions(series: List[A], step=1) -> List[Tuple[A, A]]:\n", + " cycled_series = series[step:] + series[:step]\n", + " return list(zip(series, cycled_series))\n", + "\n", + "def transition_matrix(transitions: List[Tuple[A, A]]) -> NDArray[np.integer]:\n", + " element, next_element = zip(*transitions)\n", + " crosstab = pd.crosstab(element, next_element)\n", + " return np.matrix(crosstab)\n", + "\n", + "def correlation(matrix: NDArray[np.integer]) -> float:\n", + " if matrix.shape != (2, 2):\n", + " raise ValueError(\"The input matrix must be 2x2\")\n", + "\n", + " main_diagonal_product = matrix[0, 0] * matrix[1, 1]\n", + " other_diagonal_product = matrix[0, 1] * matrix[1, 0]\n", + " difference = main_diagonal_product - other_diagonal_product\n", + "\n", + " row_sums = matrix.sum(axis=1)\n", + " col_sums = matrix.sum(axis=0)\n", + " product_of_sums = np.prod(row_sums) * np.prod(col_sums)\n", + "\n", + " sqrt_product_of_sums = np.sqrt(product_of_sums)\n", + "\n", + " return difference / sqrt_product_of_sums\n", + "\n", + "def correlation_ranges(series: List[A]) -> Generator[float, None, None]:\n", + " step = 0\n", + " while True:\n", + " transitions = get_transitions(series, step=step)\n", + " matrix = transition_matrix(transitions)\n", + " current_correlation = correlation(matrix)\n", + " yield current_correlation\n", + " step += 1" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "id": "7cc57542-1518-40a0-b79a-fa84628317c2", + "metadata": {}, + "outputs": [], + "source": [ + "sonnet = list(14 * ((5 * \"u-\") + \"u\"))\n", + "\n", + "limerick = list(2 * \"u-uu-uu-u\" + 2 * \"u-uu-\" + \"u-uu-uu-u\")\n", + "\n", + "def syllables(k: int=1):\n", + " return random.choices([\"-\", \"u\"], k=k)\n", + "\n", + "def get_sapphic(k: int = 1):\n", + " result = []\n", + " for _ in range(k):\n", + " for _ in range(3):\n", + " sapphic = list(\"-u-\") + syllables() + list(\"-uu-u-\") + syllables()\n", + " result.extend(sapphic)\n", + " adonic = list(\"-uu-\") + syllables()\n", + " result.extend(adonic)\n", + " return result\n", + "\n", + " \n", + "def get_hexameter(k: int = 1):\n", + " result = []\n", + " for _ in range(k):\n", + " hexameter = list(\"\".join(random.choices([\"-uu\", \"--\"], k=5)) + random.choice([\"--\", \"-u\"]))\n", + " result.extend(hexameter)\n", + " return result\n", + "\n", + "def get_phalaecean(k: int = 1):\n", + " result = []\n", + " for _ in range(k):\n", + " phalaecean = list(random.choice([\"--\", \"-u\", \"u-\"]) + \"-uu-u-u-\" + random.choice([\"-\", \"u\"]))\n", + " result.extend(phalaecean)\n", + " return result\n", + "\n", + "def get_elegiac_distich(k: int = 1):\n", + " result = []\n", + " for _ in range(k):\n", + " result.extend(get_hexameter())\n", + " pentameter = list(\"-\" + random.choice([\"-\", \"uu\"]) + \"-\" + random.choice([\"-\", \"uu\"]) + \"-uu-uu\" + random.choice([\"-\", \"u\"]))\n", + " result.extend(pentameter)\n", + " return result\n", + "\n", + "def get_shloka(k: int = 1):\n", + " result = []\n", + " for _ in range(k * 2):\n", + " shloka = list(\"\".join(random.choices([\"u\", \"-\"], k=4)) + \"u--\" + random.choice([\"u\", \"-\"]) + \"\".join(random.choices([\"u\", \"-\"], k=4)) + \"u-u\" + random.choice([\"u\", \"-\"]))\n", + " result.extend(shloka)\n", + " return result" + ] + }, + { + "cell_type": "code", + "execution_count": 112, + "id": "22284666-7675-416c-b5a9-42cf0b5463a4", + "metadata": {}, + "outputs": [], + "source": [ + "farthest_range = 16 + 1\n", + "\n", + "analyze_metre = lambda metre: pd.Series(itertools.islice(correlation_ranges(metre), farthest_range))\n", + "\n", + "df = pd.DataFrame()\n", + "df[\"Hexameters\"] = analyze_metre(get_hexameter(k=700))\n", + "df[\"Limerick\"] = analyze_metre(limerick)\n", + "df[\"Distich\"] = analyze_metre(get_elegiac_distich(k=400))\n", + "df[\"Phalaecean\"] = analyze_metre(get_phalaecean(k=20))\n", + "df[\"Sonnet\"] = analyze_metre(sonnet)\n", + "df[\"14 Sonnets\"] = analyze_metre(14 * sonnet + get_hexameter(k=20) + get_sapphic(k=3))\n", + "df[\"Shloka\"] = analyze_metre(get_shloka(k=50))\n", + "df[\"Sapphic\"] = analyze_metre(get_sapphic(k=8))\n", + "df[\"Random\"] = analyze_metre(syllables(k=400))\n", + "\n", + "lol = list(\"------------------------------------------------------u----------------------------\")\n", + "df[\"lol\"] = analyze_metre(lol)" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "id": "63275c65-ed29-452e-ac1a-7e038fbda2cf", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "matrix([[81, 1],\n", + " [ 1, 0]])" + ] + }, + "execution_count": 108, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(transition_matrix(get_transitions(lol, step=10)))" + ] + }, + { + "cell_type": "code", + "execution_count": 113, + "id": "1e8f3480-243f-4726-8f69-43ed6ca388d8", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/run/user/1000/ipykernel_238674/3830853690.py:19: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n", + " ax.annotate(txt, (summary_df[\"range\"][i], summary_df[\"strength\"][i]))\n" + ] + }, + { + "data": { + "image/png": "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GzMpVn3lAV932xKKjIiIiIoTb7apBr7utvB2s5HfsdzK5M0pPI5AERERfbyYRKmJtpYEDV0sSzoMIiIi+kB4Oo+IiIioEJhEERERERUCkygiIiKiQmASRURERFQITKKIiIiICoFJFBEREVEhMIkiIiIiKgQmUURERESFwCSKiIiIqBA+uTuWCyEAACkpKSUcCRERESkr53s753tcE3xySVRqaioAwN7evoQjISIiIlWlpqbCzMyspMMAAEiEJqV0H4BMJsPDhw9hYmICiURzHhCckpICe3t73L9/H6ampiUdTqnH/lQ/9ql6sT/Vj32qXprWn0IIpKamonz58tDS0ozZSJ/cSJSWlhYqVKhQ0mHky9TUVCMO1o8F+1P92Kfqxf5UP/apemlSf2rKCFQOzUjliIiIiEoZJlFEREREhcAkSkPo6+sjICAA+vr6JR3KR4H9qX7sU/Vif6of+1S92J/v98lNLCciIiJSB45EERERERUCkygiIiKiQmASRURERFQITKKIiIiICoFJVDFZuXIlnJycIJVKUbduXZw4caLA+sePH0fdunUhlUrh7OyM1atXKyz/559/0KVLFzg6OkIikWDZsmXFGL1mUnefrl27Fk2aNEGZMmVQpkwZtGzZEufOnSvOJmgUdffnrl274OnpCXNzcxgZGaF27drYtGlTcTZB46i7T9+2detWSCQSdOzYUc1Ray5192dwcDAkEkmuV3p6enE2Q6MUxzH6/PlzfPPNN7C1tYVUKoWrqyv27t1bXE3QLILUbuvWrUJXV1esXbtWREVFidGjRwsjIyPx77//5ln/zp07wtDQUIwePVpERUWJtWvXCl1dXbFjxw55nXPnzokJEyaI33//XdjY2IilS5d+oNZohuLo0969e4uff/5ZXL58WURHR4v+/fsLMzMz8d9//32oZpWY4ujPY8eOiV27domoqChx+/ZtsWzZMqGtrS3279//oZpVooqjT3Pcu3dP2NnZiSZNmogOHToUc0s0Q3H0Z1BQkDA1NRXx8fEKr09FcfTp69evhaenp2jTpo04efKkuHfvnjhx4oSIjIz8UM0qUUyiikG9evXE0KFDFcqqVasmJk+enGf9iRMnimrVqimUDRkyRDRo0CDP+g4ODp9cElXcfSqEEFlZWcLExERs2LCh6AFruA/Rn0IIUadOHfHdd98VLdhSorj6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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Calculate sum and mean for each column\n", + "max_sum = sums.max() / len(df)\n", + "max_mean = means.max()\n", + "normalized_sums = sums\n", + "normalized_means = means / max_mean\n", + "\n", + "# Create a DataFrame for the normalized sums and means\n", + "summary_df = pd.DataFrame({\n", + " 'strength': df.abs().sum() / len(df), \n", + " 'range': df.abs().mean() / (len(df)/2)}\n", + ")\n", + "\n", + "# Plot scatter plot with normalized axes\n", + "fig, ax = plt.subplots()\n", + "ax.scatter(summary_df[\"range\"], summary_df[\"strength\"])\n", + "\n", + "# Add labels\n", + "for i, txt in enumerate(summary_df.index):\n", + " ax.annotate(txt, (summary_df[\"range\"][i], summary_df[\"strength\"][i]))\n", + "\n", + "# Display the plot\n", + "plt.ylabel('Stärke der metrischen Bindung')\n", + "plt.xlabel('Reichweite der metrischen Bindung')\n", + "plt.title('Normalized Sum vs Normalized Mean of Different Poetic Forms')\n", + "plt.show()\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/quantitative-literaturwissenschaft/shell.nix b/quantitative-literaturwissenschaft/shell.nix new file mode 100644 index 0000000..e9d31e1 --- /dev/null +++ b/quantitative-literaturwissenschaft/shell.nix @@ -0,0 +1,13 @@ +{ pkgs ? import {} }: +pkgs.mkShell { + packages = [ + (pkgs.python3.withPackages (py: [ + py.jupyter + py.numpy + py.pandas + py.matplotlib + py.scikit-learn + py.plotly + ])) + ]; +}