You might try looking into [sentiment analysis][1].  There was a [kaggle competition][2] on it, and you might find insight there.

Treating this as either a regression or a classification problem is fair.  Also, it's important to judge your performance against the [proper baselines][3]. 

Your feature space might not be rich enough for the classes to be linearly separable.  You might do better using an [SVM with a non-linear kernel][4].

It also appears you haven't [scaled][5] the counts of the bigrams, which is generally helpful for SVMs. 

Another thought for an approach would be to apply [LDA][6] to the set of documents (reviews) and use the topics as your feature space (you'll have a topic vector per document).

Some places to get python LDA implementations:

[gensim][7]

[Blei][8]


  [1]: https://en.wikipedia.org/wiki/Sentiment_analysis
  [2]: https://www.kaggle.com/c/sentiment-analysis-on-movie-reviews
  [3]: https://en.wikipedia.org/wiki/Sentiment_analysis#Evaluation
  [4]: http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html
  [5]: https://en.wikipedia.org/wiki/Feature_scaling
  [6]: https://en.wikipedia.org/wiki/Latent_Dirichlet_allocation
  [7]: https://pypi.python.org/pypi/gensim
  [8]: https://www.cs.princeton.edu/~blei/topicmodeling.html