Ejemplo n.º 1
0
            public virtual int Compare(string o1, string o2)
            {
                if (o1.Equals(o2))
                {
                    return(0);
                }
                ConfusionMatrixLine t1 = confusionMatrix[o1];
                ConfusionMatrixLine t2 = confusionMatrix[o2];

                if (t1 == null || t2 == null)
                {
                    if (t1 == null)
                    {
                        return(1);
                    }
                    else if (t2 == null)
                    {
                        return(-1);
                    }
                    return(0);
                }
                double r1 = t1.Accuracy;
                double r2 = t2.Accuracy;

                if (r1 == r2)
                {
                    return(o1.CompareTo(o2));
                }
                if (r2 > r1)
                {
                    return(1);
                }
                return(-1);
            }
Ejemplo n.º 2
0
            /// <summary>
            /// Includes a new evaluation data
            /// </summary>
            /// <param name="tok">
            ///          the evaluated token </param>
            /// <param name="ref">
            ///          the reference pos tag </param>
            /// <param name="pred">
            ///          the predicted pos tag </param>
            internal virtual void add(string tok, string @ref, string pred)
            {
                // token stats
                if (!tokAccuracies.ContainsKey(tok))
                {
                    tokAccuracies[tok]  = new Mean();
                    tokOcurrencies[tok] = new Counter();
                    tokErrors[tok]      = new Counter();
                }
                tokOcurrencies[tok].increment();

                // tag stats
                if (!tagOcurrencies.ContainsKey(@ref))
                {
                    tagOcurrencies[@ref] = new Counter();
                    tagErrors[@ref]      = new Counter();
                }
                tagOcurrencies[@ref].increment();

                // updates general, token and tag error stats
                if (@ref.Equals(pred))
                {
                    tokAccuracies[tok].add(1);
                    accuracy.add(1);
                }
                else
                {
                    tokAccuracies[tok].add(0);
                    tokErrors[tok].increment();
                    tagErrors[@ref].increment();
                    accuracy.add(0);
                }

                // populate confusion matrixes
                if (!generalConfusionMatrix.ContainsKey(@ref))
                {
                    generalConfusionMatrix[@ref] = new ConfusionMatrixLine(@ref);
                }
                generalConfusionMatrix[@ref].increment(pred);

                if (!tokenConfusionMatrix.ContainsKey(tok))
                {
                    tokenConfusionMatrix[tok] = new Dictionary <string, ConfusionMatrixLine>();
                }
                if (!tokenConfusionMatrix[tok].ContainsKey(@ref))
                {
                    tokenConfusionMatrix[tok][@ref] = new ConfusionMatrixLine(@ref);
                }
                tokenConfusionMatrix[tok][@ref].increment(pred);
            }