public MarkovTextModel(string text, int order)
        {
            Root = new MarkovNode(StartChar);

            // Currently building only an order 0 model
            foreach (char c in text)
            {
                ++Root.Count;
                Root.AddChild(c);
            }

            // Add the stop character
            Root.AddChild(EndChar);
        }
Example #2
0
        public MarkovTextModel(string text, int order)
        {
            Root = new MarkovNode(StartChar);

            // Currently building only an order 0 model
            foreach (char c in text)
            {
                ++Root.Count;
                Root.AddChild(c);
            }

            // Add the stop character
            Root.AddChild(EndChar);
        }
        public void AddString(string s)
        {
            var input = s.Split(' ');

            // Naive method
            for (int iStart = 0; iStart < input.Length; ++iStart)
            {
                // Get the order 0 node
                MarkovNode parent = Root.AddChild(input[iStart]);

                // Now add N-grams starting with this node
                for (int i = 1; i <= ModelOrder && i + iStart < input.Length; ++i)
                {
                    MarkovNode child = parent.AddChild(input[iStart + i]);
                    parent = child;
                    if (parent.word.Last() == '.')
                    {
                        parent.AddChild(EndChar.ToString());
                    }
                }
            }
        }
Example #4
0
        public void AddString(string s)
        {
            // Construct the string that will be added.
            StringBuilder sb = new StringBuilder(s.Length + 2 * (ModelOrder));

            // Order+1 Start characters. The string to add. Order+1 Stop characters.
            sb.Append(StartChar, ModelOrder);
            sb.Append(s);
            sb.Append(EndChar, ModelOrder);

            // Naive method
            for (int iStart = 0; iStart < sb.Length; ++iStart)
            {
                // Get the order 0 node
                MarkovNode parent = Root.AddChild(sb[iStart]);

                // Now add N-grams starting with this node
                for (int i = 1; i <= ModelOrder && i + iStart < sb.Length; ++i)
                {
                    MarkovNode child = parent.AddChild(sb[iStart + i]);
                    parent = child;
                }
            }
        }