Sina Kashani
Case study · NLP

Berlin Bites

A side project to find good restaurants in Berlin by reading what reviews say about food, service and price.

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.