1
$\begingroup$

Every year, Yelp released top 100 places to eat in America based on their data. I'm wondering how to design a machine learning algorithm to do this? This is definitely an open question. My basic idea is to build a ranking algorithm based on users' rate. Can anyone give some ideas? Or is there paper about this kind of topic? I also do not know does this question fit in this forum. If not, please let me know.

$\endgroup$
2

1 Answer 1

1
$\begingroup$

The first goal is to establish what it means to be in the top 100. The absolute simplest thing to do is find the top rated restaurants, arranged in descending order by the number of positive reviews. It's fair to call this the top 100 Yelp rated restaurants. You probably want something slightly more discerning. For example, you might want to say a restaurant is really good not just because it has good reviews, but because the distribution of reviews is unimodal. This means that on average, everyone likes the restaurant. Whereas a bimodal distribution would imply there's a group of people who really like the place, and a (smaller) group of people who really hate the place. Similarly, you're looking for places with a lot of reviews, with high rating and low variance, i.e. spread. This is still quite basic.

For the sake of example, lets suppose that we want great food, great service and overall great atmosphere. You can measure these by creating a list of features for each, and then parsing reviews. You could come up with a word bank for each category.

For example, if we're talking about food then maybe you can have words like "delicious, scrumptious, tasty, mouth watering, amazing", which you can then try to find in forms of n-grams like "delicious food", "amazing pizza" etc (you'll need a word bank for for food types as well). Similarly for service you'll have "courteous, friendly, quick, caring, attentive" etc so you're looking for "outstanding service", "friendly waiter" etc. So you'll need a word bank for different types of service: "waiter, staff, manager, bouncer, bartender" etc.

Specific to Yelp, there's usually a "Tips" section for each restaurant which tends to be a pretty good summary of both the best and worst about a restaurant, so you can start there.

Once you have all this, put it together. There will be a very strong correlation between number of stars and number of mentions of the n-grams above. You're free to weigh each category as you please. If you want to be overall encompassing, make service, food and atmosphere have equal weight. This way you'll pull up restaurants that excel in all categories put together and not just in food.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.