public ANEWEmotionSensor(string datadirectory) { // Data files contained in [datadrectory]/metrics string metricsdir = datadirectory + Path.DirectorySeparatorChar + "metrics" + Path.DirectorySeparatorChar; source = new MemoizedSource <string, ThreeTuple <ContinuousDistribution, ContinuousDistribution, ContinuousDistribution> >(new ANEWFileSource(metricsdir + "anew.csv")); stemmer = new PorterStemmer(); // These matrices are used in G emotion = vad // positives are mean > 5; negatives are mean < 5 double[,] positives = new double[, ] { { .890, -.020, -.110, .116, -.035 }, { .649, .139, -.287, .441, .051 }, { .601, .153, -.305, .125, .042 } }; double[,] positiveTs = new double[, ] { { 45.40, 0.73, 4.24, 4.95, 1.55 }, { 19.75, 2.984, 6.57, 11.26, 1.36 }, { 16.60, 2.98, 6.34, 2.88, 1.00 } }; double[,] positiveSEs = Matrix.ElementwiseDivide(positives, positiveTs); double[,] negatives = new double[, ] { { .291, -.044, -.515, .020, -.243 }, { .050, .492, -.309, .670, -.042 }, { .136, .369, -.625, -.144, .041 } }; double[,] negativeTs = new double[, ] { { 8.91, 1.27, 13.80, 0.58, 8.27 }, { 1.36, 12.59, 7.33, 17.11, 1.27 }, { 2.93, 7.49, 11.75, 2.91, 0.98 } }; double[,] negativeSEs = Matrix.ElementwiseDivide(negatives, negativeTs); ContinuousDistribution[,] randomPositives = RandomMatrix.MakeGaussians(positives, positiveSEs); ContinuousDistribution[,] randomNegatives = RandomMatrix.MakeGaussians(negatives, negativeSEs); positiveProduct = RandomMatrix.Multiply(RandomMatrix.Transpose(randomPositives), RandomMatrix.Inverse(RandomMatrix.Multiply(randomPositives, RandomMatrix.Transpose(randomPositives)))); negativeProduct = RandomMatrix.Multiply(RandomMatrix.Transpose(randomNegatives), RandomMatrix.Inverse(RandomMatrix.Multiply(randomNegatives, RandomMatrix.Transpose(randomNegatives)))); positiveMatrix = Matrix.Multiply(Matrix.Transpose(positives), Matrix.Inverse(Matrix.Multiply(positives, Matrix.Transpose(positives)))); negativeMatrix = Matrix.Multiply(Matrix.Transpose(negatives), Matrix.Inverse(Matrix.Multiply(negatives, Matrix.Transpose(negatives)))); }