diff --git a/ircbot/modules/Markov.py b/ircbot/modules/Markov.py index 1ba9bbe..ed83ae5 100644 --- a/ircbot/modules/Markov.py +++ b/ircbot/modules/Markov.py @@ -26,7 +26,7 @@ import time from dateutil.relativedelta import relativedelta from markov.models import MarkovContext, MarkovState, MarkovTarget -from markov.views import _generate_sentence, _learn_line +from markov.views import _generate_line, _learn_line from extlib import irclib @@ -140,14 +140,14 @@ class Markov(Module): self.lines_seen.append(('.self.said.', datetime.now())) return self.irc.reply(event, u"{0:s}: {1:s}".format(nick, - u" ".join(_generate_sentence(context, topics=topics)))) + u" ".join(_generate_line(context, topics=topics)))) else: # i wasn't addressed directly, so just respond topics = [x for x in what.split(' ') if len(x) >= 3] self.lines_seen.append(('.self.said.', datetime.now())) - return self.irc.reply(event, u"{0:s}".format(u" ".join(_generate_sentence(context, - topics=topics)))) + return self.irc.reply(event, u"{0:s}".format(u" ".join(_generate_line(context, + topics=topics)))) def markov_learn(self, event, nick, userhost, what, admin_unlocked): """Learn one line, as provided to the command.""" @@ -190,12 +190,12 @@ class Markov(Module): topics = [x for x in line.split(' ') if len(x) >= 3] self.lines_seen.append(('.self.said.', datetime.now())) - return u" ".join(_generate_sentence(context, topics=topics, - min_words=min_size, max_words=max_size)) + return u" ".join(_generate_line(context, topics=topics, + min_words=min_size, max_words=max_size)) else: self.lines_seen.append(('.self.said.', datetime.now())) - return u" ".join(_generate_sentence(context, min_words=min_size, - max_words=max_size)) + return u" ".join(_generate_line(context, min_words=min_size, + max_words=max_size)) def thread_do(self): """Do various things.""" diff --git a/markov/views.py b/markov/views.py index cc2f1a0..7cc1e84 100644 --- a/markov/views.py +++ b/markov/views.py @@ -30,7 +30,7 @@ def context_index(request, context_id): start_t = time.time() context = get_object_or_404(MarkovContext, pk=context_id) - chain = ' '.join(_generate_sentence(context)) + chain = ' '.join(_generate_line(context)) end_t = time.time() return render(request, 'markov/context.html', {'chain': chain, @@ -96,7 +96,7 @@ def teach_line(request): return render(request, 'markov/teach_line.html', {'form': form}) -def _generate_line(context, topics=None, max_words=30): +def _generate_sentence(context, topics=None, max_words=30): """Generate a Markov chain.""" words = [] @@ -133,37 +133,37 @@ def _generate_line(context, topics=None, max_words=30): return words -def _generate_longish_line(context, topics=None, min_words=4, max_words=30): +def _generate_longish_sentence(context, topics=None, min_words=4, max_words=30): """Generate a Markov chain, but throw away the short ones unless we get desperate.""" tries = 0 while tries < 5: - line = _generate_line(context, topics=topics, max_words=max_words) - if len(line) >= min_words: - return line + sent = _generate_sentence(context, topics=topics, max_words=max_words) + if len(sent) >= min_words: + return sent tries += 1 # if we got here, we need to just give up - return _generate_line(context) + return _generate_sentence(context) -def _generate_sentence(context, topics=None, min_words=15, max_words=30): - """String multiple lines together into a coherent sentence.""" +def _generate_line(context, topics=None, min_words=15, max_words=30): + """String multiple sentences together into a coherent sentence.""" tries = 0 - sentence = [] + line = [] while tries < 5: - sentence += _generate_longish_line(context, topics=topics, max_words=max_words) - if len(sentence) >= min_words: - return sentence + line += _generate_longish_sentence(context, topics=topics, max_words=max_words) + if len(line) >= min_words: + return line else: - sentence[-1] += random.choice([',', '.', '!']) + line[-1] += random.choice([',', '.', '!']) tries += 1 # if we got here, we need to give up - return sentence + return line def _get_word_out_of_states(states, backwards=False):