How do we decide on the classification algorithm to use with huge training size?
I don't think there is a clear-cut criterion to decide on what method to use. From what I see, you have a good amount of data and the problem is "complex" (language). This are reasons to go for "deep" learning such as neural nets or boosting. The reason is that both can handle "non-linearity" very well.

Another thing that comes to my mind is that when you use for instance logit, you man have the problem that you have many features (words) and that only a certain share of the features might be relevant. So in this case you would try to get rid of features which are not helpful in making good predictions. With logit, a lasso approach (l1 penalty) would be a natural thing to do, to "shrink" features.