{ "metadata": { "language": "Julia", "name": "", "signature": "sha256:6c2a281408ab6af7ee0e721ce713e7fb151e597636dfae6454ce2566544a42f9" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Based on http://dippl.org/examples/pragmatics.html" ] }, { "cell_type": "code", "collapsed": false, "input": [ "using Gadfly, Stochy" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "@pp function literallistener(utterance)\n", " enum() do\n", " local world = worldprior(),\n", " m = meaning(utterance, world)\n", " factor(m ? 0 : -Inf)\n", " world\n", " end\n", "end" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 2, "text": [ "literallistener (generic function with 1 method)" ] } ], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "@pp function worldprior()\n", " randominteger(4) - 1\n", "end" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 3, "text": [ "worldprior (generic function with 1 method)" ] } ], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "@pp function utteranceprior()\n", " local utterances = [\n", " \"some of the people are nice\",\n", " \"all of the people are nice\",\n", " \"none of the people are nice\"]\n", " utterances[randominteger(3)]\n", "end" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 4, "text": [ "utteranceprior (generic function with 1 method)" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "@pp function meaning(utterance, world)\n", " utterance == \"some of the people are nice\" ? world > 0 :\n", " utterance == \"all of the people are nice\" ? world == 3 :\n", " utterance == \"none of the people are nice\" ? world == 0 :\n", " true\n", "end" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 5, "text": [ "meaning (generic function with 1 method)" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "dist = @pp literallistener(\"some of the people are nice\");" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "plot(dist)" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", "\n", "\n", " \n", " x\n", " \n", " \n", " 0\n", " 1\n", " 2\n", " 3\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " -0.5\n", " -0.4\n", " -0.3\n", " -0.2\n", " -0.1\n", " 0.0\n", " 0.1\n", " 0.2\n", " 0.3\n", " 0.4\n", " 0.5\n", " 0.6\n", " 0.7\n", " 0.8\n", " 0.9\n", " -0.40\n", " -0.38\n", " -0.36\n", " -0.34\n", " -0.32\n", " -0.30\n", " -0.28\n", " -0.26\n", " -0.24\n", " -0.22\n", " -0.20\n", " -0.18\n", " -0.16\n", " -0.14\n", " -0.12\n", " -0.10\n", " -0.08\n", " -0.06\n", " -0.04\n", " -0.02\n", " 0.00\n", " 0.02\n", " 0.04\n", " 0.06\n", " 0.08\n", " 0.10\n", " 0.12\n", " 0.14\n", " 0.16\n", " 0.18\n", " 0.20\n", " 0.22\n", " 0.24\n", " 0.26\n", " 0.28\n", " 0.30\n", " 0.32\n", " 0.34\n", " 0.36\n", " 0.38\n", " 0.40\n", " 0.42\n", " 0.44\n", " 0.46\n", " 0.48\n", " 0.50\n", " 0.52\n", " 0.54\n", " 0.56\n", " 0.58\n", " 0.60\n", " 0.62\n", " 0.64\n", " 0.66\n", " 0.68\n", " 0.70\n", " 0.72\n", " 0.74\n", " 0.76\n", " 0.78\n", " 0.80\n", " 0.82\n", " -0.5\n", " 0.0\n", " 0.5\n", " 1.0\n", " -0.4\n", " -0.3\n", " -0.2\n", " -0.1\n", " 0.0\n", " 0.1\n", " 0.2\n", " 0.3\n", " 0.4\n", " 0.5\n", " 0.6\n", " 0.7\n", " 0.8\n", " \n", " \n", " y\n", " \n", "\n", "\n", "\n", " \n", "\n", "\n", "\n", "\n" ], "metadata": {}, "output_type": "pyout", "prompt_number": 7, "svg": [ "\n", "\n", "\n", " \n", " x\n", " \n", " \n", " 0\n", " 1\n", " 2\n", " 3\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " 0.0\n", " 0.1\n", " 0.2\n", " 0.3\n", " 0.4\n", " \n", " \n", " y\n", " \n", "\n", "\n", "\n", " \n", "\n", "\n" ], "text": [ "Plot(...)" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "@pp function speaker(world)\n", " enum() do\n", " local utterance = utteranceprior()\n", " #factor(world == sample(literallistener(utterance)) ? 0 : -Inf)\n", " local l = literallistener(utterance)\n", " factor(score(l, world))\n", " utterance\n", " end\n", "end" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 8, "text": [ "speaker (generic function with 1 method)" ] } ], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "@pp function listener(utterance)\n", " enum() do\n", " local world = worldprior()\n", " #factor(utterance == sample(speaker(world)) ? 0 : -Inf)\n", " local s = speaker(world)\n", " factor(score(s, utterance))\n", " world\n", " end\n", "end" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ "listener (generic function with 1 method)" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "dist = @pp listener(\"some of the people are nice\");" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "plot(dist)" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", "\n", "\n", " \n", " x\n", " \n", " \n", " 0\n", " 1\n", " 2\n", " 3\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " -0.6\n", " -0.5\n", " -0.4\n", " -0.3\n", " -0.2\n", " -0.1\n", " 0.0\n", " 0.1\n", " 0.2\n", " 0.3\n", " 0.4\n", " 0.5\n", " 0.6\n", " 0.7\n", " 0.8\n", " 0.9\n", " 1.0\n", " 1.1\n", " -0.50\n", " -0.48\n", " -0.46\n", " -0.44\n", " -0.42\n", " -0.40\n", " -0.38\n", " -0.36\n", " -0.34\n", " -0.32\n", " -0.30\n", " -0.28\n", " -0.26\n", " -0.24\n", " -0.22\n", " -0.20\n", " -0.18\n", " -0.16\n", " -0.14\n", " -0.12\n", " -0.10\n", " -0.08\n", " -0.06\n", " -0.04\n", " -0.02\n", " 0.00\n", " 0.02\n", " 0.04\n", " 0.06\n", " 0.08\n", " 0.10\n", " 0.12\n", " 0.14\n", " 0.16\n", " 0.18\n", " 0.20\n", " 0.22\n", " 0.24\n", " 0.26\n", " 0.28\n", " 0.30\n", " 0.32\n", " 0.34\n", " 0.36\n", " 0.38\n", " 0.40\n", " 0.42\n", " 0.44\n", " 0.46\n", " 0.48\n", " 0.50\n", " 0.52\n", " 0.54\n", " 0.56\n", " 0.58\n", " 0.60\n", " 0.62\n", " 0.64\n", " 0.66\n", " 0.68\n", " 0.70\n", " 0.72\n", " 0.74\n", " 0.76\n", " 0.78\n", " 0.80\n", " 0.82\n", " 0.84\n", " 0.86\n", " 0.88\n", " 0.90\n", " 0.92\n", " 0.94\n", " 0.96\n", " 0.98\n", " 1.00\n", " -0.5\n", " 0.0\n", " 0.5\n", " 1.0\n", " -0.50\n", " -0.45\n", " -0.40\n", " -0.35\n", " -0.30\n", " -0.25\n", " -0.20\n", " -0.15\n", " -0.10\n", " -0.05\n", " 0.00\n", " 0.05\n", " 0.10\n", " 0.15\n", " 0.20\n", " 0.25\n", " 0.30\n", " 0.35\n", " 0.40\n", " 0.45\n", " 0.50\n", " 0.55\n", " 0.60\n", " 0.65\n", " 0.70\n", " 0.75\n", " 0.80\n", " 0.85\n", " 0.90\n", " 0.95\n", " 1.00\n", " \n", " \n", " y\n", " \n", "\n", "\n", "\n", " \n", "\n", "\n", "\n", "\n" ], "metadata": {}, "output_type": "pyout", "prompt_number": 11, "svg": [ "\n", "\n", "\n", " \n", " x\n", " \n", " \n", " 0\n", " 1\n", " 2\n", " 3\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " 0.0\n", " 0.1\n", " 0.2\n", " 0.3\n", " 0.4\n", " 0.5\n", " \n", " \n", " y\n", " \n", "\n", "\n", "\n", " \n", "\n", "\n" ], "text": [ "Plot(...)" ] } ], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 11 } ], "metadata": {} } ] }