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.
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.
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.
(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)