Voici le modèle pour les implicatures scalaires qu'on a vu la dernière fois. ~~~~ // possible states of the world var states = [0, 1, 2, 3] var statePrior = function() { categorical({ ps: [0.1, 0.2, 0.5, 0.2], vs: states })} // possible utterances var utterancePrior = function() { return uniformDraw(['all', 'some', 'none']) } // meaning function to interpret the utterances var literalMeanings = { all: function(state) { return state === 3; }, some: function(state) { return state > 0; }, none: function(state) { return state === 0; }, } // literal listener var literalListener = cache(function(utt) { return Infer({model: function(){ var state = statePrior() var meaning = literalMeanings[utt] condition(meaning(state)) return state }}) }) // set speaker optimality var alpha = 1 // pragmatic speaker var speaker = cache(function(state) { return Infer({model: function(){ var utt = utterancePrior() factor(alpha * literalListener(utt).score(state)) return utt }}) }) // pragmatic listener var pragmaticListener = cache(function(utt) { return Infer({model: function(){ var state = statePrior() observe(speaker(state),utt) return state }}) }) display("pragmatic listener's interpretation of 'some':") viz(pragmaticListener('some')) ~~~~