This was recommended to me by a friend. According to Wikipedia:
In this method one defines a similarity measure quantifying some (usually topological) type of similarity between node pairs. Commonly used measures include the cosine similarity, the Jaccard index, and the Hamming distance between rows of the adjacency matrix. Then one groups similar nodes into communities according to this measure. There are several common schemes for performing the grouping, the two simplest being single-linkage clustering, in which two groups are considered separate communities if and only if all pairs of nodes in different groups have similarity lower than a given threshold, and complete linkage clustering, in which all nodes within every group have similarity greater than threshold.
Markov Cluster
This is what I use in your situation. It is a very useful algorithm. I found a link to a nice PDF about the Algorithm. It is a great algorithm, and, for lack of a better term, extremely "powerful". Try it out and see.