{ "cells": [ { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "\n", "\n", "\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "# Proper" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "A text visualization in which proper nouns and verbs are marked.\n", "\n", "The sentences, clauses and phrases are also marked.\n", "\n", "The visualization shows genre transitions to and from genealogies." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ " 0.00s This is LAF-Fabric 4.3.3\n", "http://laf-fabric.readthedocs.org/en/latest/texts/API-reference.html\n" ] } ], "source": [ "import sys\n", "import collections\n", "\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "\n", "from laf.fabric import LafFabric\n", "fabric = LafFabric()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ " 0.00s LOADING API: please wait ... \n", " 0.00s INFO: USING DATA COMPILED AT: 2014-07-14T16-45-08\n", " 4.25s LOGFILE=/Users/dirk/laf-fabric-output/etcbc4/proper/__log__proper.txt\n", " 4.25s INFO: DATA LOADED FROM SOURCE etcbc4 AND ANNOX -- FOR TASK proper AT 2014-07-15T17-57-54\n" ] } ], "source": [ "fabric.load('etcbc4', '--', 'proper', {\n", " \"xmlids\": {\"node\": False, \"edge\": False},\n", " \"features\": ('''\n", " otype monads maxmonad minmonad\n", " gn sp\n", " label chapter book\n", " ''',''),\n", " \"primary\": False,\n", "})\n", "exec(fabric.localnames.format(var='fabric'))" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Genesis Exodus Leviticus Numeri DeuteronomiumJosua Judices Samuel_I Samuel_II Reges_I Reges_II Jesaia Jeremia Ezechiel Hosea Joel Amos Obadia Jona Micha Nahum Habakuk Zephania Haggai Sacharia Maleachi Psalmi Iob Proverbia Ruth Canticum EcclesiastesThreni Esther Daniel Esra Nehemia Chronica_I Chronica_II 4m 29s Results directory:\n", "/Users/dirk/laf-fabric-output/etcbc4/proper\n", "\n", "__log__proper.txt 205 Tue Jul 15 20:02:23 2014\n", "properviz.txt 3166173 Tue Jul 15 20:02:23 2014\n" ] } ], "source": [ "out = outfile(\"properviz.txt\")\n", "\n", "type_map = collections.defaultdict(lambda: None, [\n", " (\"chapter\", 'Ch'),\n", " (\"verse\", 'V'),\n", " (\"sentence\", 'S'),\n", " (\"clause\", 'C'),\n", " (\"phrase\", 'P'),\n", " (\"word\", 'w'),\n", "])\n", "otypes = ['Ch', 'V', 'S', 'C', 'P', 'w']\n", "watch = collections.defaultdict(lambda: {})\n", "start = {}\n", "cur_verse_label = ['','']\n", "\n", "def print_node(ob, obdata):\n", " (node, minm, maxm, monads) = obdata\n", " if ob == \"w\":\n", " if not watch:\n", " out.write(\"◘\".format(monads))\n", " else:\n", " outchar = \"─\"\n", " p_o_s = F.sp.v(node)\n", " if p_o_s == \"nmpr\":\n", " if F.gn.v(node) == \"m\": outchar = \"♂\"\n", " elif F.gn.v(node) == \"f\": outchar = \"♀\"\n", " elif F.gn.v(node) == \"unknown\": outchar = \"⊙\"\n", " elif p_o_s == \"verb\":\n", " outchar = \"♠\"\n", " out.write(outchar)\n", " if monads in watch:\n", " tofinish = watch[monads]\n", " for o in reversed(otypes):\n", " if o in tofinish:\n", " if o == 'C':\n", " out.write(\"┤\")\n", " elif o == 'P':\n", " if 'C' not in tofinish:\n", " out.write(\"┼\")\n", " elif o != 'S':\n", " out.write(\"{}»\".format(o))\n", " del watch[monads]\n", " elif ob == \"Ch\":\n", " this_chapter_label = \"{} {}\".format(F.book.v(node), F.chapter.v(node))\n", " elif ob == \"V\":\n", " this_verse_label = F.label.v(node).strip(\" \")\n", " cur_verse_label[0] = this_verse_label\n", " cur_verse_label[1] = this_verse_label\n", " elif ob == \"S\":\n", " out.write(\"\\n{:<11} \".format(cur_verse_label[1]))\n", " cur_verse_label[1] = ''\n", " watch[maxm][ob] = None\n", " elif ob == \"C\":\n", " out.write(\"├\")\n", " watch[maxm][ob] = None\n", " elif ob == \"P\":\n", " watch[maxm][ob] = None\n", " else:\n", " out.write(\"«{}\".format(ob))\n", " watch[maxm][ob] = None\n", "\n", "lastmin = None\n", "lastmax = None\n", "\n", "for i in NN():\n", " otype = F.otype.v(i)\n", " if otype == 'book':\n", " sys.stderr.write(\"{:<11}\".format(F.book.v(i)))\n", " \n", " ob = type_map[otype]\n", " if ob == None:\n", " continue\n", " monads = F.monads.v(i)\n", " minm = F.minmonad.v(i)\n", " maxm = F.maxmonad.v(i)\n", " if lastmin == minm and lastmax == maxm:\n", " start[ob] = (i, minm, maxm, monads)\n", " else:\n", " for o in otypes:\n", " if o in start:\n", " print_node(o, start[o])\n", " start = {ob: (i, minm, maxm, monads)}\n", " lastmin = minm\n", " lastmax = maxm\n", "for ob in otypes:\n", " if ob in start:\n", " print_node(ob, start[ob])\n", "\n", "close()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " ├─┼♠┼─┤\n", " ├─┼♠┼─┼─┤\n", "EXO 05,11 ├─┤├♠┤\n", " ├♠┼─┼─┤├──┼♠┤\n", " ├─┼─┼♠┼──┼─┤\n", "EXO 05,12 ├─┼♠┼──┼───⊙┤├─♠┼─┼──┤◘\n", "EXO 05,13 ├─┼─♠┼♠┤├─♠┤\n", " ├♠┼─┼──┼──┤├──┼─♠┼──┤\n", "EXO 05,14 ├─┼♠┼♠─⊙┤├─┼♠┼─┼♠─┤├─♠┤\n", " ├─┼─┼♠┼─┼├─♠┼───┤─────┤\n", "EXO 05,15 ├─┼♠┼♠─⊙┤\n", " ├─┼♠┼──┤├─♠┤\n", " ├─┼♠┼─┼──┤\n", "EXO 05,16 ├─┼─┼♠┼──┤\n", " ├─┼─┼\n", " ├♠┼─┤♠┤\n", " ├─┼─┼─┼♠┤\n", " ├─┼♠┼─┤\n", "EXO 05,17 ├─┼♠┤\n", " ├♠┼─┤├♠┤\n", " ├──┼─┼♠┤\n", " ├♠┤\n", " ├♠┼─♂┤\n", "EXO 05,18 ├─┼─┤\n", " ├♠┤\n", " ├♠┤\n", " ├─┼─┼─┼♠┼─┤\n", " ├─┼──┼♠┤\n", "EXO 05,19 ├─┼♠┼♠─⊙┼─┼──┤├─♠┤\n", " ├─┼♠┼──┼──┼──┤\n", "EXO 05,20 ├─┼♠┼─♂──♂┤├♠┤├─♠┤├─♠┼───┤\n", "EXO 05,21 ├─┼♠┼─┤\n", " ├♠┼♂┼─┤\n", " ├─┼♠┤├─┼♠┼──┼───────┤├─♠┼─┼──┤├─♠┤\n", "EXO 05,22 ├─┼♠┼♂┼─♂┤\n", " ├─┼♠┤\n", " ├♂┤├─┼♠┼─────┤\n", " ├──┼♠┤\n", "EXO 05,23 ├─┼──┼♠┼──┤├─♠┼──┤\n", " ├♠┼─────┤\n", " ├─┼♠┼─┼♠┼──┤\n", "EXO 06,01 ├─┼♠┼♂┼─♂┤\n", " ├─┼♠┤├─┼♠┼──┤\n", " ├─┼───┼♠┤\n", " ├─┼───┼♠┼──┤\n", "EXO 06,02 ├─┼♠┼─┼─♂┤\n", " ├─┼♠┼─┤\n", " ├─┼♂┤\n", "EXO 06,03 ├─┼♠┼─♂─♂──♂┼──♂┤\n", " ├─┼─♂┤├─┼♠┼─┤\n", "EXO 06,04 ├─┼─┼♠┼──┼─┤├─♠┼─┼──⊙───┤├─┼♠┼─┤\n", "EXO 06,05 ├─┼──┼♠┼───⊙┤├─┼⊙┼♠┼─┤\n", " ├─┼♠┼──┤\n", "EXO 06,06 ├─┤\n", " ├♠┼──⊙┤\n", " ├─┼♂┤\n", " ├─┼♠┼─┼───⊙┤\n", " ├─┼♠┼─┼──┤\n", " ├─┼♠┼─┼──♠────┤\n", "EXO 06,07 ├─┼♠┼─┼─┼──┤\n", " ├─┼♠┼─┼──┤\n", " ├─┼♠┤├─┼─┼♂─┤├─┼♠┼─┼───⊙┤\n", "EXO 06,08 ├─┼♠┼─┼───┤├─┼♠┼──┤├─♠┼─┼─♂─♂──♂┤\n", " ├─┼♠┼─┼─┼─┤\n", " ├─┼♂┤\n", "EXO 06,09 ├─┼♠┼♂┼─┼──⊙┤\n", " ├─┼─┼♠┼─♂┼───────┤\n", "EXO 06,10 ├─┼♠┼♂┼─♂┤├─♠┤\n", "EXO 06,11 ├♠┤\n", " ├♠┼───⊙┤\n", " ├─┼♠┼──⊙┼──┤\n", "EXO 06,12 ├─┼♠┼♂┼──♂┤├─♠┤\n", " ├─┤\n", " ├─⊙┼─┼♠┼─┤\n", " ├─┼─┼♠┼─┤\n", " ├─┼─┼──┤\n", "EXO 06,13 ├─┼♠┼♂┼─♂──♂┤\n", " ├─┼♠┼──⊙────⊙┤├─♠┼──⊙┼──⊙┤\n", "EXO 06,14 ├─┼───┤\n", " ├─⊙─⊙┼♂─♂♂─♂┤\n", " ├─┼─⊙┤\n", "EXO 06,15 ├─┼─⊙┼♂─♂─♂─♂─♂─♂───┤\n", " ├─┼─⊙┤\n", "EXO 06,16 ├─┼─┼──⊙┼──┤\n", " ├♂─♂─♂┤\n", " ├─┼──⊙┼──────┤\n", "EXO 06,17 ├─♂┼♂─♂┼──┤\n", "EXO 06,18 ├─┼─♂┼♂─♂─♂─♂┤\n", " ├─┼──♂┼──────┤\n", "EXO 06,19 ├─┼─♂┼♂─♂┤\n", " ├─┼───┼──┤\n", "EXO 06,20 ├─┼♠┼♂┼─♀─┼─┼──┤\n", " ├─┼♠┼─┼─♂──♂┤\n", " ├─┼──♂┼──────┤\n", "EXO 06,21 ├─┼─♂┼♂─♂─♂┤\n", "EXO 06,22 ├─┼─♂┼♂─♂─♂┤\n", "EXO 06,23 ├─┼♠┼♂┼─♀─♂─♂┼─┼──┤\n", " ├─┼♠┼─┼─♂──♂─♂──♂┤\n", "EXO 06,24 ├─┼─♂┼♂─♂─♂┤\n", " ├─┼───┤\n", "\n" ] } ], "source": [ "viz = infile('properviz.txt')\n", "lines = viz.readlines()\n", "print(''.join(lines[5021:5121]))" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Let us plot the proper noun density per chapter.\n", "First we put the chapters, proper noun frequencies and verb frequencies in corresponding lists ``ch``, ``p``, and ``v``." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "book = None\n", "chapter = None\n", "words = 0\n", "proper = 0\n", "verb = 0\n", "ch = []\n", "p = []\n", "v = []\n", "\n", "for node in NN(test=F.otype.v, values=['word', 'chapter', 'book']):\n", " otype = F.otype.v(node)\n", " if otype == 'book':\n", " book = F.book.v(node)\n", " elif otype == 'chapter':\n", " if chapter != None:\n", " p.append(100 * float(proper)/words if words else 0)\n", " v.append(100 * float(verb)/words if words else 0)\n", " ch.append(cur_chapter)\n", " chapter = F.chapter.v(node)\n", " cur_chapter = \"{} {}\".format(book, chapter)\n", " verb = 0\n", " proper = 0\n", " words = 0\n", " else:\n", " words += 1\n", " if F.sp.v(node) == 'nmpr':\n", " proper += 1\n", " if F.sp.v(node) == 'verb':\n", " verb += 1\n", "if chapter != None:\n", " ch.append(cur_chapter)\n", " p.append(100 * float(proper)/words if words else 0)\n", " v.append(100 * float(verb)/words if words else 0)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Then we plot the ``p`` and ``v`` series against the ``ch`` series." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWwAAAEsCAYAAADnx4nVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xd8VFX6x/FPFEUFQVGUYtcFsWL9uSoSe8P2Q9xV14br\nWnZdsC5YFuwKumBBXd2lCAJWlPVnAZWIgCJFpChFqiBNBKWEkuT8/ngmmyGZSe5k7sycm3zfr9e8\nMnNn5pknycwz5557zrkgIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiKRUKeGvpaISGQsALoAM4Cf\ngb5AXSAfWAzcDSwFBgDbA72BJbFLr9g24h7fFVgJzAeuiHudusCTwEJgGfACsEO558a/loiIlLMA\nmAo0B3YFxgAPAW2BLcBjwHZYcX0QGAfsHruMjW0DK7pbsKK8HXAKsA5oEbu/F/AOsAtQHxgOPFru\nufGvJSIi5cwH/hR3+1zge6xgb6KsBU1s+zlxt8+KPR/Kiu6Ocfe/BtwH5GHF+4C4+34LzIt7bvnX\nEskK9b9J1PwQd30R0Cx2fSWwOe6+ZliXRqLHAqwGCuNuLwSaYq3xnYBJcfflAdvE3S7/WiJZsU3V\nDxHxyj7lrv8Yu+7KPe5HYL8kjwXrUtkp7va+sft/wgr5IbHH7Ip1jTSIe2z51xLJChVsiZI84Bas\nD7sRcC8wNMljh2BdHKV92H8HBpZ7zANYP3Qb4HzgDawYv4wdsGwce1xzrEtFJKdUsCVKHDAYGAHM\nBeYAD2OFvHyr92FgInaQcmrs+sNx9y/DukV+xAr5jcDs2H1/w/rAvwR+AUZSdkCyNA8Rby3A3vRf\nA1/FtjXC3sizsQ/QLjnJTGqT+cBpIcTJZ+u+cJFICNrCdtib/Cjg+Ni2LpS1PD6J3RYRkQxJpUsk\nr9ztCymbNDAAuDiUjESyQ90aUmPNw7pDJgI3xLatjrs/r9xtERHJkaaxn42BKdhR9fIF+uesZiQi\nUssEnTizNPZzJTAM68deDjTBjrY3BVaUf9KBBx7o5s6dG0KaIiK1yjdA6/Ibg/Rh7wTsHLteDxuP\nOg1bX+Ga2PZrsLUXtjJ37lycc2ldunXrltPn+xLDhxx8ieFDDr7E8CEHX2L4kENYMYAjExXjIC3s\nPbFWdenjX8WG8U0EXgeux4b9XRYgloiIVFOQgj2fBE1zrM/6jHDTERGRZLbNcPzu3bt3TzvIfvvt\nl9Pn+xLDhxx8ieFDDr7E8CEHX2L4kEMYMR544AGwpRO2Un5sddhcrD9GREQCysvLgwT1WWuJiIhE\nhAq2iEhEqGCLiESECraISESoYIuIRIQKtohIRKhgi4hEhAq2iEhEqGCLiESECraISESoYIuIRIQK\ntohIRKhgi4hEhAq2iEhEqGCLiESECraISESoYIuIRIQKtohIRKhgi4hEhAq2iEhEqGCLiESECraI\nSESoYIuIRIQKtohIRKhgi4hEhAq2iEhEqGCLiESECraISESoYIuIRIQKtohIRKhgi4hEhAq2iEhE\nBC3Y2wJfA/+J3W4EjARmAyOAXcJPTURE4gUt2J2AbwEXu90FK9gtgE9it0VEJIOCFOy9gPOAfwF5\nsW0XAgNi1wcAF4efmoiIxAtSsHsBdwElcdv2BJbHri+P3RYRkQyqqmC3A1Zg/dd5SR7jKOsqERGR\nDKlTxf0nYt0f5wE7AA2AgVirugmwDGiKFfWEunfv/t/r+fn55Ofnp5OviEiNU1BQQEFBQZWPS9Zq\nTqQtcCdwAdADWAU8gR1w3IXEBx6dc2p8i4ikIi8vDxLU51THYZdW38eBM7FhfafFbouISAal0sKu\nDrWwRURSFFYLW0REckQFW0QkIlSwRUQiQgVbRCQiVLBFRCJCBVtEJCJUsEVEIkIFW0QkIlSwRUQi\nQgVbRCQiVLBFRCJCBVtEJCJUsEVEIkIFW0QkIlSwRUQiQgVbRCQiVLBFRCJCBVtEJCJUsEVEIkIF\nW0QkIlSwRUQiQgVbRCQiVLBFRCJCBVtEJCJUsEVEIkIFW0QkIlSwRUQiQgVbRCQiVLBFRCJCBVtE\nJCJUsEVEIkIFW0QkIlSwRUQiQgVbRCQiVLBFRCKiqoK9AzAemAJ8CzwW294IGAnMBkYAu2QqQRER\nMXkBHrMTsAGoA4wB7gQuBH4CegB/A3YFuiR4rnPOhZOpiEgtkZeXBwnqc5AukQ2xn9sD2wKrsYI9\nILZ9AHBx+imKiEhlghTsbbAukeXAKGAGsGfsNrGfe2YkOxER+a86AR5TArQGGgIfAaeWu9/FLgl1\n7979v9fz8/PJz89PNUcRkRqtoKCAgoKCKh8XpA873v1AIfBHIB9YBjTFWt4HJ3i8+rBFRFJU3T7s\n3SkbAbIjcCbwNTAcuCa2/RrgnVCyFBGRpKpqYR+OHVTcJnYZCPTEhvW9DuwDLAAuA9YkeL5a2CIi\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = range(len(ch))\n", "start = 50\n", "end = 70\n", "fig = plt.figure()\n", "plt.plot(x[start:end], p[start:end], 'b-', x[start:end], v[start:end], 'r-')\n", "plt.axis([start, end, 0, 50])\n", "plt.xticks(x[start:end], ch[start:end], rotation='vertical')\n", "plt.margins(0.2)\n", "plt.subplots_adjust(bottom=0.15);\n", "plt.title('proper');" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.6.0" } }, "nbformat": 4, "nbformat_minor": 0 }