コード例 #1
0
        public void CompareTest()
        {
            //Подготовка данных для сравнения
            int[] ichilds1 = { 1002, 1003, 1004, 1005 };    // набор из четырёх id
            int[] ichilds3 = { 1002, 1003, 1014, 1015 };    // набор из четырёх id, отличающихся наполовину от ichilds1
            //Подготовим список дочерних id
            List <Term> childs = ichilds1.Select(c => new Term(0, c, 1, "", null)).ToList();
            //Подготовим список дочерних id полностью отличных от childs
            List <Term> childs2 = ichilds1.Select(c => new Term(0, c + 1, 1, "", null)).ToList();
            List <Term> childs3 = ichilds3.Select(c => new Term(0, c, 1, "", null)).ToList();
            Term        term_a  = new Term(_rank: 1, _id: 2011, _confidence: 1, _text: "тест", _childs: childs);
            Term        term_b  = new Term(_rank: 1, _id: 2012, _confidence: 1, _text: "тест", _childs: childs);
            Term        term_c  = new Term(_rank: 1, _id: 2013, _confidence: 1, _text: "тест", _childs: childs2);
            Term        term_d  = new Term(_rank: 1, _id: 2014, _confidence: 1, _text: "тест", _childs: childs3);
            //Логика выбора метрики для Compare может меняться, так как свойство
            //private static readonly Func<Term, Term, float>[] Operations = new Func<Term, Term, float>[5]
            //{
            //    Confidence.Equality,
            //    Confidence.Cosine,
            //    Confidence.SoftInclusive,
            //    Confidence.SoftInclusive,
            //    Confidence.SoftInclusive
            //};
            //в классе Confidence можно заполнять другими функциями. Однако для текущего набора функций
            //сравнение термов с идентичным набором дочерних термов должно дать 1.
            var d1 = Confidence.Compare(term_a, term_b);

            Assert.AreEqual(1, d1);
            //Полностью различные термы. Косинусное расстояние должно дать 0.
            var d2 = Confidence.Compare(term_a, term_c);

            Assert.AreEqual(0, d2);
            //Наполовину различные термы. Так как применяется косинусное расстояние, то наполовину схожие термы дадут расстояние 0.5
            var d3 = Confidence.Compare(term_a, term_d);

            Assert.AreEqual(0.5f, d3);
        }
コード例 #2
0
 public void CompareTest1()
 {
     Assert.AreEqual(1, Confidence.Compare(1001, 1001));
     Assert.AreEqual(0, Confidence.Compare(1002, 1001));
 }