Happy third birthday, Horse_ebooks
medium.com
medium.com
Then question then becomes what text to go through, how long the Markov chains are, how you vary them, etc.
Not long ago I took a workshop on algorithmic music where the lead professor had published a book of haiku. The vast majority of the haiku were algorithmically generated via Markov chains, while a very slim minority were actual haiku from 17th century Japan (iirc) translated into English. Guessing which haiku were "real" and which algorithmic was very hard to do.
Edit - For anyone else who might be looking, this page gives a nice pythonic example:
http://agiliq.com/blog/2009/06/generating-pseudo-random-text...
* read in words
* keep track of the frequency of "wordA wordB", "wordB wordC", etc.
* use that frequency, e.g.:
{ "wordA" : {"wordB" : 0.5,
"wordC" : 0.25, ...},
"wordB" : {"wordC" : 0.75, ...} }
combined with a word, say "wordA", and pick a
random word from the frequencies, weighted by frequency.
* your word is now the word you just picked. repeat that
last step until you get bored.
You can go 'up' and 'down' in how many layers of frequency you want to collect, like the frequency of individual word pairs, vs word triples {"wordA wordB" : {"wordC" : 0.25}, etc}, vs sentences, anything.The more you collect, the more 'real' your generation will tend to be, but it takes more data to train it effectively since you want lots of possibilities for each 'key' so it doesn't repeat itself. Otherwise it might think that the only thing that comes after 'key' so it doesn't repeat itself. Otherwise it might think that the only thing that comes after 'key' so it doesn't repeat itself. Otherwise it might think that the only thing that comes after 'key' is a single phrase, so it keeps selecting it and it doesn't sound like something anyone would actually say.
(This is briefly mentioned in the article, but since you asked...)
-- EDIT --
on http://www.polygen.org/it/grammatiche/tecnologie/eng/manager... you can find an online example in English.
I found ff cache the page on refresh instead of reloading it, so if you want other generated phrases you need to fool the browser appending some gibberish in get (à la ?foo=1234)
If I were the one pulling the strings of Horse_ebooks, I would probably focus on building a statistical model that uses the number of favorites per tweet as its training data, and looks for linguistic features that are highly correlated with getting lots of favorites.
Yeah, but the problem in that approach is that you will always hit the cold start problem. What happens at the beginning when there is nothing? And no one likes you? If this was a robot, I can't imagine significant time was spent initially on custom designing these tweets.
What does this iframe on quotestatusjoke.com do? http://quotestatusjoke.com/twitter/tw.php
The contents say:
> Now 07:27 - we work from 14:00
And a cached version says:
http://webcache.googleusercontent.com/search?q=cache:M0v3DQU...
"1000_quotes|2441|2049|13240 1 - that matter, of National Review - there is not much reason to pay it attention. OK 0 - If a church offers no truth that is not available in the general culture - in, for instance, the editorials of the New York Times or, for OK
Search by tweets: fun & follow: 1559500496 158361802 375521629 391547065
Unfollowing... ok 56349379 ok 113315835
delete in messages:
delete out messages: 352898710100922368, 352898708427382785, 352898707064225792,
exit check new followers
Send thank you message to: 50860829, 414537821, 479947786,"
Is this a site visitor-triggered cron job?
Thank you, Horse_ebooks, and happy birthday.
Lately I've been tweaking and curating the output before posting it. It makes it a bit less magical but much funnier. It turns out that seeding your brain with random starting points like this is a potent creativity-boosting technique.
I tried using Bayesian spam filtering to classify the results as Funny or Not Funny, but it was unable to detect funniness just from which words were present in the message.