{ "metadata": { "name": "", "signature": "sha256:7f648e2216019f2bd9da0c118c5ffce01d7409438cb8152960c19f0ee776ca5b" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 0. Loading the data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The data was exported from an Excel file, in Open Office, with \"Save As\"->\"Text CSV\", as \"UTF-8\", \"{Tabulator}\" as field seperator and double quotes (\") as text seperator." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%load_ext autoreload\n", "%autoreload 2" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "import helpers.diana\n", "\n", "tier_numbers = {\n", " \"clause_id\": 2,\n", " \"clause_type\": 3,\n", " \"grammatical_relation\": 4,\n", " \"pos_agreement\": 5,\n", " \"last_line\": 7\n", "}\n", "ag = helpers.diana.from_excel(\"data/Hinuq3.csv\", tier_numbers=tier_numbers)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 1. Linear order" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import collections\n", "\n", "verbs = [ 'COP', 'SAY', 'v.tr', 'v.intr', 'v.aff' ]\n", "verb_map = { v: \"V\" for v in verbs}\n", "others = [ 'A', 'S', 'P', 'EXP', 'STIM', 'zero-A', 'zero-S', 'zero-P', 'zero-EXP', 'zero-STIM' ]\n", "search_terms = verbs + others\n", "\n", "word_orders = collections.defaultdict(int)\n", "word_orders_ids = collections.defaultdict(list)\n", "\n", "for wo in helpers.diana.word_orders(ag, search_terms):\n", " word_orders[tuple(wo.word_order)] += 1\n", " word_orders_ids[tuple(wo.word_order)].append(wo.clause_id)\n", "\n", "for word_order, count in word_orders.items():\n", " print(\"{0} => {1}\".format(word_order, count))\n", " if count < 5:\n", " print(\" {1}\".format(word_order, word_orders_ids[word_order]))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "('zero-EXP', 'v.aff', 'STIM') => 8\n", "('zero-A', 'v.tr', 'P') => 42\n", "('COP', 'S') => 33\n", "('zero-EXP', 'STIM', 'v.aff') => 26\n", "('EXP', 'v.aff', 'zero-STIM') => 1\n", " ['clause_id..n#1024']\n", "('S', 'COP') => 94\n", "('v.tr', 'P', 'A') => 3\n", " ['clause_id..n#747', 'clause_id..n#798', 'clause_id..n#772']\n", "('zero-S', 'v.intr') => 273\n", "('STIM', 'v.aff', 'EXP') => 7\n", "('v.intr', 'S') => 142\n", "('A', 'SAY') => 88\n", "('A', 'zero-P', 'v.tr') => 24\n", "('STIM', 'EXP', 'v.aff') => 6\n", "('v.aff', 'EXP', 'STIM') => 10\n", "('zero-S', 'COP') => 2\n", " ['clause_id..n#786', 'clause_id..n#1087']\n", "('A', 'v.tr', 'P') => 38\n", "('COP', 'zero-S') => 1\n", " ['clause_id..n#187']\n", "('v.aff', 'STIM', 'EXP') => 1\n", " ['clause_id..n#1603']\n", "('EXP', 'STIM', 'v.aff') => 28\n", "('zero-STIM', 'v.aff', 'EXP') => 4\n", " ['clause_id..n#41', 'clause_id..n#872', 'clause_id..n#1225', 'clause_id..n#1663']\n", "('P', 'A', 'v.tr') => 25\n", "('v.tr', 'A', 'P') => 10\n", "('zero-A', 'P', 'v.tr') => 253\n", "('A', 'v.tr', 'zero-P') => 1\n", " ['clause_id..n#1278']\n", "('S', 'v.intr') => 406\n", "('zero-A', 'zero-P', 'v.tr') => 94\n", "('zero-P', 'A', 'v.tr') => 4\n", " ['clause_id..n#957', 'clause_id..n#1472', 'clause_id..n#1526', 'clause_id..n#1518']\n", "('COP',) => 1\n", " ['clause_id..n#478']\n", "('zero-EXP', 'zero-STIM', 'v.aff') => 15\n", "('P', 'v.tr', 'A') => 34\n", "('A', 'P', 'v.tr') => 112\n", "('EXP', 'v.aff', 'STIM') => 19\n", "('zero-A', 'SAY') => 22\n", "('zero-P', 'v.tr', 'A') => 4\n", " ['clause_id..n#1465', 'clause_id..n#265', 'clause_id..n#948', 'clause_id..n#1375']\n", "('EXP', 'zero-STIM', 'v.aff') => 9\n", "('SAY', 'A') => 31\n" ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1.1. Are subordinate clauses significantly more often verb-final than main clauses?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "word_orders_main = []\n", "word_orders_main_count = collections.defaultdict(int)\n", "word_orders_sub = []\n", "word_orders_sub_count = collections.defaultdict(int)\n", "main_clause_types = [ \"m\", \"m.rs\" ]\n", "sub_clause_types = [ \"sub\", \"sub.rs\" ]\n", "clause_types = main_clause_types + sub_clause_types\n", "search_terms = verbs + ['A', 'S', 'P', 'EXP', 'STIM']\n", "\n", "for wo in helpers.diana.word_orders(ag, search_terms, verb_map):\n", " if \"V\" in wo.word_order and wo.clause_type in clause_types and len(wo.word_order) > 1:\n", " if wo.clause_type in sub_clause_types:\n", " word_orders_sub.append(wo.word_order)\n", " word_orders_sub_count[tuple(wo.word_order)] += 1\n", " else:\n", " word_orders_main.append(wo.word_order)\n", " word_orders_main_count[tuple(wo.word_order)] += 1 " ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Statistical test" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hypothesis H0: It does not depend on the clause type (sub vs. main) whether the clause unit is verb final." ] }, { "cell_type": "code", "collapsed": false, "input": [ "main_v_fin = 0; main_v_nonfin = 0; sub_v_fin = 0; sub_v_nonfin = 0;\n", "for wo, c in word_orders_main_count.items():\n", " if wo[-1] == \"V\":\n", " main_v_fin += c\n", " else:\n", " main_v_nonfin += c\n", "for wo, c in word_orders_sub_count.items():\n", " if wo[-1] == \"V\":\n", " sub_v_fin += c\n", " else:\n", " sub_v_nonfin += c\n", "cont_table = [ [main_v_fin, main_v_nonfin], [sub_v_fin, sub_v_nonfin] ]\n", "cont_table" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 5, "text": [ "[[734, 346], [343, 38]]" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "import scipy.stats\n", "oddsratio, pvalue = scipy.stats.fisher_exact(cont_table)\n", "pvalue" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ "3.7177758031965255e-19" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We reject the null hypothesis, as the chances of getting a distribution as the observed one are p < 0.05. The clause type affects the verb \"finalness\". In this case subordinate clauses have a sifgnificant higher count of verb final word orders." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1.2. How differ main clauses and subordinate clauses in their word orders?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are are the basic counts:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print(\"Counts for main clauses:\")\n", "for wo, c in word_orders_main_count.items():\n", " print(\"{0} => {1}\".format(wo, c))\n", "print(\"\\nCounts for sub clauses:\")\n", "for wo, c in word_orders_sub_count.items():\n", " print(\"{0} => {1}\".format(wo, c))\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Counts for main clauses:\n", "('S', 'V') => 377\n", "('V', 'STIM', 'EXP') => 1\n", "('V', 'S') => 163\n", "('A', 'P', 'V') => 88\n", "('STIM', 'V', 'EXP') => 4\n", "('V', 'STIM') => 8\n", "('EXP', 'STIM', 'V') => 26\n", "('P', 'A', 'V') => 21\n", "('EXP', 'V', 'STIM') => 19\n", "('V', 'EXP') => 4\n", "('A', 'V') => 106\n", "('STIM', 'V') => 16\n", "('V', 'P') => 24\n", "('A', 'V', 'P') => 35\n", "('V', 'EXP', 'STIM') => 10\n", "('V', 'A') => 35\n", "('EXP', 'V') => 7\n", "('P', 'V') => 87\n", "('V', 'P', 'A') => 3\n", "('P', 'V', 'A') => 30\n", "('V', 'A', 'P') => 10\n", "('STIM', 'EXP', 'V') => 6\n", "\n", "Counts for sub clauses:\n", "('S', 'V') => 123\n", "('STIM', 'V') => 10\n", "('V', 'S') => 10\n", "('P', 'V', 'A') => 4\n", "('STIM', 'V', 'EXP') => 3\n", "('EXP', 'STIM', 'V') => 2\n", "('P', 'A', 'V') => 4\n", "('EXP', 'V') => 3\n", "('A', 'V', 'P') => 3\n", "('P', 'V') => 166\n", "('A', 'V') => 11\n", "('A', 'P', 'V') => 24\n", "('V', 'P') => 18\n" ] } ], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1.3. Where are G, BEN, G, TIME, LOC, ADD usually positioned? (e.g. before or after the verb)" ] }, { "cell_type": "code", "collapsed": false, "input": [ "particles = [ 'G', 'BEN', 'TIME', 'LOC', 'ADD' ]\n", "pos_counts = [ [0, 0] for _ in particles ]\n", "search_terms = verbs + particles\n", "\n", "for wo in helpers.diana.word_orders(ag, search_terms, verb_map):\n", " for i, p in enumerate(particles):\n", " if \"V\" in wo.word_order and p in wo.word_order:\n", " if wo.word_order.index(\"V\") < wo.word_order.index(p):\n", " pos_counts[i][0] += 1\n", " else:\n", " pos_counts[i][1] += 1\n", " \n", "for i, p in enumerate(particles):\n", " print(p)\n", " print(\" Count after verb: {0}\".format(pos_counts[i][0]))\n", " print(\" Count before verb: {0}\".format(pos_counts[i][1]))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "G\n", " Count after verb: 111\n", " Count before verb: 252\n", "BEN\n", " Count after verb: 17\n", " Count before verb: 68\n", "TIME\n", " Count after verb: 9\n", " Count before verb: 99\n", "LOC\n", " Count after verb: 28\n", " Count before verb: 122\n", "ADD\n", " Count after verb: 29\n", " Count before verb: 33\n" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1.4. In main clauses: are BEN arguments significantly more often positioned before the verb than after the verb?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "particles = [ 'BEN', 'G', 'ADD' ]\n", "pos_counts = [ [0, 0] for _ in particles ]\n", "search_terms = verbs + particles\n", "\n", "before = 0\n", "after = 0\n", "for wo in helpers.diana.word_orders(ag, search_terms, verb_map):\n", " for i, p in enumerate(particles):\n", " if wo.clause_type in main_clause_types and \"V\" in wo.word_order and p in wo.word_order:\n", " if wo.word_order.index(\"V\") < wo.word_order.index(p):\n", " pos_counts[i][0] += 1\n", " else:\n", " pos_counts[i][1] += 1\n", "\n", "for i, p in enumerate(particles):\n", " print(p)\n", " print(\" Count after verb: {0}\".format(pos_counts[i][0]))\n", " print(\" Count before verb: {0}\".format(pos_counts[i][1]))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "BEN\n", " Count after verb: 14\n", " Count before verb: 54\n", "G\n", " Count after verb: 103\n", " Count before verb: 151\n", "ADD\n", " Count after verb: 28\n", " Count before verb: 29\n" ] } ], "prompt_number": 9 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Statistical test\n", "\n", "I am using a binomial test here: http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.binom_test.html#scipy.stats.binom_test" ] }, { "cell_type": "code", "collapsed": false, "input": [ "part_sum = [ 0, 0 ]\n", "for i, p in enumerate(particles):\n", " part_sum[0] += pos_counts[i][0]\n", " part_sum[1] += pos_counts[i][1]\n", " print(\"Test for '{0}'\".format(p))\n", " print(scipy.stats.binom_test(pos_counts[i]))\n", "print(\"Test for 'BEN+G+ADD'\")\n", "print(scipy.stats.binom_test(part_sum))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Test for 'BEN'\n", "1.10972567279e-06\n", "Test for 'G'\n", "0.00311070663735\n", "Test for 'ADD'\n", "1.0\n", "Test for 'BEN+G+ADD'\n", "5.62656137825e-06\n" ] } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Except for \"ADD\" it is very unlikely that those counts are random. So the difference for \"BEN\" and \"G\" and \"BEN+G+ADD\" is significant." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1.5. In main and sub clauses: Are BEN + G + ADD significantly more often occurring after the verb than A or P or LOC, A + P or A + P + LOC?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "particles = [ 'BEN', 'G', 'ADD', 'A', 'P', 'LOC' ]\n", "pos_counts = [ [0, 0] for _ in particles ]\n", "search_terms = verbs + particles\n", "\n", "before = 0\n", "after = 0\n", "for wo in helpers.diana.word_orders(ag, search_terms, verb_map):\n", " for i, p in enumerate(particles):\n", " if \"V\" in wo.word_order and p in wo.word_order:\n", " if wo.word_order.index(\"V\") < wo.word_order.index(p):\n", " pos_counts[i][0] += 1\n", " else:\n", " pos_counts[i][1] += 1" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hypothesis H0: It does not depend on the grammatical relation type if a participant appears before or after the verb.\n", "\n", "For the test we use the Fisher exact test, as this test also works for small numbers (http://docs.scipy.org/doc/scipy-0.13.0/reference/generated/scipy.stats.fisher_exact.html)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### BEN + G + ADD vs. A" ] }, { "cell_type": "code", "collapsed": false, "input": [ "BEN_G_ADD = [ 0, 0 ]\n", "BEN_G_ADD[0] = pos_counts[0][0] + pos_counts[1][0] + pos_counts[2][0]\n", "BEN_G_ADD[1] = pos_counts[0][1] + pos_counts[1][1] + pos_counts[2][1]\n", "cont_table = [ BEN_G_ADD, pos_counts[3] ]\n", "cont_table" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 12, "text": [ "[[157, 353], [82, 292]]" ] } ], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "oddsratio, pvalue = scipy.stats.fisher_exact(cont_table)\n", "pvalue" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 13, "text": [ "0.0035761096863860167" ] } ], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We reject the null hpythesis H0 because p < 0.05. The grammatical relation type does have influence on whether a participant appears before or after the verb. In this case, A appears significantly more often before the verb then BEN + G + ADD." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### BEN + G + ADD vs. P" ] }, { "cell_type": "code", "collapsed": false, "input": [ "cont_table = [ BEN_G_ADD, pos_counts[4] ]\n", "cont_table" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 14, "text": [ "[[157, 353], [93, 424]]" ] } ], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [ "oddsratio, pvalue = scipy.stats.fisher_exact(cont_table)\n", "pvalue" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 15, "text": [ "2.0804748208486202e-06" ] } ], "prompt_number": 15 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Again, we reject the null hypothesis because p < 0.05. P occurs more often before the verb then BEN + G + ADD." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### BEN + G + ADD vs. LOC" ] }, { "cell_type": "code", "collapsed": false, "input": [ "cont_table = [ BEN_G_ADD, pos_counts[5] ]\n", "cont_table" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 16, "text": [ "[[157, 353], [28, 122]]" ] } ], "prompt_number": 16 }, { "cell_type": "code", "collapsed": false, "input": [ "oddsratio, pvalue = scipy.stats.fisher_exact(cont_table)\n", "pvalue" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 17, "text": [ "0.0036929308655807127" ] } ], "prompt_number": 17 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Again, we reject the null hypothesis because p < 0.05. LOC occurs more often before the verb then BEN + G + ADD." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### BEN + G + ADD vs. A + P" ] }, { "cell_type": "code", "collapsed": false, "input": [ "A_P = [ 0, 0 ]\n", "A_P[0] = pos_counts[3][0] + pos_counts[4][0]\n", "A_P[1] = pos_counts[3][1] + pos_counts[4][1]\n", "cont_table = [ BEN_G_ADD, A_P ]\n", "cont_table" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 18, "text": [ "[[157, 353], [175, 716]]" ] } ], "prompt_number": 18 }, { "cell_type": "code", "collapsed": false, "input": [ "oddsratio, pvalue = scipy.stats.fisher_exact(cont_table)\n", "pvalue" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 19, "text": [ "3.3374996181763293e-06" ] } ], "prompt_number": 19 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Again, we reject the null hypothesis because p < 0.05. A + P occurs more often before the verb then BEN + G + ADD." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### BEN + G + ADD vs. A + P + LOC" ] }, { "cell_type": "code", "collapsed": false, "input": [ "A_P_LOC = [ 0, 0 ]\n", "A_P_LOC[0] = pos_counts[3][0] + pos_counts[4][0] + pos_counts[5][0]\n", "A_P_LOC[1] = pos_counts[3][1] + pos_counts[4][1] + pos_counts[5][1]\n", "cont_table = [ BEN_G_ADD, A_P_LOC ]\n", "cont_table" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 20, "text": [ "[[157, 353], [203, 838]]" ] } ], "prompt_number": 20 }, { "cell_type": "code", "collapsed": false, "input": [ "oddsratio, pvalue = scipy.stats.fisher_exact(cont_table)\n", "pvalue" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 21, "text": [ "1.4327318331957229e-06" ] } ], "prompt_number": 21 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Again, we reject the null hypothesis because p < 0.05. A + P + LOC occurs more often before the verb then BEN + G + ADD." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1.5.1. In main clauses only: BEN vs. P, ADD vs. P, BEN + ADD vs. P, A vs. P, A vs. S" ] }, { "cell_type": "code", "collapsed": false, "input": [ "particles = [ 'BEN', 'G', 'ADD', 'A', 'P', 'LOC', 'S' ]\n", "pos_counts = [ [0, 0] for _ in particles ]\n", "search_terms = verbs + particles\n", "\n", "before = 0\n", "after = 0\n", "for wo in helpers.diana.word_orders(ag, search_terms, verb_map):\n", " for i, p in enumerate(particles):\n", " if wo.clause_type in main_clause_types and \"V\" in wo.word_order and p in wo.word_order:\n", " if wo.word_order.index(\"V\") < wo.word_order.index(p):\n", " pos_counts[i][0] += 1\n", " else:\n", " pos_counts[i][1] += 1" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 22 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### BEN vs. P" ] }, { "cell_type": "code", "collapsed": false, "input": [ "cont_table = [ pos_counts[0], pos_counts[4] ]\n", "cont_table" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 23, "text": [ "[[14, 54], [72, 226]]" ] } ], "prompt_number": 23 }, { "cell_type": "code", "collapsed": false, "input": [ "oddsratio, pvalue = scipy.stats.fisher_exact(cont_table)\n", "pvalue" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 24, "text": [ "0.63498783480640697" ] } ], "prompt_number": 24 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We cannot reject H0. There is no significant difference between BEN and P if they appear before or after the verb." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### ADD vs. P" ] }, { "cell_type": "code", "collapsed": false, "input": [ "cont_table = [ pos_counts[2], pos_counts[4] ]\n", "cont_table" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 25, "text": [ "[[28, 29], [72, 226]]" ] } ], "prompt_number": 25 }, { "cell_type": "code", "collapsed": false, "input": [ "oddsratio, pvalue = scipy.stats.fisher_exact(cont_table)\n", "pvalue" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 26, "text": [ "0.00031708160303060872" ] } ], "prompt_number": 26 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can reject H0. P occurs more often before the verb then ADD." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### BEN + ADD vs. P" ] }, { "cell_type": "code", "collapsed": false, "input": [ "BEN_ADD = [ 0, 0 ]\n", "BEN_ADD[0] = pos_counts[0][0] + pos_counts[2][0]\n", "BEN_ADD[1] = pos_counts[0][1] + pos_counts[2][1]\n", "cont_table = [ BEN_ADD, pos_counts[4] ]\n", "cont_table" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 27, "text": [ "[[42, 83], [72, 226]]" ] } ], "prompt_number": 27 }, { "cell_type": "code", "collapsed": false, "input": [ "oddsratio, pvalue = scipy.stats.fisher_exact(cont_table)\n", "pvalue" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 28, "text": [ "0.054556656373823037" ] } ], "prompt_number": 28 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We cannot reject H0. There is no significant difference between BEN + ADD vs. P if they appear before or after the verb. Although the evidence is on the edge, so with more data it might be significant." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### A vs. P" ] }, { "cell_type": "code", "collapsed": false, "input": [ "cont_table = [ pos_counts[3], pos_counts[4] ]\n", "cont_table" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 29, "text": [ "[[78, 250], [72, 226]]" ] } ], "prompt_number": 29 }, { "cell_type": "code", "collapsed": false, "input": [ "oddsratio, pvalue = scipy.stats.fisher_exact(cont_table)\n", "pvalue" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 30, "text": [ "0.92553990155932386" ] } ], "prompt_number": 30 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We cannot reject H0. There is no significant difference between A and P if they appear before or after the verb." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### A vs. S" ] }, { "cell_type": "code", "collapsed": false, "input": [ "cont_table = [ pos_counts[3], pos_counts[5] ]\n", "cont_table" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 31, "text": [ "[[78, 250], [27, 97]]" ] } ], "prompt_number": 31 }, { "cell_type": "code", "collapsed": false, "input": [ "oddsratio, pvalue = scipy.stats.fisher_exact(cont_table)\n", "pvalue" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 32, "text": [ "0.70898128553715467" ] } ], "prompt_number": 32 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We cannot reject H0. There is no significant difference between A and S if they appear before or after the verb." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1.6. SAY: Does SAY have more often an overtly expressed A than all other transitive verbs?\n", "\n", "Hypothesis 1 (H0): It does not depend on the type of the verb (SAY vs. others) if the A is expressed ouvertly.\n", "\n", "For the test we use the Fisher exact test, as this test also works for small numbers (http://docs.scipy.org/doc/scipy-0.13.0/reference/generated/scipy.stats.fisher_exact.html)." ] }, { "cell_type": "code", "collapsed": false, "input": [ "other_verbs = [ 'COP', 'v.tr', 'v.intr', 'v.aff' ]\n", "search_terms = other_verbs + [ 'SAY', 'A', 'zero-A' ]\n", "verb_map = { v: \"V\" for v in other_verbs }\n", "SAY_counts = [ 0, 0 ]\n", "others_counts = [ 0, 0 ]\n", "for wo in helpers.diana.word_orders(ag, search_terms, verb_map):\n", " if 'SAY' in wo.word_order:\n", " if 'A' in wo.word_order:\n", " SAY_counts[0] += 1\n", " elif 'zero-A' in wo.word_order:\n", " SAY_counts[1] += 1\n", " if 'V' in wo.word_order:\n", " if 'A' in wo.word_order:\n", " others_counts[0] += 1\n", " elif 'zero-A' in wo.word_order:\n", " others_counts[1] += 1" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 33 }, { "cell_type": "code", "collapsed": false, "input": [ "cont_table = [ SAY_counts, others_counts ]\n", "cont_table" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 34, "text": [ "[[119, 22], [255, 389]]" ] } ], "prompt_number": 34 }, { "cell_type": "code", "collapsed": false, "input": [ "oddsratio, pvalue = scipy.stats.fisher_exact(cont_table)\n", "pvalue" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 35, "text": [ "3.5525785729571192e-23" ] } ], "prompt_number": 35 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We reject the null hypothesis because p < 0.05. A is more often ouvert in SAY sentences than in any other sentence with other verb types." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1.7. Does the A of say more often follow its verb than the A of all other transitive verbs?\n", "\n", "H0: It does not depend on the verb type (A vs. others) if A is before or after the verb." ] }, { "cell_type": "code", "collapsed": false, "input": [ "search_terms = other_verbs + [ 'SAY', 'A' ]\n", "SAY_counts = [ 0, 0 ]\n", "others_counts = [ 0, 0 ]\n", "for wo in helpers.diana.word_orders(ag, search_terms, verb_map):\n", " if 'SAY' in wo.word_order and 'A' in wo.word_order:\n", " if wo.word_order.index(\"SAY\") < wo.word_order.index(\"A\"):\n", " SAY_counts[0] += 1\n", " else:\n", " SAY_counts[1] += 1\n", " if \"V\" in wo.word_order and \"A\" in wo.word_order:\n", " if wo.word_order.index(\"V\") < wo.word_order.index(\"A\"):\n", " others_counts[0] += 1\n", " else:\n", " others_counts[1] += 1" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 36 }, { "cell_type": "code", "collapsed": false, "input": [ "cont_table = [ SAY_counts, others_counts ]\n", "cont_table" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 37, "text": [ "[[31, 88], [51, 204]]" ] } ], "prompt_number": 37 }, { "cell_type": "code", "collapsed": false, "input": [ "oddsratio, pvalue = scipy.stats.fisher_exact(cont_table)\n", "pvalue" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 38, "text": [ "0.22697216348643534" ] } ], "prompt_number": 38 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We cannot reject the null hypothesis as p > 0.05. There is no significant difference in SAY vs. other verb sentences between A before and after the verb." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1.8. Does the overt A of SAY more often precede or follow the verb (and what are the frequencies)?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "print(\"A after SAY: {0}\".format(SAY_counts[0]))\n", "print(\"A before SAY: {0}\".format(SAY_counts[1]))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "A after SAY: 31\n", "A before SAY: 88\n" ] } ], "prompt_number": 39 }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 2. Agreement" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.1. How frequent is agreement in texts (in main and subordinate clauses)?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "verbs = [ 'v.tr', 'v.intr', 'v.aff' ]\n", "agreements = [0, 0]; noagreements = [0, 0];\n", "for wo in helpers.diana.word_orders(ag, verbs, with_agreement = True):\n", " for agr in wo.agreement:\n", " if wo.clause_type in sub_clause_types:\n", " if agr == \"noagr\":\n", " noagreements[0] += 1\n", " else:\n", " agreements[0] += 1\n", " else:\n", " if agr == \"noagr\":\n", " noagreements[1] += 1\n", " else:\n", " agreements[1] += 1\n", "\n", "print(\"I found {0} verbs with and {1} verbs without agreement.\".format(agreements[0]+agreements[1], noagreements[0]+noagreements[1]))\n", "print(\"In main clauses: I found {0} verbs with and {1} verbs without agreement.\".format(agreements[1], noagreements[1]))\n", "print(\"In sub clauses: I found {0} verbs with and {1} verbs without agreement.\".format(agreements[0], noagreements[0]))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "I found 1253 verbs with and 346 verbs without agreement.\n", "In main clauses: I found 838 verbs with and 222 verbs without agreement.\n", "In sub clauses: I found 415 verbs with and 124 verbs without agreement.\n" ] } ], "prompt_number": 40 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.2. Do non-agreeing verbs occur more often with overtly expressed S or P or STIM arguments than agreeing verbs (because the agreement prefixes are enough to track the reference)?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hypothesis H0: It does not depend on the verbal agreement if S (or P or STIM) arguments are expressed overtly." ] }, { "cell_type": "code", "collapsed": false, "input": [ "search_terms = verbs + [ 'S', 'P', 'STIM', 'zero-S', 'zero-P', 'zero-STIM' ]\n", "cont_table_S = [ [0, 0], [0, 0] ]\n", "cont_table_P = [ [0, 0], [0, 0] ]\n", "cont_table_STIM = [ [0, 0], [0, 0] ]\n", "cont_table_S_P_STIM = [ [0, 0], [0, 0] ]\n", "for wo in helpers.diana.word_orders(ag, search_terms, with_agreement = True):\n", " agreeing = 0\n", " if len(wo.word_order) != len(wo.agreement):\n", " continue\n", " for i, w in enumerate(wo.word_order):\n", " if w in verbs:\n", " if wo.agreement[i] == \"noagr\":\n", " agreeing = 1\n", " if \"zero-S\" in wo.word_order:\n", " cont_table_S[agreeing][0] += 1\n", " cont_table_S_P_STIM[agreeing][0] += 1\n", " elif \"S\" in wo.word_order:\n", " cont_table_S[agreeing][1] += 1\n", " cont_table_S_P_STIM[agreeing][1] += 1\n", " if \"zero-P\" in wo.word_order:\n", " cont_table_P[agreeing][0] += 1\n", " cont_table_S_P_STIM[agreeing][0] += 1\n", " elif \"P\" in wo.word_order:\n", " cont_table_P[agreeing][1] += 1\n", " cont_table_S_P_STIM[agreeing][1] += 1\n", " if \"zero-STIM\" in wo.word_order:\n", " cont_table_STIM[agreeing][0] += 1\n", " cont_table_S_P_STIM[agreeing][0] += 1\n", " elif \"STIM\" in wo.word_order:\n", " cont_table_STIM[agreeing][1] += 1\n", " cont_table_S_P_STIM[agreeing][1] += 1" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 41 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Statistical test for S" ] }, { "cell_type": "code", "collapsed": false, "input": [ "cont_table_S" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 42, "text": [ "[[237, 603], [39, 72]]" ] } ], "prompt_number": 42 }, { "cell_type": "code", "collapsed": false, "input": [ "oddsratio, pvalue = scipy.stats.fisher_exact(cont_table_S)\n", "pvalue" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 43, "text": [ "0.14782310141174806" ] } ], "prompt_number": 43 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We cannot reject the null hypothesis, because p > 0.05. It does not depend on the verbal agreement whether S is expressed overtly." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Statistical test for P" ] }, { "cell_type": "code", "collapsed": false, "input": [ "cont_table_P" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 44, "text": [ "[[70, 344], [57, 173]]" ] } ], "prompt_number": 44 }, { "cell_type": "code", "collapsed": false, "input": [ "oddsratio, pvalue = scipy.stats.fisher_exact(cont_table_P)\n", "pvalue" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 45, "text": [ "0.017638070366621489" ] } ], "prompt_number": 45 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can reject the hypothesis as p < 0.05. It does depend on verbal agreement whether P is expressed overtly. P is more often expressed overtly when there is agreement on the verb." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Staistical test for STIM" ] }, { "cell_type": "code", "collapsed": false, "input": [ "cont_table_STIM" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 46, "text": [ "[[28, 101], [1, 4]]" ] } ], "prompt_number": 46 }, { "cell_type": "code", "collapsed": false, "input": [ "oddsratio, pvalue = scipy.stats.fisher_exact(cont_table_STIM)\n", "pvalue" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 47, "text": [ "1.0" ] } ], "prompt_number": 47 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here it is not possible to calculate, as the number of non-agreements is too low. Practically all verbs that have a STIM argument show agreement, whether the argument is expressed or not." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Statistical test for S + P + STIM" ] }, { "cell_type": "code", "collapsed": false, "input": [ "cont_table_S_P_STIM" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 48, "text": [ "[[335, 1048], [97, 249]]" ] } ], "prompt_number": 48 }, { "cell_type": "code", "collapsed": false, "input": [ "oddsratio, pvalue = scipy.stats.fisher_exact(cont_table_S_P_STIM)\n", "pvalue" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 49, "text": [ "0.14533478714180809" ] } ], "prompt_number": 49 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We cannot reject the hypothesis as p > 0.05. It does not depend on the verbal agreement whether S + P + STIM is expressed overtly." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.3. Differences between the prefixes or not?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.3.1. How often do the prefixes occur at all in texts" ] }, { "cell_type": "code", "collapsed": false, "input": [ "verbs = [ 'v.tr', 'v.intr', 'v.aff' ]\n", "agreement_sum = collections.defaultdict(int)\n", "for wo in helpers.diana.word_orders(ag, verbs, with_agreement = True):\n", " for agr in wo.agreement:\n", " agreement_sum[agr] += 1\n", "for agr, count in agreement_sum.items():\n", " print(\"{} => {}\".format(agr, count))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "r-5 => 200\n", "o-1 => 354\n", "noagr => 346\n", "y-2 => 161\n", "r-nhpl => 51\n", "r-hpl => 2\n", "b-hpl => 116\n", "b-3 => 316\n", "y-4 => 53\n" ] } ], "prompt_number": 75 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.3.2. How often do the prefixes occur with overt arguments" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We check here first, if the agreement makes sense, i.e. whether the class marker on P, S or STIM is the same as on the verb. All other cases are printed with clause ID, to check manually." ] }, { "cell_type": "code", "collapsed": false, "input": [ "verbs = [ 'v.tr', 'v.intr', 'v.aff' ]\n", "search_terms = verbs + [ 'S', 'P', 'STIM', 'zero-S', 'zero-P', 'zero-STIM' ]\n", "agreements = collections.defaultdict(int)\n", "for wo in helpers.diana.word_orders(ag, search_terms, with_agreement = True):\n", " v_class = None; n_class = None; v_marker = None; n_type = None;\n", " agreement = False\n", " zero = False\n", " if len(wo.word_order) != len(wo.agreement):\n", " print(\"length on blue and yellow line different in ID {}\".format(wo.clause_id))\n", " continue\n", " for i, w in enumerate(wo.word_order):\n", " if w in verbs:\n", " if wo.agreement[i] != \"noagr\":\n", " agreement = True\n", " if \"-\" in wo.agreement[i]:\n", " v_marker, v_class = wo.agreement[i].split(\"-\")\n", " else:\n", " print(\"no dash in v agr in ID {}\".format(wo.clause_id))\n", " else:\n", " if \"-\" in wo.agreement[i]:\n", " n_split = wo.agreement[i].split(\"-\")\n", " if len(n_split) > 2:\n", " print(\"more than one dash in n agr in ID {}\".format(wo.clause_id))\n", " n_class = n_split[1]\n", " #n_type = n_split[1]\n", " if \".\" in n_class:\n", " n_class, _ = n_class.split(\".\")\n", " else:\n", " print(\"no dash in n agr in ID {}\".format(wo.clause_id))\n", " if w.startswith(\"zero-\"):\n", " zero = True\n", " \n", " if v_class != n_class and agreement:\n", " print(\"n class does not equal v class in ID {} (n_class: {} vs. v_class: {})\".format(wo.clause_id, n_class, v_class))\n", " elif v_class is not None and n_class is not None and not zero:\n", " agreements[\"{}-{}\".format(v_marker, v_class)] += 1" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "n class does not equal v class in ID clause_id..n#1037 (n_class: imp vs. v_class: 5)\n", "n class does not equal v class in ID clause_id..n#1552 (n_class: 2 vs. v_class: hpl)\n", "n class does not equal v class in ID clause_id..n#1139 (n_class: 3 vs. v_class: 1)" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] } ], "prompt_number": 51 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are the counts for all overt arguments where class markers were equal:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "for agr, count in agreements.items():\n", " print(\"{} => {}\".format(agr, count))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "r-5 => 167\n", "o-1 => 222\n", "y-2 => 119\n", "r-nhpl => 46\n", "r-hpl => 2\n", "b-hpl => 64\n", "b-3 => 257\n", "y-4 => 42\n" ] } ], "prompt_number": 52 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.3.3. Does the o-1 prefix more often occur with an ouvert argument than the b/r/y prefix?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "H0: It does not depend on the prefix (o-1 vs. b) whether the argument is expressed ouvertly." ] }, { "cell_type": "code", "collapsed": false, "input": [ "cont_table = [ [ agreements[\"o-1\"], agreement_sum[\"o-1\"]-agreements[\"o-1\"] ],\n", " [ agreements[\"b-3\"]+agreements[\"b-hpl\"],\n", " agreement_sum[\"b-3\"]+agreement_sum[\"b-hpl\"]-agreements[\"b-3\"]-agreements[\"b-hpl\"] ] ]\n", "cont_table" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 78, "text": [ "[[222, 132], [321, 111]]" ] } ], "prompt_number": 78 }, { "cell_type": "code", "collapsed": false, "input": [ "oddsratio, pvalue = scipy.stats.fisher_exact(cont_table)\n", "pvalue" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 80, "text": [ "0.00062729277493344911" ] } ], "prompt_number": 80 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We reject H0 because p < 0.05. The \"b\" prefix occurs significantly more often with ouvert arguments then the \"o-1\" prefix." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "H0: It does not depend on the prefix (o-1 vs. r) whether the argument is expressed ouvertly." ] }, { "cell_type": "code", "collapsed": false, "input": [ "cont_table = [ [ agreements[\"o-1\"], agreement_sum[\"o-1\"]-agreements[\"o-1\"] ],\n", " [ agreements[\"r-5\"]+agreements[\"r-hpl\"]+agreements[\"r-nhpl\"],\n", " agreement_sum[\"r-5\"]+agreement_sum[\"r-hpl\"]+agreement_sum[\"r-nhpl\"]-agreements[\"r-5\"]-agreements[\"r-hpl\"]-agreements[\"r-nhpl\"] ] ]\n", "cont_table" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 81, "text": [ "[[222, 132], [215, 38]]" ] } ], "prompt_number": 81 }, { "cell_type": "code", "collapsed": false, "input": [ "oddsratio, pvalue = scipy.stats.fisher_exact(cont_table)\n", "pvalue" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 82, "text": [ "9.856708011476732e-10" ] } ], "prompt_number": 82 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We reject H0 because p < 0.05. The \"r\" prefix occurs significantly more often with ouvert arguments than the \"o-1\" prefix." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "H0: It does not depend on the prefix (o-1 vs. y) whether the argument is expressed ouvertly." ] }, { "cell_type": "code", "collapsed": false, "input": [ "cont_table = [ [ agreements[\"o-1\"], agreement_sum[\"o-1\"]-agreements[\"o-1\"] ],\n", " [ agreements[\"y-2\"]+agreements[\"y-4\"],\n", " agreement_sum[\"y-2\"]+agreement_sum[\"y-4\"]-agreements[\"y-2\"]-agreements[\"y-4\"] ] ]\n", "cont_table" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 83, "text": [ "[[222, 132], [161, 53]]" ] } ], "prompt_number": 83 }, { "cell_type": "code", "collapsed": false, "input": [ "oddsratio, pvalue = scipy.stats.fisher_exact(cont_table)\n", "pvalue" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 84, "text": [ "0.0022627293600340314" ] } ], "prompt_number": 84 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We reject H0 because p < 0.05. The \"y\" prefix occurs significantly more often with ouvert arguments than the \"o-1\" prefix." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 3. Referential density and distance" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.1. What is the referential density for COP, v.intr, v.tr and v.aff" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### COP" ] }, { "cell_type": "code", "collapsed": false, "input": [ "search_terms = [ \"COP\", \"S\" ]\n", "possible = 0\n", "overt = 0\n", "for wo in helpers.diana.word_orders(ag, search_terms):\n", " if \"COP\" in wo.word_order:\n", " possible += 1\n", " if \"S\" in wo.word_order:\n", " overt += 1\n", "print(\"{} / {} = {}\".format(overt, possible, float(overt)/possible))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "127 / 131 = 0.9694656488549618\n" ] } ], "prompt_number": 53 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### v.intr" ] }, { "cell_type": "code", "collapsed": false, "input": [ "search_terms = [ \"v.intr\", \"S\" ]\n", "possible = 0\n", "overt = 0\n", "for wo in helpers.diana.word_orders(ag, search_terms):\n", " if \"v.intr\" in wo.word_order:\n", " possible += 1\n", " if \"S\" in wo.word_order:\n", " overt += 1\n", "print(\"{} / {} = {}\".format(overt, possible, float(overt)/possible))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "548 / 821 = 0.6674786845310596\n" ] } ], "prompt_number": 54 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### v.tr" ] }, { "cell_type": "code", "collapsed": false, "input": [ "search_terms = [ \"v.tr\", \"A\", \"P\" ]\n", "possible = 0\n", "overt = 0\n", "for wo in helpers.diana.word_orders(ag, search_terms):\n", " if \"v.tr\" in wo.word_order:\n", " possible += 2\n", " if \"A\" in wo.word_order:\n", " overt += 1\n", " if \"P\" in wo.word_order:\n", " overt += 1\n", "print(\"{} / {} = {}\".format(overt, possible, float(overt)/possible))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "772 / 1288 = 0.5993788819875776\n" ] } ], "prompt_number": 55 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### v.aff" ] }, { "cell_type": "code", "collapsed": false, "input": [ "search_terms = [ \"v.aff\", \"EXP\", \"STIM\" ]\n", "possible = 0\n", "overt = 0\n", "for wo in helpers.diana.word_orders(ag, search_terms):\n", " if \"v.aff\" in wo.word_order:\n", " possible += 2\n", " if \"EXP\" in wo.word_order:\n", " overt += 1\n", " if \"STIM\" in wo.word_order:\n", " overt += 1\n", "print(\"{} / {} = {}\".format(overt, possible, float(overt)/possible))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "190 / 268 = 0.7089552238805971\n" ] } ], "prompt_number": 56 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.2. Is the referential density for agreeing X higher than for non-agreeing X?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### v.intr" ] }, { "cell_type": "code", "collapsed": false, "input": [ "search_terms = [ \"v.intr\", \"S\" ]\n", "agr_possible = 0\n", "agr_overt = 0\n", "noagr_possible = 0\n", "noagr_overt = 0\n", "for wo in helpers.diana.word_orders(ag, search_terms, with_agreement = True):\n", " if len(wo.word_order) != len(wo.agreement):\n", " continue\n", " if \"v.intr\" in wo.word_order:\n", " v_index = wo.word_order.index(\"v.intr\")\n", " if wo.agreement[v_index] == \"noagr\":\n", " noagr_possible += 1\n", " if \"S\" in wo.word_order:\n", " noagr_overt += 1\n", " else:\n", " agr_possible += 1\n", " if \"S\" in wo.word_order:\n", " agr_overt += 1\n", "print(\"with agreement: {} / {} = {}\".format(agr_overt, agr_possible, float(agr_overt)/agr_possible))\n", "print(\"without agreement: {} / {} = {}\".format(noagr_overt, noagr_possible, float(noagr_overt)/noagr_possible))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "with agreement: 476 / 710 = 0.6704225352112676\n", "without agreement: 72 / 111 = 0.6486486486486487\n" ] } ], "prompt_number": 57 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Statistical test\n", "Hypthesis H0: It does not depend on agreement whether S in v.intr sentences is expressed overtly?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "cont_table = [ [agr_overt, agr_possible-agr_overt], [noagr_overt, noagr_possible-noagr_overt] ]\n", "oddsratio, pvalue = scipy.stats.fisher_exact(cont_table)\n", "print(pvalue)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "0.665525212907\n" ] } ], "prompt_number": 58 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We cannot reject H0 as p > 0.05. It does not depent on agreement wether the argument is expressed overtly." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### v.tr" ] }, { "cell_type": "code", "collapsed": false, "input": [ "search_terms = [ \"v.tr\", \"A\", \"P\" ]\n", "agr_possible = 0\n", "agr_overt = 0\n", "noagr_possible = 0\n", "noagr_overt = 0\n", "for wo in helpers.diana.word_orders(ag, search_terms, with_agreement = True):\n", " if len(wo.word_order) != len(wo.agreement):\n", " continue\n", " if \"v.tr\" in wo.word_order:\n", " v_index = wo.word_order.index(\"v.tr\")\n", " if wo.agreement[v_index] == \"noagr\":\n", " noagr_possible += 2\n", " if \"A\" in wo.word_order:\n", " noagr_overt += 1\n", " if \"P\" in wo.word_order:\n", " noagr_overt += 1\n", " else:\n", " agr_possible += 2\n", " if \"A\" in wo.word_order:\n", " agr_overt += 1\n", " if \"P\" in wo.word_order:\n", " agr_overt += 1\n", "print(\"with agreement: {} / {} = {}\".format(agr_overt, agr_possible, float(agr_overt)/agr_possible))\n", "print(\"without agreement: {} / {} = {}\".format(noagr_overt, noagr_possible, float(noagr_overt)/noagr_possible))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "with agreement: 506 / 828 = 0.6111111111111112\n", "without agreement: 266 / 460 = 0.5782608695652174\n" ] } ], "prompt_number": 59 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Statistical test\n", "Hypthesis H0: It does not depend on agreement whether S in v.intr sentences is expressed overtly?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "cont_table = [ [agr_overt, agr_possible-agr_overt], [noagr_overt, noagr_possible-noagr_overt] ]\n", "oddsratio, pvalue = scipy.stats.fisher_exact(cont_table)\n", "print(pvalue)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "0.259811072564\n" ] } ], "prompt_number": 60 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We cannot reject H0 as p > 0.05. It does not depent on agreement wether the argument is expressed overtly." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### v.aff" ] }, { "cell_type": "code", "collapsed": false, "input": [ "search_terms = [ \"v.aff\", \"EXP\", \"STIM\" ]\n", "agr_possible = 0\n", "agr_overt = 0\n", "noagr_possible = 0\n", "noagr_overt = 0\n", "for wo in helpers.diana.word_orders(ag, search_terms, with_agreement = True):\n", " if len(wo.word_order) != len(wo.agreement):\n", " continue\n", " if \"v.aff\" in wo.word_order:\n", " v_index = wo.word_order.index(\"v.aff\")\n", " if wo.agreement[v_index] == \"noagr\":\n", " noagr_possible += 2\n", " if \"EXP\" in wo.word_order:\n", " noagr_overt += 1\n", " if \"STIM\" in wo.word_order:\n", " noagr_overt += 1\n", " else:\n", " agr_possible += 2\n", " if \"EXP\" in wo.word_order:\n", " agr_overt += 1\n", " if \"STIM\" in wo.word_order:\n", " agr_overt += 1\n", "print(\"with agreement: {} / {} = {}\".format(agr_overt, agr_possible, float(agr_overt)/agr_possible))\n", "print(\"without agreement: {} / {} = {}\".format(noagr_overt, noagr_possible, float(noagr_overt)/noagr_possible))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "with agreement: 185 / 258 = 0.7170542635658915\n", "without agreement: 5 / 10 = 0.5\n" ] } ], "prompt_number": 61 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Statistical test\n", "Hypthesis H0: It does not depend on agreement whether S in v.intr sentences is expressed overtly?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "cont_table = [ [agr_overt, agr_possible-agr_overt], [noagr_overt, noagr_possible-noagr_overt] ]\n", "oddsratio, pvalue = scipy.stats.fisher_exact(cont_table)\n", "print(pvalue)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "0.160953027422\n" ] } ], "prompt_number": 62 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We cannot reject H0 as p > 0.05. It does not depent on agreement wether the argument is expressed overtly." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 4. Arguments in \"v.aff\" vs. \"v.tr\" sentences: ouvert vs. zero" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Counts" ] }, { "cell_type": "code", "collapsed": false, "input": [ "v_tree = { \"v.aff\": collections.defaultdict(int), \"v.tr\": collections.defaultdict(int) }\n", "for wo in word_orders:\n", " v = None\n", " if \"v.tr\" in wo:\n", " v = \"v.tr\"\n", " if \"v.aff\" in wo:\n", " v = \"v.aff\"\n", " if v is not None:\n", " wo2 = tuple([e for e in sorted(wo) if e != \"v.aff\" and e != \"v.tr\"])\n", " v_tree[v][wo2] += word_orders[wo]\n", "\n", "for v in [\"v.aff\", \"v.tr\"]:\n", " print(v)\n", " for e in v_tree[v]:\n", " print(\"{0} => {1}\".format(e, v_tree[v][e]))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "v.aff\n", "('zero-EXP', 'zero-STIM') => 15\n", "('STIM', 'zero-EXP') => 34\n", "('EXP', 'zero-STIM') => 14\n", "('EXP', 'STIM') => 71\n", "v.tr\n", "('A', 'zero-P') => 33\n", "('A', 'P') => 222\n", "('P', 'zero-A') => 295\n", "('zero-A', 'zero-P') => 94\n" ] } ], "prompt_number": 63 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Statistical test for A/EXP" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hypothesis 1 (H0): It does not depend on the type of the verb (\"v.tr\" vs. \"v.aff\") if the A/EXP is expressed ouvertly.\n", "\n", "For the test we use the Fisher exact test, as this test also works for small numbers (http://docs.scipy.org/doc/scipy-0.13.0/reference/generated/scipy.stats.fisher_exact.html)." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import scipy.stats\n", "cont_table = [\n", " [ v_tree[\"v.aff\"][('EXP', 'zero-STIM')] + v_tree[\"v.aff\"][('EXP', 'STIM')],\n", " v_tree[\"v.aff\"][('zero-EXP', 'zero-STIM')] + v_tree[\"v.aff\"][('STIM', 'zero-EXP')] ],\n", " [ v_tree[\"v.tr\"][('A', 'P')] + v_tree[\"v.tr\"][('A', 'zero-P')], \n", " v_tree[\"v.tr\"][('P', 'zero-A')] + v_tree[\"v.tr\"][('zero-A', 'zero-P')] ]\n", "]\n", "cont_table" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 64, "text": [ "[[85, 49], [255, 389]]" ] } ], "prompt_number": 64 }, { "cell_type": "code", "collapsed": false, "input": [ "oddsratio, pvalue = scipy.stats.fisher_exact(cont_table)\n", "pvalue" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 65, "text": [ "5.1977253135270883e-07" ] } ], "prompt_number": 65 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We reject the null hypothesis, as the chances of getting a distribution as the observed one are p < 0.05. The verb type affects the ouvertness of the A/EXP argument. In this case the \"v.aff\" sentences have sigificantly more ouvert arguments EXP then the \"v.tr\" sentences have ouvert A." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Statistical test for P/STIM" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hypothesis 2 (H0): It does not depend on the type of the verb (\"v.tr\" vs. \"v.aff\") if the P/STIM is expressed ouvertly." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import scipy.stats\n", "cont_table = [\n", " [ v_tree[\"v.aff\"][('STIM', 'zero-EXP')] + v_tree[\"v.aff\"][('EXP', 'STIM')],\n", " v_tree[\"v.aff\"][('zero-EXP', 'zero-STIM')] + v_tree[\"v.aff\"][('EXP', 'zero-STIM')] ],\n", " [ v_tree[\"v.tr\"][('A', 'P')] + v_tree[\"v.tr\"][('P', 'zero-A')], \n", " v_tree[\"v.tr\"][('A', 'zero-P')] + v_tree[\"v.tr\"][('zero-A', 'zero-P')] ]\n", "]\n", "cont_table" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 66, "text": [ "[[105, 29], [517, 127]]" ] } ], "prompt_number": 66 }, { "cell_type": "code", "collapsed": false, "input": [ "oddsratio, pvalue = scipy.stats.fisher_exact(cont_table)\n", "pvalue" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 67, "text": [ "0.63554718109871811" ] } ], "prompt_number": 67 }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this case we cannot reject the null hypothesis, as p > 0.05. There is no statistical evidence that the verb type affects the ouvertness of P/STIM." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 5. Positions of S, A and P" ] }, { "cell_type": "code", "collapsed": false, "input": [ "other_verbs = [ 'COP', 'v.tr', 'v.intr', 'v.aff' ]\n", "verb_map = { v: \"V\" for v in other_verbs }\n", "\n", "A_values = []\n", "P_values = []\n", "S_values = []\n", "for wo in helpers.diana.word_orders(ag, annotation_map = verb_map):\n", " word_order = [w for w in wo.word_order if not w.startswith(\"zero-\")]\n", " if \"V\" in word_order:\n", " v_index = word_order.index(\"V\")\n", " if \"A\" in word_order:\n", " A_values.append(word_order.index(\"A\") - v_index)\n", " if \"P\" in word_order:\n", " P_values.append(word_order.index(\"P\") - v_index)\n", " if \"S\" in word_order:\n", " S_values.append(word_order.index(\"S\") - v_index)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 68 }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 69 }, { "cell_type": "code", "collapsed": false, "input": [ "fig, axs = plt.subplots(1, 3, figsize=(14,4))\n", "axs[0].hist(S_values, range(min(S_values), max(S_values)+2))\n", "axs[0].set_title(\"Positions of S\")\n", "axs[1].hist(A_values, range(min(A_values), max(A_values)+2))\n", "axs[1].set_title(\"Positions of A\")\n", "axs[2].hist(P_values, range(min(P_values), max(P_values)+2))\n", "ret = axs[2].set_title(\"Positions of P\")" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAzQAAAEKCAYAAADEnRCDAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XuwXFWd6PFvJyHyPIQjmoSXQSQCM8yAI4iK0jwvvgCr\n7iDOeCcgY1lDiTg+BuKMlxOtGSIzPm6NNVZdBStwBY3ocIE7PALSV9QriCa8YgwwRAmSgALmIK+E\n9P1j7XNOp9PnZJ9z9l57797fT1VX797dZ6/Vne5f1trrt9cCSZIkSZIkSZIkSZIkSZIkSZIkSZIk\nSZIkSZIkSZIkSZIkqbYWA1+b4Pm/BG6OVJc0dgGuB54Bvl1wXSSNMZZIypIxRepj64DngGFgA/AN\nYLeMjr0A2ArMyOh4efhvwJ2MX8c5wOXA48Am4JfAhXGqJlXKOowlE8WSEWcT3suZeVdIqrh1GFMm\niilDwGbC5/M08CPgmCg1q5kyf0k0pg28G9gDeAPwRuAfMi6jkfHxsvQaYC0hsPXyJWBX4BBgADgN\neChO1aRKMZZMHEtGLALuA/4q9xpJ1WZMmTimtIGrCZ/Pq4AfAt+LUzWpfB4BTuh4/M+EIU4IjfcH\nCD3/2wmN+hEXAusJoxZrOo4xBFyZbP+a8EMcTl53DOHs5B0dx3kL8FPCkOpdwJs7nmsBnyX8SDcR\nhoJfmTy3M/C/gN8m9bsLePU47/HQ5FhPA/cD70n2LwFeBF5K6nhOj7+9Dzh9nONKGmMsmTiWQGig\nvERonL0IzB3ndZKMKTuKKZ3vB+CPkvc0OE5ZUl97BDgx2d6f8INaAiwEnk2emwl8CngQ2Al4PSEY\nzEv+7gDgtcn2xYz9wF7D9kO6ZzMWMAYJP+K/TF5zFvAUsFfyfCsp83WEAHE7cEny3IeB65L9DeBI\nwlmKbjsRRlQuAmYBxxOCz8KO+l7R85MJvpZ8JmcDB0/wOqnujCUTxxKAzwArku0fAR/fweulOjOm\nTBxThjrezysIHb51E7xeU2TKWTU0gGsJP9w7CD/SS4D3ATcAtwEvA/9CuEDtzcnjVxDOBuxECB7/\n2XE8emz38i7CNSnfJASWbxHOppyWPN8m5Mw+BLwALAeOSJ57iXA25ODkdSsJZzG6HUPIuV0KbCEE\nnRuA93fUcaJ6np/U7yOEs0EPAqfu4H1JdWQs2XE9/wr4TrL9HUw7kyZiTNlxPc8kfD6/JnSc3ruD\n12sK7NBUQ5uQUrUX4SK5jxB+nPMJP5DO1z0K7Ev4AX+McHZgIyGHc/4Uyt6nqwyAXyX7R2zo2H4e\n2D3ZvpIwxPst4DHg84QzHL3KeLRHGfumrOMLhAD6RkKAWk5oiOw10R9JNWQsmdhbCZ/LSI77NcDh\nwJ+m/HupbowpO/ZtwuczFziJ0HlSxuzQVNtvCEOyIxqEId/HksdXA29LXtMm/GC7tXdQxmNdZZA8\nfqzHa7ttIeSv/hEhz/Xd9D7b+Zuk3p1nOV5DyK+drGFC52Y3QnCVtGPGkmBR8rf3EWZN/GnHfknp\nGVOCNuWe1KBv2KGptuWEIdcTCMO2nyCcGfkxIb/zBMKw7ovJ/pd7HONJwlDtQeOUcWNyrPcTzl68\nj3Bh3w0drxnvx3o84ezmTEJHY/M4dfgJYdrHv0veR5MQXL41znG7fYYwOjObkA97AWF495cp/16q\nO2NJiB1nAh8ijMiM3M4H/iIpW1I6xpSJy1fG7NBU21rgA8C/En747yLMvrGFECguSfY/DuxNWLAK\nwhmDkTMfzwH/SLj49SngTV3P/47w4/0EYTaQTyaPn+qoR7tre+TxXELq1++B1YTc2s7ZPkZsTur9\njqS+XyHM7b62xzF72UrIk32ScGbmxOSzeG6Cv5E0xlgCZwB/IFzg+0TH7RuExtJ/GefvJG3PmJLu\neUU2k5DzNzIV3yBhFpi1wC2EhQ1HLCZclL0GOCViHSVV1wWENJ/7k22YOM5IEtg+kTQJHyfMInFd\n8vhSwvAbhLnElybbhwGrCMNyCwgXfjkKJGkif0zozOxMaJysIKQYjBdnJGmE7RNJqewH3ErINxw5\nA7KGscXG5iWPIZz9uLDjb28iTHknSeP5r8DXOx7/A6FBMl6ckSSwfSIpkebsxJcICyJt7dg3lzDV\nHsn9SPDYh21nfljP5Ka2k1Q/9xNmuxkEdgXeSWiojBdnJAlsn0hK7KhD827CRZErGX+mhjQXREnS\neNYQpuy8hTBrzSq2n23GCysldbJ9ImlUr0WEOr2FsOLqOwn57QOEWSA2EoZyNxAWQ3oief1jhPm6\nR+xHj/nADzrooPbDDz88rYpLytzDwOsKKvvy5AZhVpv1jB9ntmE8kUop73hi+0Sqh8xjyXGM5ahe\nylgu6kVsf9HdbODApBK9zpy0Y7v44ov7vsw6vMciyqzDe2y320WPgLw6uT8A+AWwJ+PHmW7RP6ss\nFPFvnAXrHVdV603ceFKp9kmsf9MY5fheyllOP70XUsaSHY3QbPdDT+6XEhZNOhdYR1iMDMJc3suT\n+y3AeWkrIqnWrgFeSZjz/zzC2gDjxRlJ6mb7RKqxyXRo/m9yg7Bo0UnjvO6fkpskpfX2HvsmijOS\nNML2iVRztZmDvdls9n2ZdXiPRZRZh/eo+Kr6b2y946pqvTW+WP+mMcrxvZSznH56L2mNNzNI3pK0\nOEll0Wg0oLiYMB3GE6lkjCeSspA2ltRmhEaSJElS/7FDI0mSJKmy7NBIkiRJqiw7NJIkSZIqyw5N\njgYGBmk0GtFuAwODRb9lSZIkKSpnOctRmJkh5vtsUIfPVflwViJJWTGeSMqCs5xJkiRJ6nt2aCRJ\nkiRVlh0aSZIkSZVlh0aSJElSZdmhkSRJklRZdmgkSZIkVZYdGkmSJEmVZYdGklQKeS5G7MLDktS/\n7NBIKoPFwAPAfcBVwCuAQWAFsBa4BZhTWO0UxfDw04TFiLO/hWNLkvqRHRpJRVsAfAh4A3A4MBM4\nC7iI0KFZCNyWPJYkSdqGHRpJRdsEbAZ2BWYl978BTgOWJa9ZBpxRSO0kSYXKMx3VtNT+sKMOzc7A\nncAqYDVwSbJ/CFgPrExu7+j4m8XAg8Aa4JQM6yqpPz0FfAH4NaEj8wxhZGYusDF5zcbksSSB7ZNa\nyTMd1bTU/jBrB8+/ABwPPJe89ofAsYR//S8mt06HAe9L7vcFbiWki2zNrsqS+sxBwMcIqWe/B74D\nfKDrNSP/6/Q0NDQ0ut1sNmk2mxlXUdJEWq0WrVYrZpG2TySN2lGHBkKwAJhNyG0f6cI2erz2dOBq\nQvrIOuAh4GjgJ9OqpaR+9kbgx8DvksffA94MbADmJffzgSfGO0Bnh0ZSfN0nEpYsWRKjWNsnkoB0\n19DMIAzpbgRuJ8xEBHA+cA9wGWOzD+1DGOodsZ5wJkSSxrMGOAbYhdAQOYmQQnI9sCh5zSLg2kJq\nJ6msbJ9IAtJ1aLYCRwD7AW8HmsBXgQOT/Y8T8t/HM26aiCQRGh5XAHcD9yb7/iewFDiZMG3zCclj\nSRph+0QSkC7lbMTvgf9DSA9pdez/OuFMKsBjwP4dz+2X7NuOOe9SsQrIeZ/Ipcmt01OE0RpJmojt\nE6lPTLVt0ivPtNPewBbCrEO7ADcDSwjDuhuS1/wtcBTwF4SL7a4i5KWOXHT3OrY/C9Jut/v/xEij\n0SDuCaAGdfhclY/wfd1hTCijWsSTOsg3ZhofY4oQT2yf1Eic9pQxoozSxpIdjdDMJ6z/MCO5XUlY\n4O4KwnBuG3gE+HDy+tXA8uR+C3AeDulKkqRs2T6RNKqos7G1OAPiCI2qxBEaFc0Rmv5hPFGWHKGp\nr7SxJM2kAJIkSZJUSnZoJEmSJFWWHRpJkiRJlWWHRpIkSVJl2aGRJEmSVFmTWVhTklRzAwODDA8/\nXXQ1JEkaZYdGkpRa6MzkN7WyJEmTZcqZJEmSpMqyQyNJkiSpsuzQSJIkSaosOzSSJEmSKssOjSRJ\nkqTKskMjSZIkqbLs0Egqg9cDKztuvwc+CgwCK4C1wC3AnKIqKEmSyqmoSf/b7XZe6xiUR6PRIL/1\nGnqWSB0+V+UjfF9LsRDIDOAx4GjgfOC3wKXAhcBewEVdr69FPCmLfONavsf2exJPieLJZBlPSihO\ne8oYUUZpY4kjNJLK5iTgIeBR4DRgWbJ/GXBGUZWSJEnlZIdGUtmcBVydbM8FNibbG5PHkiRJo2YV\nXQFJ6jAbeA8hvaxbm3FyDoaGhka3m80mzWYzh6pJGk+r1aLVahVdDUk15TU0OfIaGlVJSXLeTwf+\nBjg1ebwGaAIbgPnA7cAhXX9Ti3hSFl5DozRKEk+mwnhSQl5DU19ZXUOzM3AnsApYDVyS7J9o5qHF\nwIOEhsgpk6m0pNp7P2PpZgDXAYuS7UXAtdFrJKmMbJ9IGpXm7MmuwHOE9LQfAp8kXKjba+ahw4Cr\ngKOAfYFbgYXA1q5j1uIMiCM0qpISnFHdDfgVcCAwnOwbBJYDBwDrgDOBZ7r+rhbxpCwcoVEakeKJ\n7ZOacISmvrKc5ey55H42MBN4mvFnHjqdcHZ1M6Hx8RBh6lVJ2pE/AHsz1pkBeIow69lCwhnV7s6M\npPqyfSIJSNehmUEY0t1IyF9/gPFnHtoHWN/xt+sJZ0IkSZKyZPtEEpBulrOtwBHAnsDNwPFdz487\n81DH89txViKpWM5KJKnibJ9IfWaqbZPJ5rd+Bnge+Gt6zzw0soL30uT+JuBiwoV7nWqRo+o1NKqS\nElxDM1W1iCdl4TU0SqOAeGL7pI95DU19ZXUNzd6MzRCyC3AysJLxZx66jrAo3mzChb0HA3dNot6S\nJEk7YvtE0qgdpZzNJ1xUNyO5XQncRggay4FzGZt5CMLUicuT+y3AecQdopAkSf3P9omkUS6smSNT\nzlQlppwpDVPOlIbxRFky5ay+spy2WZIkSZJKyQ6NJEmSpMqyQyNJkiSpsuzQSJIkSaosOzSSJEmS\nKssOjSRJkqTKskMjSZIkqbLs0EiSJEmqLDs0kiRJkirLDo0kSZKkyrJDI6ks5gDXAL8AVgNvAgaB\nFcBa4JbkNZIkSaPs0Egqi/8B/AdwKPAnwBrgIkKHZiFwW/JYkiRpVKOgctvtdrugouNpNBpAzPfZ\noA6fq/IRvq+FxYQ9gZXAa7v2rwGOAzYC84AWcEjXa2oRT8oi37iW77H9nsRTcDyZDuNJCcVpTxkj\nyihtLHGERlIZHAg8CXwD+DnwNWA3YC6hM0NyP7eQ2kmSpNKaVXQFJIkQi94AfAT4KfBltk8vazPO\nKbqhoaHR7WazSbPZzKOOksbRarVotVpFV0NSTZlyliNTzlQlBaeIzAP+H2GkBuBYYDEhBe14YAMw\nH7gdU84KZcqZ0jDlTFky5ay+TDmTVCUbgEcJF/8DnAQ8AFwPLEr2LQKujV81SZJUZo7Q5MgRGlVJ\nCc6o/inwdWA28DBwDjATWA4cAKwDzgSe6fq7WsSTsnCERmmUIJ5MlfGkhByhqa+0scQOTY7s0KhK\nbIAoDTs0SsN4oizZoamvLFPO9ifkrT8A3A98NNk/BKwnTLW6EnhHx98sBh4kTLl6Sso6S5IkpWHb\nRNKoNGdP5iW3VcDuwM+AMwipH8PAF7tefxhwFXAUsC9wKyEvfmvHa2pxBsQRGlWJZ1SVhiM0SiNC\nPMmjbQLGk1JyhKa+shyh2UAIGADPAr8gBIPxCjgduBrYTMh5fwg4OkU5kiRJadg2kTRqsrOcLQCO\nBH6SPD4fuAe4DJiT7NuHMNw7Yj1jQUaSJClLC7BtItXaZBbW3B24BriAcDbkq8Bnk+c+B3wBOHec\nv91uDM+F8KRiuRCepD6QadsEbJ9IRZpq2yRtfutOwA3AjYQVvLstIKwXcThjq3svTe5vAi4G7ux4\nfS1yVL2GRlXiNTRKw2tolEakeJJ12wSMJ6XkNTT1leU1NA3CsO1qtg0Y8zu23wvcl2xfB5xFWEvi\nQOBg4K4U5UiSJKVh20TSqDQpZ28FPgDcS5gCEeDTwPuBIwhd5keADyfPrSYshLca2AKcR9xhCkmS\n1N9sm0ga5cKaOTLlTFViypnSMOVMaRhPlCVTzuory5QzSZIkSSolOzSSJEmSKssOjSRJkqTKskMj\nSZIkqbLs0EiSJEmqLDs0kiRJkiorzTo0khTDOmAT8DKwGTgaGAS+Dbwmef5M4JliqidJksrIERpJ\nZdEGmsCRhM4MwEXACmAhcFvyWJIkaZQdGkll0r141mnAsmR7GXBG3OpIkqSys0MjqSzawK3A3cCH\nkn1zgY3J9sbksSRJ0iivoZFUFm8FHgdeRUgzW9P1fDu5SZIkjbJDI6ksHk/unwT+nXAdzUZgHrAB\nmA880esPh4aGRrebzSbNZjPHakrq1mq1aLVaRVdDUk1156vH0m63+/9Ea6PRIO4J5QZ1+FyVj/B9\nLSwm7ArMBIaB3YBbgCXAScDvgM8TJgSYw/YTA9QinpRFvnEt32P7PYmn4HgyHcaTEorTnjJGlFHa\nWOIIjaQymEsYlYEQl75J6NTcDSwHzmVs2mZJkqRRjtDkyBEaVYlnVJWGIzRKw3iiLDlCU19pY4mz\nnEmSJEmqLDs0kiRJkirLDo0kSZKkyrJDI0mSJKmy0nRo9gduBx4A7gc+muwfJCx+t5YwG9Gcjr9Z\nDDxIWBjvlKwqK0mShG0TSR3SzEAyL7mtAnYHfgacAZwD/Ba4FLgQ2IuwPsRhwFXAUcC+wK3AQmBr\nxzFrMYuIs5ypSpyVSGk4y5nSiBBP8mibgPGklJzlrL6ynOVsAyFgADwL/IIQDE4DliX7lxECCcDp\nwNXAZsK6EQ8RVvyWJEnKgm0TSaMmew3NAuBI4E7CQngbk/0bk8cA+wDrO/5mPSHISJIkZW0Btk2k\nWps1idfuDnwXuAAY7nquzcRjgds9NzQ0NLrdbDZpNpuTqIqk6Wq1WrRaraKrIVXewMAgw8NP53Ls\nPfbYi02bnsrl2H0i07YJ2D6RijTVtkna/NadgBuAG4EvJ/vWAE3CsO98wsV5hxByVQGWJvc3ARcT\nzpyMqEWOqtfQqEq8hkZpeA1NjyPn/JlU8fsdKZ5k3TYB40kpeQ1NfWV5DU0DuAxYzVjAALgOWJRs\nLwKu7dh/FjAbOBA4GLgrTaUlSZJSsG0iaVSasyfHAj8A7mWse7yYEAiWAwcQLrA7E3gmef7TwAeB\nLYRh4Ju7jlmLMyCO0KhKHKFRGo7Q9DiyIzTbiRBP8mibgPGklByhqa+0saSoxkstAoYdGlWJHRql\nYYemx5Ht0GzHeKIs2aGpryxTziRJkiSplOzQSJIkSaosOzSSJEmSKssOjaSymAmsBK5PHg8CK4C1\nwC3AnILqJUmSSswOjaSyuIAwBevIVZkXETo0C4HbGFtHQpIkaZQdGkllsB/wTuDrjM1mchqwLNle\nBpxRQL0kSVLJ2aGRVAZfAj4FbO3YNxfYmGxvTB5LkiRtww6NpKK9G3iCcP3MeHPNt4m7qJMkSaqI\nWUVXQFLtvYWQXvZOYGdgALiSMCozD9gAzCd0enoaGhoa3W42mzSbzdwqK2l7rVaLVqtVdDUk1VRR\nq/jWYiXeOCvbblOiq9xqykqysvdxwCeB9wCXAr8DPk+YEGAOvScGqEU8KYt841q+x87re5L3Z1LF\n73dJ4slUGE9KKE57qpq/tX6XNpaYciapbEb+R1kKnEyYtvmE5LEkSdI2HKHJkSM0qhLPqCoNR2h6\nHNkRmu0YT5QlR2jqyxEaSZIkSX3PDo0kSZKkyrJDI0mSJKmy7NBIkiRJqiw7NJIkSZIqyw6NJEmS\npMqyQyNJkiSpstJ0aC4HNgL3dewbAtYDK5PbOzqeWww8CKwBTsmklpIkSWNsm0galWbRq7cBzwJX\nAIcn+y4GhoEvdr32MOAq4ChgX+BWYCGwtet1tVi4yoU1VSUuhNc/BgYGGR5+OscSXFhzmyO7sOZ2\nIsSTPNomYDwpJRfWrK8sF9a8A+j1P2Ovg58OXA1sBtYBDwFHpyhDFTUwMEij0Yh6GxgYLPptS6UW\nOjPtnG5SKdg2kTRqOtfQnA/cA1wGzEn27UMY7h2xnnA2RH0q34ZT71u+Z54lSRVm20SqoVlT/Luv\nAp9Ntj8HfAE4d5zX9jylNzQ0NLrdbDZpNptTrIqkqWi1WrRaraKrIUlZmXbbBGyfSEWaatskbX7r\nAuB6xvJUx3vuomTf0uT+JkJO651df1OLHNU6XEMT/z2Cea758Bqa/pH3NR1VPbbX0MQTKZ4sINu2\nCRhPSslraOory2toepnfsf1exmYZuQ44C5gNHAgcDNw1xTIkSZLSsm0i1VSalLOrgeOAvYFHCWc1\nmsARhO7yI8CHk9euBpYn91uA8/AqUkmSlC3bJpJGFZVeUoshXVPOcivVYeEcmHLWP0w5631sU87i\nMZ4oS6ac1VfeKWeSlKWdCfnsqwhnUS9J9g8CK4C1wC2MzVokSZIE2KGRVA4vAMcT0kX+JNk+lnAx\n7wrCIni3MXZxryRJEmCHRlJ5PJfczwZmEhbNOw1YluxfBpxRQL0kSVKJ2aGRVBYzCClnG4HbgQeA\nucljkvu5xVRNkiSV1VQX1pSkrG0lpJztCdxMSDvr1MaFeqVScqFeSUVylrMcOctZbqU6E0kOSjYr\n0WeA54G/JkzFuoGwxsTtwCFdr61FPJkMZznrfWxnOYunZPFkMownJeQsZ/XlLGeSqmRvxmYw2wU4\nGVhJWBBvUbJ/EXBt/KpJkqQyM+VMUhnMJ1z0PyO5XUmY1WwlYUG8c4F1wJkF1U+SJJWUKWc5MuUs\nt1IdFs6BKSL9w5Sz3sc25Swe44myZMpZfZlyJkmSJKnv2aGRJEmSVFl2aCRJkiRVlh0aSZIkSZVl\nh0aSJElSZdmhkSRJklRZdmgkSZIkVZYdGkmSJEmVZYdGkiRJUmXZoZEkSZJUWWk6NJcDG4H7OvYN\nAiuAtcAtwJyO5xYDDwJrgFOyqaYkSdIo2yaSRqXp0HwDOLVr30WEoLEQuC15DHAY8L7k/lTg31KW\nIUmSlJZtE0mj0vyg7wCe7tp3GrAs2V4GnJFsnw5cDWwG1gEPAUdPu5YZGBgYpNFoRL1JkqRc9EXb\nRFI2pnqGYi5hqJfkfm6yvQ+wvuN164F9p1hGpoaHnwbakW+SJCmSyrVNJGVjVgbH2FHrvedzQ0ND\no9vNZpNms5lBVSSl1Wq1aLVaRVdDkvIwpbYJ2D6RijTVtknavKgFwPXA4cnjNUAT2ADMB24HDmEs\nX3Vpcn8TcDFwZ9fx2u123BGMkAIWe9QkdpkN6vK5xn6fdZCkSVYxVzJ6PCm7fH+X1T12Xt+TvD/v\nKn6/I8WTBWTbNgHjSSnFaWtU87fW79LGkqmmnF0HLEq2FwHXduw/C5gNHAgcDNw1xTIk1cf+hMbH\nA8D9wEeT/RPNWiRJnWybSDWV5uzJ1cBxwN6EnNT/DvxvYDlwAOECuzOBZ5LXfxr4ILAFuAC4uccx\nHaHJqby6fK6eRclewSM085LbKmB34GeEC3rPAX4LXApcCOzF2NnWEZ5R7eIITe9jO0ITT4R4kkfb\nBIwnpeQITX2ljSVFNV7s0ORUXl0+V4NO9kqWcnYt8JXkdhyhwTIPaBFSSDrZAOlih6b3se3QxFOy\neDIZxpMSskNTX3mnnElSXhYARxLy28ebtUiSJAnIZpYzScrK7sB3CSkhw13PjTtrkbMSScVy1kRJ\nRTLlLN9SI5dpypmmrgQpIjsBNwA3Al9O9o03a1EnU0S6mHLW+9imnMVTgngyVcaTEjLlrL5MOZNU\nJQ3gMmA1Y50ZGH/WIkmSJMARmrxLjVymIzSauoLPqB4L/AC4l7Ev1GLC1KrjzVo0wjOqXRyh6X1s\nR2jicYRGWXKEpr6c5ayLHZqcSrRD0zdsgPQPOzS9j22HJh7jibJkh6a+TDmTJEmS1Pfs0EiSJEmq\nLDs0kiRJkirLDo0kSZKkyrJDI0mSJEUwMDBIo9HI9TYwMFj024xuVtEVkCRJkupgePhp8p6xbXi4\nihMMTo8jNJIkSZIqyw6NJEmSpMqyQyNJkiSpsuzQSJIkSaosOzSSJEmSKssOjSRJkqTKmu60zeuA\nTcDLwGbgaGAQ+DbwmuT5M4FnplmOJElSGuuwbSLVynRHaNpAEziSEDAALgJWAAuB25LHkiRJMdg2\niSTGIpGNRv3WVNHkZZFy1v1NOw1YlmwvA87IoAxJkqS0bJtEMLZIZN43aWJZjNDcCtwNfCjZNxfY\nmGxvTB5LkiTFYNtEqpnpXkPzVuBx4FWEodw1Xc/btZaUxuXAu4AngMOTfea8S5oK2yZSzUy3Q/N4\ncv8k8O+EXNWNwDxgAzCf0EDZztDQ0Oh2s9mk2WxOsyqSJqPVatFqtYquxohvAP8KXNGxbyTn/VLg\nwuSxee+SdmTKbROwfSIVaaptk+lcabUrMBMYBnYDbgGWACcBvwM+T2h8zGH7Rki73Y57ciRcVBb7\nhEzsMhvU5XON/T7rILnwssirLxcA1zM2QrMGOI6xhkgLOKTH30WPJ2WX7++yusfO63uS9+ddxe93\ngfFkOm0TMJ5MSrw2QIxy4vzW4nxm1YwbvaSNJdMZoZlLOPMxcpxvEgLH3cBy4FzG0kQkabLMeZc0\nWbZNpBqaTofmEeCIHvufIpwJkaSsTJjzXsUUkYGBwWSGIKn6SpTCattEqqGi0ktMOcupvLp8rv0y\nlFomJU05azKW8347fZRyZlpY/GObchZPCeLJVFUynhTFlLMplGLK2aSkjSVZrEMjSXm4DliUbC8C\nri2wLpIkqaTs0Egqg6uBHwOvBx4FzgGWAicDa4ETkseSJEnbMOUs31Ijl2nKmabOFJG4TDmLf2xT\nzuIxntSDKWdTKMWUs0kx5UySJElS37NDI0mSJKmy7NBIkiRJqiw7NJIkSZIqyw6NJEmSpMqyQyNJ\nkiSpsuzQSJIkSaqsWUVXQJIkjWfWyDoMmdtjj73YtOmpXI4tSTHZoZEkqbS2kNcifMPDVVz3UpK2\nZ8qZJEmSpMoqbITmqafiDXPnNVyvouSXgtGLaRmSJKk64rSTytQ+Kqql337FK/aKVtiWLc/y8sub\nyWvYfnyAX0APAAAHEElEQVSNyGU2aLfjvsfwg/Fz7QdJ8Kti779dxX+ffH87HrvXsfP6nlT53zLf\nz8R40u/itQFilBPn//o4n1m8f5e8P7O0saSwEZoXX4zXo9t99w/w7LPfjFaeJEmSpDi8hkaSJElS\nZdmhkSRJklRZeXVoTgXWAA8CF+ZUhqR6MJ5IyorxROpDeVxDMxP4CnAS8BjwU+A64Bc5lCX1pVar\nRbPZLLoaZZAqntx7772ZF9xoNDj00EOZNcvluqQ+UYr2Saz4vuuue/D888/mXo5UBnn8T3008BCw\nLnn8LeB07NBIqdmhGZUqnrztbR/IvOAXXvgVM2e2ef754cyPLZVD3CnwS6AU7ZNY8T10ZmLMpiUV\nL48Ozb7Aox2P1wNvyqEcSf0vVTzZtCn7EZo99vhzhoevId/peKUibaFm3+9U8eT73/9+rpUYHvYk\niZS1PDo0qaLjwMB7cii6t5de+nm0stSPGgWcxZzBkiVLIpdZSoXFk5deujvzY0oqVKp4cuKJJ+Za\niSOO+LNcjy/FU0T7qLc8OjSPAft3PN6fcBak08ObNt1wUA5l70ARH3rcMov5YtWlzJi2FlHow0UU\nugMliCd5ftc8dsxj5xsfPXaXysYTINf2yapVP4v4f3WMcvrnvfjvUkqFxZJZSeELgNnAKuDQoioj\nqdKMJ5KyYjyRNCnvAH5JuPhuccF1kVRtxhNJWTGeSJIkSZIkAXwOuIcw5Hsb2+a15uWfCdMz3gN8\nD9gz5/L+HHgAeBl4Q85lxV4s7HJgI3BfhLIgfD9uJ3ye9wMfjVDmzsCdhO/oauCSCGWOmAmsBK6P\nVN464N6kzLsilZml8wm/7fuBzxdcl8n6BOGiqcGiK5JS7Dg6XVVcSLGIeJel2PErS0OE62pWJrdT\ncy4vz99/rHZWjJiQd3sqRpyI0W6KETtit41KH0/26Ng+H/h6hDJPBmYk20uTW54OARYSvlx5dmhm\nEobPFwA7EScv+G3AkcTr0MwDjki2dyekDMTIfd41uZ8F/AQ4NkKZAB8HvklY9C2GR6hOg7rb8cAK\nwncf4FUF1mWy9gduolqff+w4Oh1FxMYsFBXvshI7fmXpYkL9Y8j79x+rnRUjJuTZnooVJ2K0m2LF\njphto1TxZMZET+ascyL23YHfRihzBWPTR90J7JdzeWuAtTmXAdsuFraZscXC8nQH8HTOZXTaQAgy\nAM8SzgbtE6Hc55L72YSg91SEMvcD3kn4zyfmNCVVnRLlbwhniDYnj58ssC6T9UXg74quxCTFjqPT\nUURszEJR8S4LRcWvLMWqd96//1jtrBgxIc/2VKw4EaPdFCt2xGobpY4nRXZoAP4R+DWwiPhn+T4I\n/EfkMvPSa7GwfQuqSwwLCGc57oxQ1gxCcNhIODO0OkKZXwI+Rdy5m9vArcDdwIcilpuFg4G3E84S\ntYA3Flqb9E4n/FazXxU0nrLH0X6IjQuIF++yUET8ytr5hPSpy4A5OZUR6/cfu51V9pjQSz/EiV4W\nkF/siNU2Sh1P8liHptMKwvBXt08TcuH+PrldRKj0ORHKJCnzJeCqSOXlLa+lnstod+Aa4ALC2Ye8\nbSUM3+4J3Aw0CY3mvLwbeIKQL9rMsZxubwUeJ6RrrSCcDbsjYvk7Mt7v7O8JcWwv4BjgKGA58Np4\nVZvQRPVeDJzSsa9MZ7Njx9G8VD02xo5301VU/JqsiX6XXwU+mzz+HPAF4Nwcysnq9x+rnRUjJhTV\nnqp6nOgl79gRo21UlXiyjQMIFy/FcDbwI8JFTbHkfQ3NMYQ83BGLiXPx6wLiXUMDIbf1ZuBjEcvs\n9BngkzmX8U+EM0WPEDoYfwCuyLnMbhcTLlStihuB4zoePwS8sqC6pPXHhDNbjyS3zYR0h1cXWKfJ\nOJv4cXQqioqNWSg63k1FGeJXlhaQz/9xRfz+825nnU2cmJBHeypmnFhA/u2m2LEjr7ZRZeLJwR3b\n5wNXRijzVMLMD3tHKKvT7cCf5Xj8ohYLW0C8Dk2D8EX+UqTyIHxPRtINdgF+AJwYsfzjiDPKtytj\nF4/uRvhP6ZTxX146HwaWJNsLCekVVVOlSQGKiqNTUdWFFIuId1mLFb+yNr9j+2+JMwKZ1+8/Vjsr\nZkzIoz0VM04sIN92U4zYUUTbqNTx5BrCP+oq4LvEOTP5IPArxqZj/Lecy3svoXf5POFCrRtzLCv2\nYmFXA78BXiS8xyzSBSdyLGGIcxXxptM8HPh5Uua9hDzOmI4jzixBBxLe4yrCGbyqLTa3E+E/6vuA\nn1GhoekO/0l1OjSx4+h0VXEhxSLiXdZixa+sXUGI9/cA1wJzI5SZ1+8/VjsrRkzIuz0VI07EaDfF\niB1FtI2qGk8kSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZLU7/4/h2mu\nexJABsUAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 70 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Box plots of positions" ] }, { "cell_type": "code", "collapsed": false, "input": [ "plt.figure(figsize=(10,6))\n", "plt.boxplot([S_values, A_values, P_values])\n", "plt.title(\"Positions of S, A and P\")\n", "ret = plt.xticks([1, 2, 3], [\"S\", \"A\", \"P\"])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAk0AAAF6CAYAAAAEbWzQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFDVJREFUeJzt3X2sLGV9B/DvwsUiXl8ubVpE8IJVbKstvlB8Q1mkGnwF\nYxM1SsH+Y0y11tBqlVoONtUaq7ZVmzS21ar1BbU1akS0qUuKxvoSvCpFkARQXlTeqlBEQbZ/PHM9\ny/Gcc597Z/blzH4+yYHdndmZ3+6Ze/a7z8tMAgAAAAAAAAAAAAAAAAAAAAAsqVcleccmy5+f5LwZ\n1VLj7kk+nuR/k3xwzrV07YokJ867CADoiyuS3Jrk5iTfTfLOJPfoaNtHJLkzyX4dbW8aTk3y39m4\nxvsk+eck1yb5YZJLkrxyL/cxTHkfXrFvJe6zy5M8cYNl70ry45Tf+w1JPp3kwbMpC1jkP4rAxsZJ\nnp7knkkekeSYJH/W8T4GHW+vSzuTXJoSatbzliQHJfm1JPdK8swkl+3lPk5L8o0kv7ePNU7DOMkb\nUn7vhyX5fkqQAgA2sLY14o0p3VVJCQgXJbkpyWdTgsNur0xyVUrryzcntrGS5D3N7W+nhJGbm/Ue\nneT0JP81sZ3HJvlSSvfYF5M8ZmLZKMlrk1zQPP+8JL/YLDswyXuTXN/U98Ukv7zBa/z1Zls3pYSX\nZzSPn53S2vKTpsYXrvPcryc5eYPt1rhHU/tjm/8/cpN175PkEykB5saU38P9JpaPsvH7kZRWsytT\n3pNXZ/OWpnc229rtaSnvAQCwgcuzOu7l8JRQcXaSo5Lc0izbP8mfJPlWkgNSunG+neSQ5nn3T/KA\n5vZZWQ1NO/Pz3XOnZzU0HZwSZJ7frPPclLCwo1k+avb5wJSQ9Nkkr2+WvSjJx5rHB0kentJqstYB\nKS1Df5pkW5ITUgLHURP1vnvdd6Z4R/OenJ7kQZust5FTm9eQJP+a5O82WffgJM9KeU3bk5yT5N8n\nlo+y8fvxGymh57gkd0vypiS3Z/PQ9BfN7e1J3pfk/LqXBADL6YqUD9ubmttvS/lAfk2SD0ysN0hp\nWXpCyof291IC1QFrtreS1dB0RDYPTacm+cKa538+pTsrKaHg1RPLXpzk3Ob2C5N8Lslvbvrqksen\njEea9L6UsLS23vUcmDK4/cspLVLfSnLSHvY56T+SvK65fUpKK9K2yuc+LCVE7rbZ+/HnKa9rt4NS\nWtE2G9P0o5Tf+7VJPprkyMq6gJaMaYKtaZzS/bQjJeS8JMltSe6b0po0ud53UrqLLkvyRymB43tJ\n3t+sv7cOXbOPpHQvHTpx/7sTt3+U0iqSlKBzXkqwuzplfM56YeTQpu61+7jfOuuu57aU1pxjUrrC\nzknyoay2hm3m8JRB4B9q7n8qJYQ9bYP1D0ryDynh9QcpLT/3zl3HhG30fhyaEmp3uzVlgPdGxild\nsTtSfnenpLQ6AjMgNEG/XJPSvbbbICUEXN3cf39KK87OrA4qXmu8h31cvWYfae5fvc66a92RMibn\nISnjhZ6e9QdaX9PUPRk8duauAaPWzSkB6h4pAXNPTk352/jJlNacy1NC02kbrH9GSrfhsSlh6fim\n7pqB9Ltf524H5a7jndazyAP0odeEJuiXc1JaRJ6Y0gV3Rkqry+dTPtifmOQXUrqAbkvy03W2cV1K\n99yvbrCPc5ttPS+lleg5KYPNPzGxzkYf7CekdM3tnxJmbt+ghi+ktLq8onkdw5SA9YF11l3Pa1Ja\nme6WEnheltKldUmzfJTVrr61TktpjTt64ufZSZ6aMn5pre0prUc/aJavt92N3o+PpLyuxzW1vjab\n/10WmGCOhCbol0uTvCDJW1PCz9NSZp3dkRKWXt88fm2SX0oZ95OU1qXdLUy3JvnLlLFHNyZ51Jrl\nN6R80J+RMuPrj5v7k+N4xmtu777/KyndXj9I8j8p4WW9sUm3N3U/pan3bSktQJeus8313JkyaPq6\nlBawE5v34tZm+WEps9nWenRKy8/bU8Yx7f75eEr35nPXec7fpJxs8/qUcHruOrVt9H5clOQPUsY1\nXZPyHq7tlly7nT21BAILbv8kF2Z1yjPAotooMAFsqquWppelfGv0DQhYdFelTPEH2CtdhKbDUvr6\n/zH62wGAnuoiNL0l5QR6G13OAABgy2sbmp6eMkjywmhlAgB6rG3QeV3KjJY7Uqb13itlCu3Pzrty\n9NFHj3ft2tVyNwAAM7Er5cz+P6fL1qHjU6YeP2PN4+Px2PjwWRoMVjIer8y7DJiqlZWVrKyszLsM\nmCrH+ewNBoNkg3zU9XmapCMAoJdqL0BZ4/y42jYA0FPOCN5Dp502nHcJMHXD4XDeJcDUOc4Xyyxm\nvBnTBABsCbMc0wQA0EtCEwBABaEJAKCC0AQAUEFo6iHnQQOA7pk910ODQeItB4C9Z/YcAEBLQhMA\n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\nOvT/feWzTr/zzm4AAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 71 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Plots by clause type" ] }, { "cell_type": "code", "collapsed": false, "input": [ "A_values = [[], []]\n", "P_values = [[], []]\n", "S_values = [[], []]\n", "clause_types = [\"m\", \"m.rs\", \"sub\", \"sub.rs\"]\n", "for wo in helpers.diana.word_orders(ag, annotation_map = verb_map):\n", " word_order = [w for w in wo.word_order if not w.startswith(\"zero-\")]\n", "\n", " if \"V\" in word_order and wo.clause_type in clause_types:\n", " ind = 0\n", " if wo.clause_type == \"sub\" or wo.clause_type == \"sub.rs\":\n", " ind = 1\n", " v_index = word_order.index(\"V\")\n", " if \"A\" in word_order:\n", " A_values[ind].append(word_order.index(\"A\") - v_index)\n", " if \"P\" in word_order:\n", " P_values[ind].append(word_order.index(\"P\") - v_index)\n", " if \"S\" in word_order:\n", " S_values[ind].append(word_order.index(\"S\") - v_index)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 72 }, { "cell_type": "code", "collapsed": false, "input": [ "fig, axs = plt.subplots(2, 3, figsize=(14,10))\n", "for ind in [0, 1]:\n", " type_text = \"main\"\n", " if ind == 1:\n", " type_text = \"sub\"\n", " axs[ind][0].hist(S_values[ind], range(min(S_values[ind]), max(S_values[ind])+2))\n", " axs[ind][0].set_title(\"Positions of S in {0} clauses\".format(type_text))\n", " axs[ind][1].hist(A_values[ind], range(min(A_values[ind]), max(A_values[ind])+2))\n", " axs[ind][1].set_title(\"Positions of A {0} clauses\".format(type_text))\n", " axs[ind][2].hist(P_values[ind], range(min(P_values[ind]), max(P_values[ind])+2))\n", " ret = axs[ind][2].set_title(\"Positions of P {0} clauses\".format(type_text))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nrkJggg==\n", "text": [ "" ] } ], "prompt_number": 73 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Box plots by clause type" ] }, { "cell_type": "code", "collapsed": false, "input": [ "fig, axs = plt.subplots(1, 2, figsize=(14,6))\n", "for ind in [0, 1]:\n", " type_text = \"main\"\n", " if ind == 1:\n", " type_text = \"sub\"\n", "\n", " axs[ind].boxplot([S_values[ind], A_values[ind], P_values[ind]])\n", " axs[ind].set_title(\"Positions of S, A and P in {0} clauses\".format(type_text))\n", " ret = plt.xticks([1, 2, 3], [\"S\", \"A\", \"P\"])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAywAAAF6CAYAAAD7xtxeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XuUbFddJ/BvJzcocEMew5hLSOAqD40QA4gxCJi6xDAB\nIpiFDqJggs74WJOAGIQJDNMVHAccBHQUZ80gioiCIOKYDI9kNIWAoyAmIYaQACYkJCTkTSAiefT8\nsU/TdTvddfveOt1nV53PZ62+tx6nTv2qzqnzq9/e++xKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJhD\nZyV5y4T7fzLJh7Yolo24f5JzktyW5E86jqVtVyU5oYX1/I8k/6mF9UxrT/vWvtiZ5N4k+7W8XmC2\nyF31uCqzm7tGSX6movXA3LgqyZ1J7khyfZLfT/LAlta9M/V/GXxhkr/L+jEenOT3knwpyVeSXJ7k\nFXv5HIOU9+Hl+xbiPrsyydPWue9tSf4lZbvfnOS8JN+5NWFVZWfq30eB+7oqcpfcVV/uuiDJT1e0\nHrZQzQeMebCU5OQkByZ5QpInpv0WiYWW19emhye5IuWgvJY3JXlAku9K8qAkz07yub18jlOT/GOS\nn9rHGDfDUpJfS9nuRyT5ckoiAJgFcpfcJXdRFQXL1rkuyQeTPLa5/uwklya5NaXa/66xZV+R5Isp\nLTefyUpryDDJHzaX/7r5/7ZmueOSnJbkI2Pr+YEkn2iW+XiSJ43dN0rymiQfbR7/oST/qrnvW5O8\nI8lNTXwfT/Jt67yuo5p13Zpy8P3h5vazk7w6yfNSWmtetMZjn5jknUlub65fnuS96zzPWh6Y5LlJ\nfj7Jw5J874RlD05ybsoB+JaU7v6Hjt0/yvrvR1Ja3L6Q8p68ci9i/OeU1/jYde5/W5JfaS4PUrb7\nLyW5IWWfOW3CukfNYz+W8h7/RZIHJ/mjlPf04ymJd9lvJrm6ue/vkzxl7L5hVvatnSmJ+qdSXvON\nmfya75/kDSmtsrel7IPfssZyL0ry6ZT39/NJfnbsvtOy+76bJobvaC4/M+Xz8pWU9+jMseVOTnJR\nyj74sSRHj9233mcJ2Bi5677kruly12kpOeArSf4pyU80tw+zsp8ka/fGPTKl9+v2JH+e5JAJz/Oc\nlNxwe0pB+fQ1lnlEkr9KeX9uTNl/Dhq7fzwPJbu/7genbJtbU3qk/jorhfjhKfvEl5vXeMbYOo5N\nycG3p/RgvmHCa4AtcWVWxooemXJQPDvJo5N8tblv/yS/nOSzSQ5I6X69OsmO5nEPy8qHZTErH+aH\n574f5NOyctA/NOVD9JPNMj+ecrBb/nCPmud8ZMpB/oIkr23u+7mUL7/fmvLhe3xKi8tqB6QcBP5j\nkm1JdqUcgB49Fu/b13xnirc078lpSR41Ybn1vLB5DUn5kv7fJyx7aJJTUl7T9iTvTvK+sftHWf/9\n+O6UxPWUJPdLObjclfW//P5+Vg5o25P8cZIPT1j2Nc3lQbPeYcp+8YwkX8vuB89xo5RWwG9PaeW7\ntHkNT2se/wcpwxaW/WTK9t8vJbF8qXk9ye771s6Ufet/phQe35Pk69n9i8m4N6cc8B/SrPu4Zr3L\n61neR5/ZxJokP9i8tsc310/L5ILlS0me3Fw+aOxxj09JkN+Xsq/+VMrnbk+fJWB9cpfctVm564Ep\nX9SX37fDmjiT3feT5L45ZJRSGH13Sg/Xn65aftyxKQXv8n58eFaGt40PCXtEs8wBKQXIh1N60Jat\nLljGX/drU87l2b/5W85R+yX5ZEqv5LaUvPf5rBRM/y9l/07zOr5/ndfAGD0sm2shpQXg1pSD8Shl\nB39eSlX+l0nuSfLrKa3UT2quf0uSx6R8gK5Oqc6X15c1Lq/lWSmtPn+U8oF7V0qL17Ob+5dSPnif\nS/ky+u4kj2vu+0ZKC82jmuUuTDnorXZcysHndUnuTjkInJvk+WMxTorzjCa+07PyZfukPbyucacm\neU9z+T0piW3bOsveknKQ/3pKwv2vSY4fu3/S+/GjKa1aH015b16d9YcKJOU1vyxlu3825YB02h6W\nX3ZXysHwniQfaGJdbwzxcsxXpiTbD6QUMH/VPP49Wflin5T3+tYm9jem7GfL615rO52dMp75U0ku\nTnLMGsvsl9IC+ZKUouLeJH+b8j6t9v4m1qS0RJ2X5KnrvLbVvpHymXhQSrK7sLn9Z1MKq0+kvB9v\nb2J+Uso+ud5nCVif3CV3bWbuujelJ/z+KQ1On15jfWtZPsZ/OuUcq1cn+bfrPO5nkrw1ZV9NSq/P\n5Wss9/lmmbtSelnelN3f30m+kdJQtzPldX+suf37Uoqf/5Kyf12Z5HdTtvPy4x7VLHNnSo8Re6Bg\n2VxLKV2Sh6Ts0KenHFAeknIwH1/umpRu3s8l+cWUloobUrpkH7IPz334qudISrfw4WPXrx+7/M8p\n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\n", "text": [ "" ] } ], "prompt_number": 74 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }