Problem
Star ratings in Berlin are almost all high, so they do not help much when choosing a place to eat. The useful information is in the review text: whether people praise the food, complain about the service, or find it too expensive.
What I built
I started with data. I tried the Foursquare API and other review sources, then settled on a dataset of TripAdvisor reviews for Berlin. I cleaned it, removed duplicate reviews, and built a text preprocessing pipeline.
In the analysis I found that about 95 percent of reviews in the dataset rate above three stars. So I moved from simple positive or negative sentiment to aspect scores. Using VADER and keyword groups, each restaurant gets a separate score for food, service and price, plus a confidence value based on how many reviews mention each aspect. A missing aspect no longer pulls the overall score down.
I also added a Docker setup and a small Streamlit page for running the scripts.
My part
This is a solo project. I did everything from data collection to analysis.
Result
This is exploratory work. The analysis lives in notebooks, and there is no user-facing app yet. The map, user preferences and a trained model are still planned. The project is on hold for now.
What I’d do next
Move the scoring from notebooks into tested code, then build a simple map view where you can filter restaurants by aspect.