/languagetoys

Random fun with statistical language models.

Primary LanguagePython

Currently here: a Markov random sonnet generator. There's sample
output at http://darius.livejournal.com/47444.html
(The program does somewhat better now than what's shown off there.)
To generate it:
$ python verse.py sonnet  # or limerick or other verse form it knows about

Currently missing: the data it works from. You need two files:

* 2gm-common6: from http://norvig.com/ngrams/
  (lines like "word1 word2\tcount" for common bigrams)
  (word1 can be "<S>" for start of sentence)
* cmudict.0.7a: from http://www.speech.cs.cmu.edu/cgi-bin/cmudict

I'd like to add I don't normally publish code in such a crap state.


Some other hacks thrown in here:

* anagram.py generates multiword anagrams

* bestpermutation.py helps to sort anagrams by quality (using n-gram
statistics and brute force)

* bibleanalyze.py breaks down the Gutenberg Project's KJ Bible into raw material for other hacks here

* companynames.py generate random Web2.0 company names, along with a plausibility rating for each.

* emvowel.py reverses disemvoweling

* mnemonify.py tries to invent mnemonics like pi's "How I wish I could enumerate pi easily..."

* portmanteau.py finds pairs of words that blend nicely, like book + hookup --> bookup

* summarize.py generates chapter 'summaries' for a book, like http://wry.me/blog/2010/04/08/quantitative-tolkien-studies.html

* textanalyze.py is a super-crude sentence segmenter

* tohtml.py writes HTML that highlights words with increasing intensity the more unlikely they are according to a language model

* verse.py described above

See also https://github.com/darius/amphigory for verse-making
rewritten in Javascript.