Skip to content

Instantly share code, notes, and snippets.

@amaurs
Created November 9, 2022 08:49
Show Gist options
  • Save amaurs/2d35c2d7597786c477a28ebba0043822 to your computer and use it in GitHub Desktop.
Save amaurs/2d35c2d7597786c477a28ebba0043822 to your computer and use it in GitHub Desktop.
from typing import List
import markovify
import argparse
# Example:
# python sentence_generator.py text_1.txt text_2.txt text_2.txt --state-size 2
# python sentence_generator.py text_1.txt text_2.txt
def main(filenames: List[str], state_size: int) -> str:
text_model = markovify.combine([load_text_model(filename, state_size=state_size) for filename in filenames])
return text_model.make_sentence(tries=100)
def load_text_model(filename: str, state_size: int) -> markovify.Text:
with open(filename) as f:
text_model = markovify.Text(f, state_size=state_size)
return text_model
if __name__ == '__main__':
parser = argparse.ArgumentParser(
prog = 'TextGenerator',
description = 'Generates text based on a corpus.')
parser.add_argument('filenames', nargs='*')
parser.add_argument('--state-size', type=int, default=3)
args = parser.parse_args()
print(main(filenames=args.filenames, state_size=args.state_size))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment