There are a lot of different approaches that you could take. While the commenters are right, coming up with a distance metric is important, based on my own experience, finding good representations of your words/phrases is going to be significantly more important.
Most of the "semantic" clustering algorithms that immediately come to mind are document level, not word or phrase level. This would include things like the closely related LSA, PLSA, and LDA, or neural network based approaches such as Semantic Hashing. This list is by no means exhaustive, any unsupervised machine learning approach to topic modeling could probably be thought of as doing document level semantic clustering.
I'm not sure how well the above approaches would work at the phrase level. I'm not going to say they won't, but I suspect the performance would be quite poor, since you are going to have a bunch of really (really!) sparse term vectors.
At the phrase level there are several techniques that seem promising. Simple techniques, such as just clustering n-grams are unlikely to yield useful results, so we'll rule that out right off the bat. A significantly better option would be to use learned word/phrase embeddings and then run some standard clustering algorithm (such as k-means) over these. Collobert and Weston have done some really interesting work in this vein. Their paper A Unified Architecture for Natural Language Processing: Deep Neural Networks with Multitask Learning or the related work Word representations: A simple and general method for semi-supervised learning by Turian et al would be a good place to start. Turian has a number of different word embeddings available on his website for download here, which may allow you to sidestep the overhead involved in learning such embeddings yourself.
Another option is to hand engineer features or a distance metric using a resource such as Wordnet. This certainly seems like a reasonable approach and a google search for "wordnet semantic distance" yields numerous results. I can't point you in any particular direction here though. Hope this helps.