This is neat... I love projects like this. When the number of clusters is unknown or hard to predict ahead of time, I'd lean toward something like affinity propagation or mean-shift. Why k-means?
Funny he mentions Latent Dirichlet Allocation. If you want to see it applied to Harry Potter, you're out of luck. However, if you want to see it applied to Harry Potter fanfiction, Kaj Sotala wrote a post three days ago! http://kajsotala.fi/2015/05/harry-potter-and-the-methods-of-...
http://scikit-learn.org/stable/auto_examples/cluster/plot_af... http://scikit-learn.org/stable/auto_examples/cluster/plot_me...