public static TwoDimensionalMap <string, string, SimpleMatrix> AverageBinaryMatrices(IList <TwoDimensionalMap <string, string, SimpleMatrix> > maps)
        {
            TwoDimensionalMap <string, string, SimpleMatrix> averages = TwoDimensionalMap.TreeMap();

            foreach (Pair <string, string> binary in GetBinaryMatrixNames(maps))
            {
                int          count  = 0;
                SimpleMatrix matrix = null;
                foreach (TwoDimensionalMap <string, string, SimpleMatrix> map in maps)
                {
                    if (!map.Contains(binary.First(), binary.Second()))
                    {
                        continue;
                    }
                    SimpleMatrix original = map.Get(binary.First(), binary.Second());
                    ++count;
                    if (matrix == null)
                    {
                        matrix = original;
                    }
                    else
                    {
                        matrix = matrix.Plus(original);
                    }
                }
                matrix = matrix.Divide(count);
                averages.Put(binary.First(), binary.Second(), matrix);
            }
            return(averages);
        }
        private SimpleMatrix GetAverageEmbedding(IList <CoreLabel> words)
        {
            SimpleMatrix emb = new SimpleMatrix(staticWordEmbeddings.GetEmbeddingSize(), 1);

            foreach (CoreLabel word in words)
            {
                emb = emb.Plus(GetStaticWordEmbedding(word.Word()));
            }
            return(emb.Divide(Math.Max(1, words.Count)));
        }