Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def testTwitterMarkovModel(self, *_):
tm = TwitterMarkov('example_screen_name', self.corpus,
config=self.configfile, dry_run=True, learn=False)
assert isinstance(tm.models['tweets.txt'], markovify.text.Text)
if output is not None:
return output
return None
@classmethod
def from_chain(cls, chain_json, corpus=None, parsed_sentences=None):
"""
Init a Text class based on an existing chain JSON string or object
If corpus is None, overlap checking won't work.
"""
chain = Chain.from_json(chain_json)
return cls(corpus or None, parsed_sentences=parsed_sentences, state_size=chain.state_size, chain=chain)
class NewlineText(Text):
"""
A (usable) example of subclassing markovify.Text. This one lets you markovify
text where the sentences are separated by newlines instead of ". "
"""
def sentence_split(self, text):
return re.split(r"\s*\n\s*", text)
def compile(self, inplace = False):
if inplace:
self.chain.compile(inplace = True)
return self
cchain = self.chain.compile(inplace = False)
psent = None
if hasattr(self, 'parsed_sentences'):
psent = self.parsed_sentences
return Text(None, \
state_size = self.state_size, \
chain = cchain, \
parsed_sentences = psent, \
retain_original = self.retain_original, \
well_formed = self.well_formed, \
reject_reg = self.reject_pat)
c = {}
for m, w in zip(model_dicts, weights):
for state, options in m.items():
current = c.get(state, {})
for subseq_k, subseq_v in options.items():
subseq_prev = current.get(subseq_k, 0)
current[subseq_k] = subseq_prev + (subseq_v * w)
c[state] = current
ret_inst = models[0]
if isinstance(ret_inst, Chain):
return Chain.from_json(c)
if isinstance(ret_inst, Text):
if any(m.retain_original for m in models):
combined_sentences = []
for m in models:
if m.retain_original:
combined_sentences += m.parsed_sentences
return ret_inst.from_chain(c, parsed_sentences=combined_sentences)
else:
return ret_inst.from_chain(c)
if isinstance(ret_inst, list):
return list(c.items())
if isinstance(ret_inst, dict):
return c
def get_model_dict(thing):
if isinstance(thing, Chain):
if thing.compiled:
raise ValueError("Not implemented for compiled markovify.Chain")
return thing.model
if isinstance(thing, Text):
if thing.chain.compiled:
raise ValueError("Not implemented for compiled markovify.Chain")
return thing.chain.model
if isinstance(thing, list):
return dict(thing)
if isinstance(thing, dict):
return thing
raise ValueError("`models` should be instances of list, dict, markovify.Chain, or markovify.Text")