public virtual void Learn(Example correct, Example incorrect, IDictionary <int, CompressedFeatureVector> mentionFeatures, Compressor <string> compressor, MaxMarginMentionRanker.ErrorType errorType)
        {
            ICounter <string> cFeatures = meta.GetFeatures(correct, mentionFeatures, compressor);
            ICounter <string> iFeatures = meta.GetFeatures(incorrect, mentionFeatures, compressor);

            foreach (KeyValuePair <string, double> e in cFeatures.EntrySet())
            {
                iFeatures.DecrementCount(e.Key, e.Value);
            }
            if (multiplicativeCost)
            {
                classifier.Learn(iFeatures, 1.0, costs[errorType.id], loss);
            }
            else
            {
                classifier.Learn(iFeatures, 1.0, 1.0, losses[errorType.id]);
            }
        }
 public virtual void TestIncrement()
 {
     c.Clear();
     NUnit.Framework.Assert.AreEqual(0., c.GetCount("r"));
     NUnit.Framework.Assert.AreEqual(1., c.IncrementCount("r"));
     NUnit.Framework.Assert.AreEqual(1., c.GetCount("r"));
     c.SetCount("p", 0);
     c.SetCount("q", 2);
     NUnit.Framework.Assert.AreEqual(true, c.ContainsKey("q"));
     NUnit.Framework.Assert.AreEqual(false, c.ContainsKey("!!!"));
     NUnit.Framework.Assert.AreEqual(0., c.GetCount("p"));
     NUnit.Framework.Assert.AreEqual(1., c.IncrementCount("p"));
     NUnit.Framework.Assert.AreEqual(1., c.GetCount("p"));
     NUnit.Framework.Assert.AreEqual(4., c.TotalCount());
     c.DecrementCount("s", 5.0);
     NUnit.Framework.Assert.AreEqual(-5.0, c.GetCount("s"));
     c.Remove("s");
     NUnit.Framework.Assert.AreEqual(4.0, c.TotalCount());
 }
        public virtual void TestFactory()
        {
            IFactory <ICounter <string> > fcs = c.GetFactory();
            ICounter <string>             c2  = fcs.Create();

            c2.IncrementCount("fr");
            c2.IncrementCount("de");
            c2.IncrementCount("es", -3);
            ICounter <string> c3 = fcs.Create();

            c3.DecrementCount("es");
            ICounter <string> c4 = fcs.Create();

            c4.IncrementCount("fr");
            c4.SetCount("es", -3);
            c4.SetCount("de", 1.0);
            NUnit.Framework.Assert.AreEqual("Testing factory and counter equality", c2, c4);
            NUnit.Framework.Assert.AreEqual("Testing factory", c2.TotalCount(), -1.0);
            c3.AddAll(c2);
            NUnit.Framework.Assert.AreEqual(c3.KeySet().Count, 3);
            NUnit.Framework.Assert.AreEqual(c3.Size(), 3);
            NUnit.Framework.Assert.AreEqual("Testing addAll", -2.0, c3.TotalCount());
        }