diff --git a/MarkovGrams/UnweightedMarkovChain.cs b/MarkovGrams/UnweightedMarkovChain.cs index 2b97803..726f47f 100644 --- a/MarkovGrams/UnweightedMarkovChain.cs +++ b/MarkovGrams/UnweightedMarkovChain.cs @@ -77,7 +77,7 @@ namespace MarkovGrams while((Mode == GenerationMode.CharacterLevel ? result.Length : result.Split(' ').Length) < length) { // The substring that the next ngram in the chain needs to start with - string nextStartsWith = Mode == GenerationMode.CharacterLevel ? lastNgram.Substring(1) : lastNgram.Split(' ').Last(); + string nextStartsWith = Mode == GenerationMode.CharacterLevel ? lastNgram.Substring(1) : string.Join(" ", lastNgram.Split(' ').Skip(1)); // Get a list of possible n-grams we could choose from next List nextNgrams = ngrams.FindAll(gram => gram.StartsWith(nextStartsWith)); choiceCounts.Add(nextNgrams.Count); @@ -90,7 +90,7 @@ namespace MarkovGrams if (Mode == GenerationMode.CharacterLevel) result += nextNgram[nextNgram.Length - 1]; else - result += ' ' + string.Join(" ", nextNgram.Split(' ').Skip(1)); + result += ' ' + nextNgram.Split(' ').Last(); lastNgram = nextNgram; i++; } diff --git a/MarkovGrams/WeightedMarkovChain.cs b/MarkovGrams/WeightedMarkovChain.cs index 73c7cd8..34616e5 100644 --- a/MarkovGrams/WeightedMarkovChain.cs +++ b/MarkovGrams/WeightedMarkovChain.cs @@ -92,7 +92,7 @@ namespace MarkovGrams { wrandom.ClearContents(); // The substring that the next ngram in the chain needs to start with - string nextStartsWith = Mode == GenerationMode.CharacterLevel ? lastNgram.Substring(1) : lastNgram.Split(' ').Last(); + string nextStartsWith = Mode == GenerationMode.CharacterLevel ? lastNgram.Substring(1) : string.Join(" ", lastNgram.Split(' ').Skip(1)); // Get a list of possible n-grams we could choose from next Dictionary convNextNgrams = new Dictionary(); ngrams.Where(gram_data => gram_data.Key.StartsWith(nextStartsWith)) @@ -109,7 +109,7 @@ namespace MarkovGrams if (Mode == GenerationMode.CharacterLevel) result += nextNgram[nextNgram.Length - 1]; else - result += ' ' + string.Join(" ", nextNgram.Split(' ').Skip(1)); + result += ' ' + nextNgram.Split(' ').Last(); lastNgram = nextNgram; i++; } wrandom.ClearContents();