Haskell Word Clouds

What are word clouds?

A word cloud is a graphical representation of a weighted set of words. Weight is usually indicated by colour or font size. More on word clouds at Wikipedia.

Word clouds are cool and pretty.

Word Cloud library

I've written a library for producing pretty word clouds. It's based on Wordle.net, which is an excellent web site for generating word clouds, using a Java applet.
Here is a screenshot of a word cloud of #haskell's IRC logs (by Wordle):

Thumbnail

See how it fits the letters into eachother? That's brilliant, and pretty, and I think the Java Font API has something to do with it. Unfortunately it is closed source, so it is difficult to use in programs or automated setups, and has less configuration potential. So I figured I'd write a library that does what I like about Wordle.

Examples

Here is the first image I generated after compiling, the whole of `Beautiful concurrency':

Beautiful Concurrency
		 thumbnail

Here is a 70 word cloud of Sophistical Refutations by Aristotle:

Concurrency articles by Simon Peyton Jones:

Try it

Try it here (paste some stuff into it)

Configuration

Number of words

We can configure the number of words, seen here by increasing the Aristotle word cloud to 150 words:

There are some problems with this cloud compared to the 70 word version:

Algorithm

About the word cloud algorithm