26 lines
785 B
Python
26 lines
785 B
Python
|
import logging
|
||
|
|
||
|
import markovify
|
||
|
from unidecode import unidecode
|
||
|
|
||
|
|
||
|
class MarkovBlabberer:
|
||
|
def __init__(self, filepath):
|
||
|
self.logger = logging.getLogger('markov')
|
||
|
self.filepath = filepath
|
||
|
|
||
|
with open(filepath) as f:
|
||
|
text = f.read()
|
||
|
self.markov = markovify.NewlineText(unidecode(text.lower()))
|
||
|
self.logger.info("Sentence of the day: " + self.make_sentence())
|
||
|
|
||
|
def make_sentence(self, tries=100):
|
||
|
return self.markov.make_sentence(tries=tries) or "???"
|
||
|
|
||
|
def add_to_corpus(self, text):
|
||
|
text = text.lower()
|
||
|
new_sentence = markovify.NewlineText(text)
|
||
|
self.markov = markovify.combine([self.markov, new_sentence])
|
||
|
with open(self.filepath, 'a') as f:
|
||
|
f.write(text + '\n')
|