
Over the past three weeks, I built a sentiment analysis tool that classifies restaurant reviews as positive, negative, or neutral using a fine-tuned BERT model. The project started because I was curious how apps like Yelp actually process thousands of reviews automatically. I used Python, Hugging Face Transformers, and a public dataset of around 50,000 labeled reviews. The biggest challenge was not the model itself but data preprocessing: handling emojis, slang, sarcasm, and reviews in mixed languages. My initial accuracy was around 72%, which jumped to 89% after I cleaned the data properly and added domain-specific tokenization. I deployed it as a simple Flask web app so anyone can paste a review and get an instant sentiment score. The most surprising lesson was that a smaller, well-trained model often beats a larger one trained carelessly. I am sharing my code and notebook on GitHub. If you are working on something similar or want to collaborate, let me know.