Fake online reviews are becoming a major problem nowadays with the growing number of online purchases. Recently, natural language processing (NLP) methods that analyze the content of reviews have been increasingly used to detect fake reviews. The problem becomes extremely difficult due to the lack of reliable data caused by the difficulty in labeling fake and honest reviews. In this paper, we not only conduct a structural taxonomy of this topic, but we also present extensive experiments using a state-of-the-art language model BERT (Bidirectional Encoder Representations from Transformers) on different online review datasets. By efficiently fine-tuning this model, we outperform existing detection models by achieving 91% accuracy on the balanced crowdsourced dataset of hotel, restaurant, and doctor reviews and 73% accuracy on the imbalanced third-party Yelp dataset of restaurant reviews.