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('.'); }
public void UnigramInstanceTest() { var unigram = new Unigram("a"); Assert.AreEqual(1, unigram.Length); Assert.AreEqual("a", unigram.Value); }
public Unigram Add(T data) { Unigram unigram = new Unigram(data); starts.Add(unigram); return(unigram); }
public Unigram Add() { Unigram unigram = new Unigram(); starts.Add(unigram); return(unigram); }
public Markov(int seed_) { seed = seed_; starts = new List <Unigram>(); random = new Random(seed_); Terminator = new Unigram(default(T)); }
public void CompareToTest() { var instance = new Unigram("x"); var higherInstance = new Unigram("a"); var equalInstance = new Unigram("x"); HelpersTest.AssertCompareTo(instance, higherInstance, equalInstance); }
public override bool Equals(object obj) { if (obj == null || GetType() != obj.GetType()) { return(false); } Unigram p = (Unigram)obj; return(data.Equals(p.data)); }
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; } } }
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); }
public StringMarkov(int seed_) : base(seed_) { Terminator = new Unigram(Guid.NewGuid().ToString()); }
public void ToStringTest() { var unigram = new Unigram("a"); Assert.AreEqual("a", unigram.ToString()); }
public void UnigramExceptionTest() { var unigram = new Unigram("ab"); }
public Unigram Add(Unigram unigram) { Add(unigram, 1); return(unigram); }
public Unigram Add(Unigram unigram) { starts.Add(unigram); return(unigram); }