public string generateText(int length) { string text = ""; Random rand = new Random(); int num = rand.Next(0, ngrams.Count - 1); ngram currGram = ngrams[num]; if (usesWords) { text += string.Join(" ", currGram.gram); for (int i = 0; i < length - size; i++) { num = rand.Next(0, currGram.nextCount()); text += " " + currGram.nextGet(num); string[] words = text.Split(new string[] { " " }, StringSplitOptions.None); List <string> listGram = new List <string>(); for (int j = words.Length - size; j < words.Length; j++) { listGram.Add(words[j]); } string[] nextGram = listGram.ToArray(); currGram = ngrams.Find(x => Enumerable.SequenceEqual(nextGram, x.gram)); if (currGram == null) { num = rand.Next(0, ngrams.Count - 1); currGram = ngrams[num]; } } } else { text += string.Join("", currGram.gram); for (int i = 0; i < length - size; i++) { num = rand.Next(0, currGram.nextCount()); text += currGram.nextGet(num); string stringGram = text.Substring(text.Length - size); List <string> listGram = new List <string>(); for (int j = 0; j < stringGram.Length; j++) { listGram.Add(stringGram[j].ToString()); } string[] nextGram = listGram.ToArray(); currGram = ngrams.Find(x => Enumerable.SequenceEqual(nextGram, x.gram)); if (currGram == null) { num = rand.Next(0, ngrams.Count - 1); currGram = ngrams[num]; } } } return(text); }
public void createNgrams(int size, string inputText) { inputText = inputText.ToLower(); inputText = inputText.Replace("„", ""); inputText = inputText.Replace("“", ""); inputText = inputText.Replace("\n", ""); List <string> gram = new List <string>(); if (usesWords) { string[] words = inputText.Split(new string[] { " " }, StringSplitOptions.None); for (int i = 0; i < words.Length - size; i++) { for (int j = 0; j < size; j++) { gram.Add(words[i + j]); } string nextString = words[i + size]; string[] gramA = gram.ToArray(); ngram foundGram = ngrams.Find(x => Enumerable.SequenceEqual(gramA, x.gram)); if (foundGram != null) { stringNum foundString = foundGram.nextStrings.Find(x => x.str.Equals(nextString)); if (foundString != null) { foundString.number += 1; } else { foundGram.nextStrings.Add(new stringNum(nextString)); } } else { ngrams.Add(new ngram(gramA, nextString)); } gram.Clear(); } } else { for (int i = 0; i < inputText.Length - size - 1; i++) { string gramS = inputText.Substring(i, size); string nextString = inputText.Substring(i + size, 1); for (int j = 0; j < gramS.Length; j++) { gram.Add(gramS[j].ToString()); } string[] gramA = gram.ToArray(); ngram foundGram = ngrams.Find(x => Enumerable.SequenceEqual(gramA, x.gram)); if (foundGram != null) { stringNum foundString = foundGram.nextStrings.Find(x => x.str.Equals(nextString)); if (foundString != null) { foundString.number += 1; } else { foundGram.nextStrings.Add(new stringNum(nextString)); } } else { ngrams.Add(new ngram(gramA, nextString)); } gram.Clear(); } } }