Esempio n. 1
0
        public void Sentence(StringBuilder into)
        {
            Unigram unigram = Pick();
            int     counter = 0;

            while (unigram != null && unigram != Terminator)
            {
                counter++;
                if (counter >= 100)
                {
                    break;
                }

                into.Append(unigram.data);

                unigram = unigram.Pick(random);

                if (unigram == Terminator)
                {
                    break;
                }
                else
                {
                    into.Append(' ');
                }
            }
            into.Append('.');
        }
Esempio n. 2
0
        public void UnigramInstanceTest()
        {
            var unigram = new Unigram("a");

            Assert.AreEqual(1, unigram.Length);
            Assert.AreEqual("a", unigram.Value);
        }
Esempio n. 3
0
        public Unigram Add(T data)
        {
            Unigram unigram = new Unigram(data);

            starts.Add(unigram);
            return(unigram);
        }
Esempio n. 4
0
        public Unigram Add()
        {
            Unigram unigram = new Unigram();

            starts.Add(unigram);
            return(unigram);
        }
Esempio n. 5
0
 public Markov(int seed_)
 {
     seed       = seed_;
     starts     = new List <Unigram>();
     random     = new Random(seed_);
     Terminator = new Unigram(default(T));
 }
Esempio n. 6
0
        public void CompareToTest()
        {
            var instance       = new Unigram("x");
            var higherInstance = new Unigram("a");
            var equalInstance  = new Unigram("x");

            HelpersTest.AssertCompareTo(instance, higherInstance, equalInstance);
        }
Esempio n. 7
0
            public override bool Equals(object obj)
            {
                if (obj == null || GetType() != obj.GetType())
                {
                    return(false);
                }

                Unigram p = (Unigram)obj;

                return(data.Equals(p.data));
            }
Esempio n. 8
0
 public void Add(Unigram unigram, int weight)
 {
     if (weights == null)
     {
         weights = new Dictionary <Unigram, int>();
         weights.Add(unigram, 1);
     }
     else
     {
         int w;
         if (weights.TryGetValue(unigram, out w) == false)
         {
             weights.Add(unigram, 1);
         }
         else
         {
             w = w + 1;
             weights[unigram] = w;
         }
     }
 }
Esempio n. 9
0
            public Unigram Pick(Random random)
            {
                // https://softwareengineering.stackexchange.com/questions/150616/return-random-list-item-by-its-weight

                if (weights == null)
                {
                    return(null);
                }

                int     w = 0;
                Unigram u = null;

                foreach (var t in weights)
                {
                    int s = t.Value;
                    if (random.Next(w + s) >= w)
                    {
                        u = t.Key;
                    }
                    w += s;
                }

                return(u);
            }
Esempio n. 10
0
 public StringMarkov(int seed_) : base(seed_)
 {
     Terminator = new Unigram(Guid.NewGuid().ToString());
 }
Esempio n. 11
0
        public void ToStringTest()
        {
            var unigram = new Unigram("a");

            Assert.AreEqual("a", unigram.ToString());
        }
Esempio n. 12
0
 public void UnigramExceptionTest()
 {
     var unigram = new Unigram("ab");
 }
Esempio n. 13
0
 public Unigram Add(Unigram unigram)
 {
     Add(unigram, 1);
     return(unigram);
 }
Esempio n. 14
0
 public Unigram Add(Unigram unigram)
 {
     starts.Add(unigram);
     return(unigram);
 }