Machine learning algorithm to classify blog posts
Question 1: Category prediction

To predict the category of a new blog post, you could do the following:


Build a MLP (multilayer Perceptron, a very simple neural network). Each category gets an output node, each tag is a binary input node. However, this will only work if the number of tags is very little. As soon as you add new tags, you will have to retrain the network.
Build a MLP with "important words" as features.
If you have internal links, you might want to have a look at "On Node Classification in Dynamic Content-based Networks". In case you're German, you might also like Über die Klassifizierung von Knoten in dynamischen Netzwerken mit Inhalt
You could take all words you currently have, see those as a vector space. Fix that vocabulary (and probably remove some meaningless words like "with", "a", "an" - this is commonly called a "stopword"). For each text, you count the different words you have in your vocabulary. A new blog post is point in this space. Use $k$ nearest neighbor for classification.
Use combinations of different predictiors by letting each predictor give a vote for a classification.


See also


Yiming Yang, Jan O. Pedersen: A Comparative Study on Feature Selection in Text Categorization, 1997.
Scikit-learn: Working With Text Data


Question 2: Tagging texts

This can be treated the same way like question 1.

Question 3: Finding locations

Download a database of countries / cities (e.g. maxmind) and just search for a match.