def markov_test(): print("### Markov Test") m = Markov(3, "word") m.train("../data/texts/lotr_clean.txt") generated = m.generate(10) pp.pprint(generated) print("\n")
def lambda_handler(event, context): """Entrypoint for AWS Lambda. Event contains the payload from the AWS Lambda call.""" user_text = event['userText'] mixin = event['mixin'] length = int(event['length']) full_text = user_text + load_mixin(mixin) markover = Markov(full_text) return markover.generate(length)
class TestMarkovClass(unittest.TestCase): """ Test that the Markov wrapper class behaves as expected """ def setUp(self): self.markov = Markov(prefix="testclass", db=11) def test_add_line_to_index(self): line = ['i', 'ate', 'a', 'peach'] line1 = ['i', 'ate', 'one', 'peach'] line2 = ['i', 'ate', 'a', 'sandwich'] self.markov.add_line_to_index(line) self.markov.add_line_to_index(line1) self.markov.add_line_to_index(line2) self.assertEqual(self.markov.client.zscore("testclass:i:ate", "a"), 2.0) self.assertEqual(self.markov.client.zscore("testclass:ate:a", "peach"), 1.0) def test_score_for_line(self): self.test_add_line_to_index() line = ['i', 'ate', 'a', 'peach'] self.assertEqual(self.markov.score_for_line(line), 100) def test_generate(self): self.test_add_line_to_index() generated = self.markov.generate(max_words=3) assert len(generated) >= 2 assert len(generated) <= 3 generated = self.markov.generate(seed=['ate', 'one'], max_words=3) assert 'peach' in generated assert 'sandwich' not in generated def tearDown(self): """ clean up our redis keys """ keys = self.markov.client.keys(self.markov.prefix + "*") for key in keys: self.markov.client.delete(key)
class TestMarkovClass(unittest.TestCase): """ Test that the Markov wrapper class behaves as expected """ def setUp(self): self.markov = Markov(prefix="testclass",db=11) def test_add_line_to_index(self): line = ['i','ate','a','peach'] line1 = ['i','ate','one','peach'] line2 = ['i','ate','a', 'sandwich'] self.markov.add_line_to_index(line) self.markov.add_line_to_index(line1) self.markov.add_line_to_index(line2) self.assertEqual(self.markov.client.zscore("testclass:i:ate", "a"), 2.0) self.assertEqual(self.markov.client.zscore("testclass:ate:a", "peach"), 1.0) def test_score_for_line(self): self.test_add_line_to_index() line = ['i','ate','a','peach'] self.assertEqual(self.markov.score_for_line(line), 100) def test_generate(self): self.test_add_line_to_index() generated = self.markov.generate(max_words=3) assert len(generated) >= 2 assert len(generated) <= 3 generated = self.markov.generate(seed=['ate','one'], max_words=3) assert 'peach' in generated assert 'sandwich' not in generated def tearDown(self): """ clean up our redis keys """ keys = self.markov.client.keys(self.markov.prefix+"*") for key in keys: self.markov.client.delete(key)
def caption(username, start, end): scraper = Scraper(username, start, end) text = scraper.text try: markov = Markov(text) except: if len(text) < 1: return "Username not found or private account" return "Not enough captions found to generate new text" text = markov.generate() if text == None or len(text) < 1: text = "Not enough captions found to generate new text" return text
def newTweet(): tweet_data = Markov(prefix="tweets") tweetline = tweet_data.generate() tweet = "" for word in tweetline: tweet += word + " " tweet = tweet.rstrip() if len(tweet) > 140: return newTweet() else: return tweet
def newTweet(): tweet_data = Markov(prefix="tweets") tweetline = tweet_data.generate() tweet = "" for word in tweetline: tweet += word + " " tweet = tweet.rstrip() if len(tweet)>140: return newTweet() else: return tweet
class TestMarkov(unittest.TestCase): """test class of markov.py""" def setUp(self): print('*** setup ***') self.markov = Markov() def test_add_sentense(self): self.__add_sentense_bocchan() self.assertTrue(len(self.markov.starts) > 0) self.assertTrue(len(self.markov.dic) > 0) def test_generate(self): self.__add_sentense_bocchan() input_texts = [ '初めまして、坊ちゃん', 'あら、ご病気ですか', 'あらあら、大変ですね', 'いたずらして病気になっちゃったんですか?', 'そんな威張らなくてもいいでしょう', 'はあ、そんなもんですか', '遅刻しちゃだめですね', 'よく覚えてないんですか?', 'ターナー?', 'どなたですか?' ] for input_text in input_texts: with self.subTest(): tokens = Morph.analyze(input_text) keyword = 'N/A' for token in tokens: if Morph.is_keyword(token): keyword = token.surface generated = self.markov.generate(keyword) print('you > ' + input_text) print('generated > ' + generated) print('************') self.assertTrue(len(generated) > 0) # private method def __add_sentense_bocchan(self): sample_file = '../KOISURU_PROGRAM/sample/markov/bocchan.txt' content = '' original_content = codecs.open(sample_file, 'r', 'shift_jis') for row in original_content: content += row.rstrip() original_content.close() texts = re.split(r'[。??!! ]+', content) for text in texts: if text == '': continue tokens = Morph.analyze(text) self.markov.add_sentence(tokens) print('.', end='') print('')
def tweet(userName): twitter = OAuth1Session(settings.CONSUMER_KEY, settings.CONSUMER_SECRET, settings.ACCESS_TOKEN, settings.ACCESS_TOKEN_SECRET) markov = Markov() tweets = markov.generate() randomtweet = tweets #randomtweet = tweets[random.randrange(len(tweets))] params = {"status": randomtweet} #params = {"status": '@' + userName + ' ' + randomtweet + ' ' + str(datetime.datetime.today())} req = twitter.post("https://api.twitter.com/1.1/statuses/update.json", params=params)
def response(self, parts): markov = Markov() keyword = next((w for w, p in parts if is_keyword(p)), '') response = markov.generate(keyword) return response
class TestMarkovClass(unittest.TestCase): """ Test that the Markov wrapper class behaves as expected """ def setUp(self): self.markov = Markov(prefix="testclass", db=11) def test_add_line_to_index(self): line = ['i', 'ate', 'a', 'peach'] line1 = ['i', 'ate', 'one', 'peach'] line2 = ['i', 'ate', 'a', 'sandwich'] self.markov.add_line_to_index(line) self.markov.add_line_to_index(line1) self.markov.add_line_to_index(line2) self.assertEqual(self.markov.client.zscore("testclass:i:ate", "a"), 2.0) self.assertEqual(self.markov.client.zscore("testclass:ate:a", "peach"), 1.0) def test_score_for_line(self): self.test_add_line_to_index() line = ['i', 'ate', 'a', 'peach'] self.assertEqual(self.markov.score_for_line(line), 100) def test_generate(self): self.test_add_line_to_index() generated = self.markov.generate(max_words=3) assert len(generated) >= 2 assert len(generated) <= 3 generated = self.markov.generate(seed=['ate', 'one'], max_words=3) assert 'peach' in generated assert 'sandwich' not in generated def test_flush(self): m1 = Markov(prefix="one", db=5) m2 = Markov(prefix="two", db=5) line = ['i', 'ate', 'a', 'peach'] line1 = ['i', 'ate', 'one', 'peach'] line2 = ['i', 'ate', 'a', 'sandwich'] m1.add_line_to_index(line) m1.add_line_to_index(line1) m1.add_line_to_index(line2) important_line = ['we', 'all', 'have', 'phones'] m2.add_line_to_index(important_line) r = redis.Redis(db=5) assert len(r.keys("one:*")) == 6 assert len(r.keys("two:*")) == 3 m1.flush(prefix="one") assert len(r.keys("one:*")) == 0 assert len(r.keys("two:*")) == 3 m2.flush(prefix="two") assert len(r.keys("one:*")) == 0 assert len(r.keys("two:*")) == 0 def tearDown(self): """ clean up our redis keys """ keys = self.markov.client.keys(self.markov.prefix + "*") for key in keys: self.markov.client.delete(key)
send(str(random.randint(fd, sd)), '', event.chat_id) else: send('Хочешь наебать меня, дешёвка?', '', event.chat_id) else: send('Хочешь наебать меня, дешёвка?', '', event.chat_id) elif (newMessageLower[:12] == "мойша марков"): n = newMessageLower[13:] if n.isdigit(): n = int(n) if (n < 1) or (n > 9): send('Неверный размер окна, иди нахуй, дешёвка', '', event.chat_id) else: moysha = Markov('dict', n) answer = moysha.generate(n) send(answer, '', event.chat_id) else: moysha = Markov('dict', 4) answer = moysha.generate(query=newMessageLower[13:]) send( '> ' + newMessageLower[13:].capitalize() + '\n> ' + answer, '', event.chat_id) elif (random.randint(0, 10) <= -3) and (newMessageLower[-1] == '?'): send('Мойша услышал Ваш вопрос... Мойша думает...', '', event.chat_id) moysha = Markov('dict', 4) answer = moysha.generate(query=newMessageLower[:-1]) send('> ' + newMessageLower.capitalize() + '\n> ' + answer, '', event.chat_id) elif (newMessageLower[:9] == "расшифруй"): # Расшифровка
class TestMarkovClass(unittest.TestCase): """ Test that the Markov wrapper class behaves as expected """ def setUp(self): self.markov = Markov(prefix="testclass", db=11) def test_add_line_to_index(self): line = ['i','ate','a','peach'] line1 = ['i','ate','one','peach'] line2 = ['i','ate','a', 'sandwich'] self.markov.add_line_to_index(line) self.markov.add_line_to_index(line1) self.markov.add_line_to_index(line2) self.assertEqual(self.markov.client.zscore("testclass:i:ate", "a"), 2.0) self.assertEqual(self.markov.client.zscore("testclass:ate:a", "peach"), 1.0) def test_score_for_line(self): self.test_add_line_to_index() line = ['i','ate','a','peach'] self.assertEqual(self.markov.score_for_line(line), 100) def test_generate(self): self.test_add_line_to_index() generated = self.markov.generate(max_words=3) assert len(generated) >= 2 assert len(generated) <= 3 generated = self.markov.generate(seed=['ate','one'], max_words=3) assert 'peach' in generated assert 'sandwich' not in generated def test_flush(self): m1 = Markov(prefix="one", db=5) m2 = Markov(prefix="two", db=5) line = ['i','ate','a','peach'] line1 = ['i','ate','one','peach'] line2 = ['i','ate','a', 'sandwich'] m1.add_line_to_index(line) m1.add_line_to_index(line1) m1.add_line_to_index(line2) important_line = ['we', 'all', 'have', 'phones'] m2.add_line_to_index(important_line) r = redis.Redis(db=5) assert len(r.keys("one:*")) == 6 assert len(r.keys("two:*")) == 3 m1.flush(prefix="one") assert len(r.keys("one:*")) == 0 assert len(r.keys("two:*")) == 3 m2.flush(prefix="two") assert len(r.keys("one:*")) == 0 assert len(r.keys("two:*")) == 0 def tearDown(self): """ clean up our redis keys """ keys = self.markov.client.keys(self.markov.prefix+"*") for key in keys: self.markov.client.delete(key)
def make_tweet(target): target_data = Markov(target) output_tweet = target_data.generate(max_words=10) return output_tweet