///fold:
var truthConditionalMeanings = {
"apple" : {
"blue_apple" : 0,
"green_apple" : 0,
"red_apple" : 0
},
"avocado" : {
"black_avocado" : 0,
"green_avocado" : 0,
"red_avocado" : 0
},
"banana" : {
"blue_banana" : 0,
"brown_banana" : 0,
"yellow_banana" : 0
},
"carrot" : {
"brown_carrot" : 0,
"orange_carrot" : 0,
"pink_carrot" : 0
},
"pear" : {
"green_pear" : 0,
"orange_pear" : 0,
"yellow_pear" : 0
},
"pepper" : {
"black_pepper" : 0,
"orange_pepper" : 0,
"red_pepper" : 0,
"green_pepper" : 0
},
"tomato" : {
"green_tomato" : 0,
"pink_tomato" : 0,
"red_tomato" : 0
},
"fruit" : {
"blue_apple" : 0,
"green_apple" : 0,
"red_apple" : 0,
"black_avocado" : 0,
"green_avocado" : 0,
"red_avocado" : 0,
"blue_banana" : 0,
"brown_banana" : 0,
"yellow_banana" : 0,
"green_pear" : 0,
"orange_pear" : 0,
"yellow_pear" : 0
},
"vegetable" : {
"brown_carrot" : 0,
"orange_carrot" : 0,
"pink_carrot" : 0,
"green_tomato" : 0,
"pink_tomato" : 0,
"red_tomato" : 0,
"black_pepper" : 0,
"orange_pepper" : 0,
"red_pepper" : 0,
"green_pepper" : 0
},
"yellow" : {
"yellow_banana" : 0,
"yellow_pear" : 0
},
"orange" : {
"orange_carrot" : 0,
"orange_pear" : 0,
"orange_pepper" : 0
},
"red" : {
"red_apple" : 0,
"red_avocado" : 0,
"red_pepper" : 0,
"red_tomato" : 0
},
"pink" : {
"pink_carrot" : 0,
"pink_tomato" : 0
},
"green" : {
"green_apple" : 0,
"green_avocado" : 0,
"green_pear" : 0,
"green_pepper" : 0,
"green_tomato" : 0
},
"blue" : {
"blue_apple" : 0,
"blue_banana" : 0
},
"brown" : {
"brown_banana" : 0,
"brown_carrot" : 0
},
"black" : {
"black_avocado" : 0,
"black_pepper" : 0
},
"black_avocado" : {
"black_avocado" : 0
},
"black_pepper" : {
"black_pepper" : 0
},
"blue_apple" : {
"blue_apple" : 0
},
"blue_banana" : {
"blue_banana" : 0
},
"brown_banana" : {
"brown_banana" : 0
},
"green_apple" : {
"green_apple" : 0
},
"green_avocado" : {
"green_avocado" : 0
},
"green_pear" : {
"green_pear" : 0
},
"green_pepper" : {
"green_pepper" : 0
},
"orange_carrot" : {
"orange_carrot" : 0
},
"orange_pear" : {
"orange_pear" : 0
},
"orange_pepper" : {
"orange_pepper" : 0
},
"pink_carrot" : {
"pink_carrot" : 0
},
"pink_tomato" : {
"pink_tomato" : 0
},
"red_apple" : {
"red_apple" : 0
},
"red_avocado" : {
"red_avocado" : 0
},
"red_pepper" : {
"red_pepper" : 0
},
"red_tomato" : {
"red_tomato" : 0
},
"yellow_banana" : {
"yellow_banana" : 0
},
"yellow_pear" : {
"yellow_pear" : 0
},
"brown_carrot" : {
"brown_carrot" : 0
},
"green_tomato" : {
"green_tomato" : 0
}
};
var realValuedMeanings = {
"black_avocado" : {
"blue_apple" : 0.049,
"green_apple" : 0.064,
"red_apple" : 0.022,
"black_avocado" : 0.953,
"green_avocado" : 0.305,
"red_avocado" : 0.373,
"blue_banana" : 0.04,
"brown_banana" : 0.004,
"yellow_banana" : 0.09,
"brown_carrot" : 0,
"orange_carrot" : 0.126,
"pink_carrot" : 0.067,
"green_pear" : 0.08,
"orange_pear" : 0.156,
"yellow_pear" : 0.016,
"black_pepper" : 0.04,
"green_pepper" : 0.055,
"orange_pepper" : 0.017,
"red_pepper" : 0.071,
"green_tomato" : 0.028,
"pink_tomato" : 0.01,
"red_tomato" : 0.132,
},
"black_pepper" : {
"blue_apple" : 0.002,
"green_apple" : 0.02,
"red_apple" : 0.046,
"black_avocado" : 0.12,
"green_avocado" : 0.058,
"red_avocado" : 0.027,
"blue_banana" : 0.06,
"brown_banana" : 0.01,
"yellow_banana" : 0.043,
"brown_carrot" : 0.035,
"orange_carrot" : 0.02,
"pink_carrot" : 0.024,
"green_pear" : 0.086,
"orange_pear" : 0.006,
"yellow_pear" : 0.017,
"black_pepper" : 0.917,
"green_pepper" : 0.199,
"orange_pepper" : 0.207,
"red_pepper" : 0.226,
"green_tomato" : 0.009,
"pink_tomato" : 0.034,
"red_tomato" : 0.061,
},
"blue_apple" : {
"blue_apple" : 0.916,
"green_apple" : 0.241,
"red_apple" : 0.218,
"black_avocado" : 0.035,
"green_avocado" : 0.051,
"red_avocado" : 0.021,
"blue_banana" : 0.083,
"brown_banana" : 0.126,
"yellow_banana" : 0.018,
"brown_carrot" : 0.019,
"orange_carrot" : 0.027,
"pink_carrot" : 0.05,
"green_pear" : 0.023,
"orange_pear" : 0.03,
"yellow_pear" : 0.012,
"black_pepper" : 0.05,
"green_pepper" : 0.007,
"orange_pepper" : 0.097,
"red_pepper" : 0.014,
"green_tomato" : 0.14,
"pink_tomato" : 0.05,
"red_tomato" : 0.006,
},
"blue_banana" : {
"blue_apple" : 0.026,
"green_apple" : 0.08,
"red_apple" : 0.032,
"black_avocado" : 0.022,
"green_avocado" : 0.014,
"red_avocado" : 0.166,
"blue_banana" : 0.913,
"brown_banana" : 0.179,
"yellow_banana" : 0.202,
"brown_carrot" : 0.018,
"orange_carrot" : 0.044,
"pink_carrot" : 0.07,
"green_pear" : 0.032,
"orange_pear" : 0.038,
"yellow_pear" : 0.152,
"black_pepper" : 0.018,
"green_pepper" : 0.195,
"orange_pepper" : 0.002,
"red_pepper" : 0.013,
"green_tomato" : 0.108,
"pink_tomato" : 0.064,
"red_tomato" : 0.029,
},
"brown_banana" : {
"blue_apple" : 0.038,
"green_apple" : 0.052,
"red_apple" : 0,
"black_avocado" : 0.025,
"green_avocado" : 0.022,
"red_avocado" : 0.06,
"blue_banana" : 0.184,
"brown_banana" : 0.896,
"yellow_banana" : 0.278,
"brown_carrot" : 0.019,
"orange_carrot" : 0.01,
"pink_carrot" : 0.028,
"green_pear" : 0.027,
"orange_pear" : 0.192,
"yellow_pear" : 0.145,
"black_pepper" : 0.018,
"green_pepper" : 0.052,
"orange_pepper" : 0.01,
"red_pepper" : 0.037,
"green_tomato" : 0.015,
"pink_tomato" : 0.003,
"red_tomato" : 0.045,
},
"brown_carrot" : {
"blue_apple" : 0.02,
"green_apple" : 0.155,
"red_apple" : 0.06,
"black_avocado" : 0.03,
"green_avocado" : 0.01,
"red_avocado" : 0.166,
"blue_banana" : 0.053,
"brown_banana" : 0.073,
"yellow_banana" : 0.098,
"brown_carrot" : 0.889,
"orange_carrot" : 0.305,
"pink_carrot" : 0.182,
"green_pear" : 0.03,
"orange_pear" : 0.14,
"yellow_pear" : 0.043,
"black_pepper" : 0.059,
"green_pepper" : 0.012,
"orange_pepper" : 0.034,
"red_pepper" : 0.01,
"green_tomato" : 0.026,
"pink_tomato" : 0.138,
"red_tomato" : 0.022,
},
"green_apple" : {
"blue_apple" : 0.198,
"green_apple" : 0.949,
"red_apple" : 0.303,
"black_avocado" : 0.028,
"green_avocado" : 0.114,
"red_avocado" : 0.037,
"blue_banana" : 0.032,
"brown_banana" : 0.012,
"yellow_banana" : 0.112,
"brown_carrot" : 0.012,
"orange_carrot" : 0.015,
"pink_carrot" : 0.03,
"green_pear" : 0.321,
"orange_pear" : 0.021,
"yellow_pear" : 0.089,
"black_pepper" : 0.009,
"green_pepper" : 0.158,
"orange_pepper" : 0.015,
"red_pepper" : 0.043,
"green_tomato" : 0.336,
"pink_tomato" : 0.07,
"red_tomato" : 0.248,
},
"green_avocado" : {
"blue_apple" : 0.031,
"green_apple" : 0.103,
"red_apple" : 0.012,
"black_avocado" : 0.379,
"green_avocado" : 0.965,
"red_avocado" : 0.289,
"blue_banana" : 0.005,
"brown_banana" : 0.027,
"yellow_banana" : 0.012,
"brown_carrot" : 0.017,
"orange_carrot" : 0.02,
"pink_carrot" : 0.013,
"green_pear" : 0.101,
"orange_pear" : 0.022,
"yellow_pear" : 0.226,
"black_pepper" : 0.038,
"green_pepper" : 0.337,
"orange_pepper" : 0.086,
"red_pepper" : 0.043,
"green_tomato" : 0.107,
"pink_tomato" : 0.03,
"red_tomato" : 0.032,
},
"green_pear" : {
"blue_apple" : 0.029,
"green_apple" : 0.06,
"red_apple" : 0.068,
"black_avocado" : 0.183,
"green_avocado" : 0.038,
"red_avocado" : 0.033,
"blue_banana" : 0.047,
"brown_banana" : 0.013,
"yellow_banana" : 0.073,
"brown_carrot" : 0.027,
"orange_carrot" : 0.03,
"pink_carrot" : 0.052,
"green_pear" : 0.943,
"orange_pear" : 0.262,
"yellow_pear" : 0.461,
"black_pepper" : 0.078,
"green_pepper" : 0.337,
"orange_pepper" : 0.093,
"red_pepper" : 0.08,
"green_tomato" : 0.053,
"pink_tomato" : 0.009,
"red_tomato" : 0.146,
},
"green_pepper" : {
"blue_apple" : 0.088,
"green_apple" : 0.08,
"red_apple" : 0.034,
"black_avocado" : 0.045,
"green_avocado" : 0.057,
"red_avocado" : 0.155,
"blue_banana" : 0.022,
"brown_banana" : 0,
"yellow_banana" : 0.06,
"brown_carrot" : 0.01,
"orange_carrot" : 0.015,
"pink_carrot" : 0.095,
"green_pear" : 0.108,
"orange_pear" : 0.046,
"yellow_pear" : 0.047,
"black_pepper" : 0.267,
"green_pepper" : 0.97,
"orange_pepper" : 0.262,
"red_pepper" : 0.269,
"green_tomato" : 0.137,
"pink_tomato" : 0.12,
"red_tomato" : 0.036,
},
"green_tomato" : {
"blue_apple" : 0.04,
"green_apple" : 0.166,
"red_apple" : 0.024,
"black_avocado" : 0.005,
"green_avocado" : 0.045,
"red_avocado" : 0.07,
"blue_banana" : 0.026,
"brown_banana" : 0.05,
"yellow_banana" : 0.015,
"brown_carrot" : 0.014,
"orange_carrot" : 0.023,
"pink_carrot" : 0.009,
"green_pear" : 0.041,
"orange_pear" : 0.02,
"yellow_pear" : 0.034,
"black_pepper" : 0.028,
"green_pepper" : 0.242,
"orange_pepper" : 0.055,
"red_pepper" : 0,
"green_tomato" : 0.953,
"pink_tomato" : 0.187,
"red_tomato" : 0.272,
},
"orange_carrot" : {
"blue_apple" : 0.025,
"green_apple" : 0.005,
"red_apple" : 0.185,
"black_avocado" : 0.021,
"green_avocado" : 0.008,
"red_avocado" : 0.06,
"blue_banana" : 0.022,
"brown_banana" : 0.012,
"yellow_banana" : 0.049,
"brown_carrot" : 0.27,
"orange_carrot" : 0.962,
"pink_carrot" : 0.19,
"green_pear" : 0.012,
"orange_pear" : 0.104,
"yellow_pear" : 0.073,
"black_pepper" : 0.024,
"green_pepper" : 0.04,
"orange_pepper" : 0.23,
"red_pepper" : 0.101,
"green_tomato" : 0.017,
"pink_tomato" : 0.007,
"red_tomato" : 0.167,
},
"orange_pear" : {
"blue_apple" : 0.008,
"green_apple" : 0.142,
"red_apple" : 0.054,
"black_avocado" : 0.015,
"green_avocado" : 0.008,
"red_avocado" : 0.089,
"blue_banana" : 0.017,
"brown_banana" : 0.039,
"yellow_banana" : 0.006,
"brown_carrot" : 0.07,
"orange_carrot" : 0.36,
"pink_carrot" : 0.072,
"green_pear" : 0.303,
"orange_pear" : 0.795,
"yellow_pear" : 0.506,
"black_pepper" : 0.042,
"green_pepper" : 0.054,
"orange_pepper" : 0.403,
"red_pepper" : 0.055,
"green_tomato" : 0.038,
"pink_tomato" : 0.055,
"red_tomato" : 0.044,
},
"orange_pepper" : {
"blue_apple" : 0.022,
"green_apple" : 0.058,
"red_apple" : 0.045,
"black_avocado" : 0.01,
"green_avocado" : 0.125,
"red_avocado" : 0.045,
"blue_banana" : 0.041,
"brown_banana" : 0.081,
"yellow_banana" : 0.014,
"brown_carrot" : 0.102,
"orange_carrot" : 0.093,
"pink_carrot" : 0.007,
"green_pear" : 0.045,
"orange_pear" : 0.11,
"yellow_pear" : 0.097,
"black_pepper" : 0.143,
"green_pepper" : 0.247,
"orange_pepper" : 0.924,
"red_pepper" : 0.363,
"green_tomato" : 0.105,
"pink_tomato" : 0.052,
"red_tomato" : 0.01,
},
"pink_carrot" : {
"blue_apple" : 0.015,
"green_apple" : 0.053,
"red_apple" : 0.054,
"black_avocado" : 0.032,
"green_avocado" : 0.026,
"red_avocado" : 0.022,
"blue_banana" : 0.02,
"brown_banana" : 0.063,
"yellow_banana" : 0.008,
"brown_carrot" : 0.201,
"orange_carrot" : 0.24,
"pink_carrot" : 0.446,
"green_pear" : 0.03,
"orange_pear" : 0.018,
"yellow_pear" : 0.024,
"black_pepper" : 0.01,
"green_pepper" : 0.03,
"orange_pepper" : 0.044,
"red_pepper" : 0,
"green_tomato" : 0.005,
"pink_tomato" : 0.128,
"red_tomato" : 0.032,
},
"pink_tomato" : {
"blue_apple" : 0.086,
"green_apple" : 0.029,
"red_apple" : 0.032,
"black_avocado" : 0.007,
"green_avocado" : 0.047,
"red_avocado" : 0.06,
"blue_banana" : 0.051,
"brown_banana" : 0.019,
"yellow_banana" : 0.014,
"brown_carrot" : 0.03,
"orange_carrot" : 0.013,
"pink_carrot" : 0.071,
"green_pear" : 0,
"orange_pear" : 0.05,
"yellow_pear" : 0.01,
"black_pepper" : 0.01,
"green_pepper" : 0.003,
"orange_pepper" : 0.049,
"red_pepper" : 0.036,
"green_tomato" : 0.198,
"pink_tomato" : 0.567,
"red_tomato" : 0.328,
},
"red_apple" : {
"blue_apple" : 0.176,
"green_apple" : 0.25,
"red_apple" : 0.983,
"black_avocado" : 0.02,
"green_avocado" : 0.06,
"red_avocado" : 0.19,
"blue_banana" : 0.025,
"brown_banana" : 0.012,
"yellow_banana" : 0.055,
"brown_carrot" : 0.003,
"orange_carrot" : 0.046,
"pink_carrot" : 0.034,
"green_pear" : 0.006,
"orange_pear" : 0.139,
"yellow_pear" : 0.093,
"black_pepper" : 0.076,
"green_pepper" : 0.012,
"orange_pepper" : 0.016,
"red_pepper" : 0.09,
"green_tomato" : 0.095,
"pink_tomato" : 0.037,
"red_tomato" : 0.098,
},
"red_avocado" : {
"blue_apple" : 0.008,
"green_apple" : 0.029,
"red_apple" : 0.254,
"black_avocado" : 0.218,
"green_avocado" : 0.249,
"red_avocado" : 0.87,
"blue_banana" : 0.032,
"brown_banana" : 0.02,
"yellow_banana" : 0.002,
"brown_carrot" : 0.019,
"orange_carrot" : 0.066,
"pink_carrot" : 0.044,
"green_pear" : 0.004,
"orange_pear" : 0.122,
"yellow_pear" : 0.021,
"black_pepper" : 0.076,
"green_pepper" : 0.042,
"orange_pepper" : 0.02,
"red_pepper" : 0.017,
"green_tomato" : 0.098,
"pink_tomato" : 0.113,
"red_tomato" : 0.298,
},
"red_pepper" : {
"blue_apple" : 0.015,
"green_apple" : 0.044,
"red_apple" : 0.05,
"black_avocado" : 0.035,
"green_avocado" : 0.115,
"red_avocado" : 0.217,
"blue_banana" : 0.005,
"brown_banana" : 0.01,
"yellow_banana" : 0.103,
"brown_carrot" : 0.022,
"orange_carrot" : 0.014,
"pink_carrot" : 0.02,
"green_pear" : 0.085,
"orange_pear" : 0.037,
"yellow_pear" : 0.004,
"black_pepper" : 0.233,
"green_pepper" : 0.288,
"orange_pepper" : 0.388,
"red_pepper" : 0.971,
"green_tomato" : 0.018,
"pink_tomato" : 0.041,
"red_tomato" : 0.11,
},
"red_tomato" : {
"blue_apple" : 0.012,
"green_apple" : 0.158,
"red_apple" : 0.039,
"black_avocado" : 0.014,
"green_avocado" : 0.04,
"red_avocado" : 0.072,
"blue_banana" : 0.018,
"brown_banana" : 0.056,
"yellow_banana" : 0.156,
"brown_carrot" : 0.107,
"orange_carrot" : 0.285,
"pink_carrot" : 0.028,
"green_pear" : 0.495,
"orange_pear" : 0.079,
"yellow_pear" : 0.058,
"black_pepper" : 0.042,
"green_pepper" : 0.179,
"orange_pepper" : 0.082,
"red_pepper" : 0.235,
"green_tomato" : 0.275,
"pink_tomato" : 0.254,
"red_tomato" : 0.973,
},
"yellow_banana" : {
"blue_apple" : 0.08,
"green_apple" : 0.019,
"red_apple" : 0.088,
"black_avocado" : 0.105,
"green_avocado" : 0.074,
"red_avocado" : 0,
"blue_banana" : 0.168,
"brown_banana" : 0.327,
"yellow_banana" : 0.981,
"brown_carrot" : 0.008,
"orange_carrot" : 0.09,
"pink_carrot" : 0.017,
"green_pear" : 0.049,
"orange_pear" : 0.093,
"yellow_pear" : 0.033,
"black_pepper" : 0.058,
"green_pepper" : 0.016,
"orange_pepper" : 0.116,
"red_pepper" : 0.01,
"green_tomato" : 0.015,
"pink_tomato" : 0.014,
"red_tomato" : 0.022,
},
"yellow_pear" : {
"blue_apple" : 0.058,
"green_apple" : 0.072,
"red_apple" : 0.027,
"black_avocado" : 0.127,
"green_avocado" : 0.007,
"red_avocado" : 0.08,
"blue_banana" : 0.015,
"brown_banana" : 0.069,
"yellow_banana" : 0.123,
"brown_carrot" : 0.105,
"orange_carrot" : 0.039,
"pink_carrot" : 0.064,
"green_pear" : 0.582,
"orange_pear" : 0.334,
"yellow_pear" : 0.94,
"black_pepper" : 0.062,
"green_pepper" : 0.02,
"orange_pepper" : 0.131,
"red_pepper" : 0.29,
"green_tomato" : 0.116,
"pink_tomato" : 0.065,
"red_tomato" : 0.042,
},
"black" : {
"blue_apple" : 0.044,
"green_apple" : 0.013,
"red_apple" : 0.085,
"black_avocado" : 0.952,
"green_avocado" : 0.09,
"red_avocado" : 0.066,
"blue_banana" : 0.051,
"brown_banana" : 0.204,
"yellow_banana" : 0.061,
"brown_carrot" : 0.168,
"orange_carrot" : 0.056,
"pink_carrot" : 0.048,
"green_pear" : 0.056,
"orange_pear" : 0.056,
"yellow_pear" : 0.057,
"black_pepper" : 0.838,
"green_pepper" : 0.044,
"orange_pepper" : 0.032,
"red_pepper" : 0.019,
"green_tomato" : 0.043,
"pink_tomato" : 0.013,
"red_tomato" : 0.025,
},
"blue" : {
"blue_apple" : 0.896,
"green_apple" : 0.069,
"red_apple" : 0.079,
"black_avocado" : 0.087,
"green_avocado" : 0.067,
"red_avocado" : 0.028,
"blue_banana" : 0.917,
"brown_banana" : 0.059,
"yellow_banana" : 0.063,
"brown_carrot" : 0.075,
"orange_carrot" : 0.059,
"pink_carrot" : 0.025,
"green_pear" : 0.07,
"orange_pear" : 0.102,
"yellow_pear" : 0.053,
"black_pepper" : 0.115,
"green_pepper" : 0.112,
"orange_pepper" : 0.059,
"red_pepper" : 0.018,
"green_tomato" : 0.05,
"pink_tomato" : 0.075,
"red_tomato" : 0.052,
},
"brown" : {
"blue_apple" : 0.076,
"green_apple" : 0.063,
"red_apple" : 0.231,
"black_avocado" : 0.103,
"green_avocado" : 0.135,
"red_avocado" : 0.368,
"blue_banana" : 0.007,
"brown_banana" : 0.868,
"yellow_banana" : 0.108,
"brown_carrot" : 0.86,
"orange_carrot" : 0.141,
"pink_carrot" : 0.051,
"green_pear" : 0.053,
"orange_pear" : 0.107,
"yellow_pear" : 0.234,
"black_pepper" : 0.128,
"green_pepper" : 0.071,
"orange_pepper" : 0.285,
"red_pepper" : 0.085,
"green_tomato" : 0.081,
"pink_tomato" : 0.012,
"red_tomato" : 0.16,
},
"green" : {
"blue_apple" : 0.145,
"green_apple" : 0.791,
"red_apple" : 0.045,
"black_avocado" : 0.032,
"green_avocado" : 0.642,
"red_avocado" : 0.084,
"blue_banana" : 0.017,
"brown_banana" : 0.058,
"yellow_banana" : 0.031,
"brown_carrot" : 0.068,
"orange_carrot" : 0.048,
"pink_carrot" : 0.046,
"green_pear" : 0.64,
"orange_pear" : 0.032,
"yellow_pear" : 0.099,
"black_pepper" : 0.101,
"green_pepper" : 0.929,
"orange_pepper" : 0.053,
"red_pepper" : 0.087,
"green_tomato" : 0.817,
"pink_tomato" : 0.058,
"red_tomato" : 0.084,
},
"orange" : {
"blue_apple" : 0.022,
"green_apple" : 0.027,
"red_apple" : 0.085,
"black_avocado" : 0.009,
"green_avocado" : 0.028,
"red_avocado" : 0.075,
"blue_banana" : 0.093,
"brown_banana" : 0.081,
"yellow_banana" : 0.219,
"brown_carrot" : 0.101,
"orange_carrot" : 0.889,
"pink_carrot" : 0.079,
"green_pear" : 0.092,
"orange_pear" : 0.831,
"yellow_pear" : 0.341,
"black_pepper" : 0.063,
"green_pepper" : 0.142,
"orange_pepper" : 0.787,
"red_pepper" : 0.276,
"green_tomato" : 0.064,
"pink_tomato" : 0.106,
"red_tomato" : 0.12,
},
"pink" : {
"blue_apple" : 0.054,
"green_apple" : 0.08,
"red_apple" : 0.132,
"black_avocado" : 0.088,
"green_avocado" : 0.055,
"red_avocado" : 0.116,
"blue_banana" : 0.045,
"brown_banana" : 0.04,
"yellow_banana" : 0.079,
"brown_carrot" : 0.135,
"orange_carrot" : 0.112,
"pink_carrot" : 0.498,
"green_pear" : 0.048,
"orange_pear" : 0.123,
"yellow_pear" : 0.031,
"black_pepper" : 0.04,
"green_pepper" : 0.025,
"orange_pepper" : 0.036,
"red_pepper" : 0.16,
"green_tomato" : 0.03,
"pink_tomato" : 0.515,
"red_tomato" : 0.198,
},
"red" : {
"blue_apple" : 0.06,
"green_apple" : 0.088,
"red_apple" : 0.762,
"black_avocado" : 0.107,
"green_avocado" : 0.018,
"red_avocado" : 0.528,
"blue_banana" : 0.057,
"brown_banana" : 0.072,
"yellow_banana" : 0.073,
"brown_carrot" : 0.105,
"orange_carrot" : 0.162,
"pink_carrot" : 0.153,
"green_pear" : 0.073,
"orange_pear" : 0.156,
"yellow_pear" : 0.057,
"black_pepper" : 0.118,
"green_pepper" : 0.074,
"orange_pepper" : 0.141,
"red_pepper" : 0.864,
"green_tomato" : 0.064,
"pink_tomato" : 0.111,
"red_tomato" : 0.858,
},
"yellow" : {
"blue_apple" : 0.078,
"green_apple" : 0.187,
"red_apple" : 0.011,
"black_avocado" : 0.036,
"green_avocado" : 0.053,
"red_avocado" : 0.029,
"blue_banana" : 0.058,
"brown_banana" : 0.047,
"yellow_banana" : 0.766,
"brown_carrot" : 0.094,
"orange_carrot" : 0.188,
"pink_carrot" : 0.058,
"green_pear" : 0.307,
"orange_pear" : 0.121,
"yellow_pear" : 0.703,
"black_pepper" : 0.073,
"green_pepper" : 0.048,
"orange_pepper" : 0.169,
"red_pepper" : 0.049,
"green_tomato" : 0.058,
"pink_tomato" : 0.031,
"red_tomato" : 0.063,
},
"apple" : {
"blue_apple" : 0.462,
"green_apple" : 0.961,
"red_apple" : 0.953,
"black_avocado" : 0.055,
"green_avocado" : 0.022,
"red_avocado" : 0.08,
"blue_banana" : 0.044,
"brown_banana" : 0.04,
"yellow_banana" : 0.043,
"brown_carrot" : 0.059,
"orange_carrot" : 0.013,
"pink_carrot" : 0.052,
"green_pear" : 0.196,
"orange_pear" : 0.142,
"yellow_pear" : 0.14,
"black_pepper" : 0.058,
"green_pepper" : 0.03,
"orange_pepper" : 0.043,
"red_pepper" : 0.027,
"green_tomato" : 0.102,
"pink_tomato" : 0.022,
"red_tomato" : 0.093,
},
"avocado" : {
"blue_apple" : 0.039,
"green_apple" : 0.022,
"red_apple" : 0.052,
"black_avocado" : 0.812,
"green_avocado" : 0.966,
"red_avocado" : 0.696,
"blue_banana" : 0.016,
"brown_banana" : 0.048,
"yellow_banana" : 0.024,
"brown_carrot" : 0.053,
"orange_carrot" : 0.034,
"pink_carrot" : 0.061,
"green_pear" : 0.055,
"orange_pear" : 0.055,
"yellow_pear" : 0.026,
"black_pepper" : 0.046,
"green_pepper" : 0.015,
"orange_pepper" : 0.045,
"red_pepper" : 0.068,
"green_tomato" : 0.017,
"pink_tomato" : 0.065,
"red_tomato" : 0.023,
},
"banana" : {
"blue_apple" : 0.04,
"green_apple" : 0.072,
"red_apple" : 0.07,
"black_avocado" : 0.036,
"green_avocado" : 0.046,
"red_avocado" : 0.07,
"blue_banana" : 0.419,
"brown_banana" : 0.657,
"yellow_banana" : 0.979,
"brown_carrot" : 0.076,
"orange_carrot" : 0.079,
"pink_carrot" : 0.021,
"green_pear" : 0.021,
"orange_pear" : 0.01,
"yellow_pear" : 0.071,
"black_pepper" : 0.069,
"green_pepper" : 0.026,
"orange_pepper" : 0.011,
"red_pepper" : 0.019,
"green_tomato" : 0.096,
"pink_tomato" : 0.037,
"red_tomato" : 0.013,
},
"carrot" : {
"blue_apple" : 0.035,
"green_apple" : 0.023,
"red_apple" : 0.011,
"black_avocado" : 0.016,
"green_avocado" : 0.06,
"red_avocado" : 0.008,
"blue_banana" : 0.039,
"brown_banana" : 0.013,
"yellow_banana" : 0.011,
"brown_carrot" : 0.565,
"orange_carrot" : 0.976,
"pink_carrot" : 0.503,
"green_pear" : 0.085,
"orange_pear" : 0.052,
"yellow_pear" : 0.016,
"black_pepper" : 0.065,
"green_pepper" : 0.019,
"orange_pepper" : 0.083,
"red_pepper" : 0.036,
"green_tomato" : 0.013,
"pink_tomato" : 0.056,
"red_tomato" : 0.011,
},
"fruit" : {
"blue_apple" : 0.506,
"green_apple" : 0.929,
"red_apple" : 0.932,
"black_avocado" : 0.539,
"green_avocado" : 0.503,
"red_avocado" : 0.329,
"blue_banana" : 0.603,
"brown_banana" : 0.726,
"yellow_banana" : 0.973,
"brown_carrot" : 0.092,
"orange_carrot" : 0.019,
"pink_carrot" : 0.051,
"green_pear" : 0.937,
"orange_pear" : 0.777,
"yellow_pear" : 0.905,
"black_pepper" : 0.182,
"green_pepper" : 0.183,
"orange_pepper" : 0.194,
"red_pepper" : 0.106,
"green_tomato" : 0.341,
"pink_tomato" : 0.233,
"red_tomato" : 0.413,
},
"pear" : {
"blue_apple" : 0.004,
"green_apple" : 0.14,
"red_apple" : 0.014,
"black_avocado" : 0.08,
"green_avocado" : 0.045,
"red_avocado" : 0.103,
"blue_banana" : 0.012,
"brown_banana" : 0.041,
"yellow_banana" : 0.074,
"brown_carrot" : 0.052,
"orange_carrot" : 0.034,
"pink_carrot" : 0.013,
"green_pear" : 0.953,
"orange_pear" : 0.686,
"yellow_pear" : 0.924,
"black_pepper" : 0.06,
"green_pepper" : 0.02,
"orange_pepper" : 0.04,
"red_pepper" : 0.077,
"green_tomato" : 0.045,
"pink_tomato" : 0.011,
"red_tomato" : 0.047,
},
"pepper" : {
"blue_apple" : 0.045,
"green_apple" : 0.014,
"red_apple" : 0.026,
"black_avocado" : 0.08,
"green_avocado" : 0.069,
"red_avocado" : 0.104,
"blue_banana" : 0.073,
"brown_banana" : 0.06,
"yellow_banana" : 0.07,
"brown_carrot" : 0.086,
"orange_carrot" : 0.043,
"pink_carrot" : 0.049,
"green_pear" : 0.016,
"orange_pear" : 0.054,
"yellow_pear" : 0.142,
"black_pepper" : 0.637,
"green_pepper" : 0.941,
"orange_pepper" : 0.841,
"red_pepper" : 0.934,
"green_tomato" : 0.083,
"pink_tomato" : 0.063,
"red_tomato" : 0.049,
},
"tomato" : {
"blue_apple" : 0.034,
"green_apple" : 0.044,
"red_apple" : 0.088,
"black_avocado" : 0.069,
"green_avocado" : 0.052,
"red_avocado" : 0.051,
"blue_banana" : 0.042,
"brown_banana" : 0.033,
"yellow_banana" : 0.018,
"brown_carrot" : 0.041,
"orange_carrot" : 0.047,
"pink_carrot" : 0.037,
"green_pear" : 0.018,
"orange_pear" : 0.022,
"yellow_pear" : 0.023,
"black_pepper" : 0.089,
"green_pepper" : 0.032,
"orange_pepper" : 0.052,
"red_pepper" : 0.018,
"green_tomato" : 0.738,
"pink_tomato" : 0.412,
"red_tomato" : 0.962,
},
"vegetable" : {
"blue_apple" : 0.081,
"green_apple" : 0.128,
"red_apple" : 0.182,
"black_avocado" : 0.332,
"green_avocado" : 0.455,
"red_avocado" : 0.236,
"blue_banana" : 0.054,
"brown_banana" : 0.077,
"yellow_banana" : 0.055,
"brown_carrot" : 0.623,
"orange_carrot" : 0.895,
"pink_carrot" : 0.401,
"green_pear" : 0.115,
"orange_pear" : 0.14,
"yellow_pear" : 0.12,
"black_pepper" : 0.531,
"green_pepper" : 0.824,
"orange_pepper" : 0.777,
"red_pepper" : 0.777,
"green_tomato" : 0.598,
"pink_tomato" : 0.336,
"red_tomato" : 0.745,
},
}
var getLexicon = function(lexiconStr) {
return (lexiconStr === 'realValued' ? realValuedMeanings :
lexiconStr === 'truthConditional' ? truthConditionalMeanings :
console.error('unknown lexiconStr: ' + lexiconStr));
}
var colors = ["yellow","orange","red","pink",
"green","blue","brown","black"];
var objects = [["blue","apple"], ["green","apple"], ["red","apple"],
["black","avocado"], ["green","avocado"], ["red","avocado"],
["blue","banana"], ["brown","banana"], ["yellow","banana"],
["brown","carrot"], ["orange","carrot"], ["pink","carrot"],
["green","pear"], ["orange","pear"], ["yellow","pear"],
["green","tomato"], ["pink","tomato"], ["red","tomato"],
["black","pepper"], ["green","pepper"], ["orange","pepper"],
["red","pepper"]];
// for all objects in a given context, can name the color, type, or both
var getPossibleUtts = function(context) {
return _.uniq(_.flatten(map(function(itemArr) {
return [itemArr[0], itemArr[1], itemArr.join('_')];
},context)));
};
///
var initializeModel = function(params) {
// construct prior over possible misperceptions, based on version in params
// 1. if 'none', there's no noise, and this prior is a delta on true context
// 2. if 'addition', then we supplement the context with a 'ghost object'
// 3. if 'replacement', then we swap out one of the objects with a 'misperception'
var getNoisyContextPrior = function(trueContext) {
return Infer({method: 'enumerate'}, function() {
if(params.noiseType === 'none' || flip(1 - params.noiseRate))
return trueContext;
else if(params.noiseType === 'addition')
return trueContext.concat([uniformDraw(objects)]);
else if(params.noiseType === 'replacement') {
var replaceIndex = randomInteger(trueContext.length);
var replaceObj = uniformDraw(objects);
return (trueContext.slice(0,replaceIndex)
.concat([replaceObj])
.concat(trueContext.slice(replaceIndex+1,trueContext.length)));
} else {
console.error("unknown noiseType: " + params.noiseType);
}
});
};
// Cost of full utterances is sum of individual word costs
var getUtteranceCost = function(utt) {
return reduce(function(word, memo) {
var cost = _.contains(colors, word) ? params.cost_color : params.cost_type;
return memo + cost;
}, 0, utt.split('_'))
};
// Looks up meaning in given lexicon
// (if no entry, listener assigns vanishingly small probability)
var meaning = function(utt, object) {
var objStr = object.join("_");
var lexicalEntry = params.lexicon[utt];
return _.has(lexicalEntry, objStr) ? lexicalEntry[objStr] : -1000;
};
// Selects among objects in context using lexicon
var literalListener = cache(function(utt, context){
return Infer({method:'enumerate'},function(){
var object = uniformDraw(context);
factor(meaning(utt,object));
return object;
});
});
// Selects among utterances given informativity in context and cost of production,
// marginalizing over possible noise in perception of context
var speaker = function(context) {
var target = context[0];
var possibleutts = getPossibleUtts(context);
var noisyContextPrior = getNoisyContextPrior(context);
return Infer({method:'enumerate'},function(){
var utt = uniformDraw(possibleutts);
var listener = Infer({method: 'enumerate'}, function() {
var noisyContext = sample(noisyContextPrior);
return sample(literalListener(utt, noisyContext));
});
factor(params.alpha * listener.score(target)
- getUtteranceCost(utt));
return utt;
});
};
return speaker;
};
// lexicon: 'realValued' vs. 'truthConditional'
// noiseType: 'none' vs 'addition' vs 'replacement'
// noiseRate: float in [0,1]
// others: float > 0
var params = {
lexicon: getLexicon('truthConditional'),
noiseType: 'none',
noiseRate: .5,
alpha : 10,
cost_color : 1,
cost_type : .5
};
var context = [
[ 'green', 'apple' ],
[ 'blue', 'banana' ],
[ 'brown', 'carrot' ]
];
var speaker = initializeModel(params);
viz(speaker(context));
Note that this does not include several ideas we’ve considered in the past:
| Taking logs of typicality output (i.e. L_0(s | u) ~ Lex(u, s)P(s) vs. e^{Lex(u, s)P(s)}) |