{
"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"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 7,
"svg": [
"\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"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 11,
"svg": [
"\n",
"\n"
],
"text": [
"Plot(...)"
]
}
],
"prompt_number": 11
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 11
}
],
"metadata": {}
}
]
}