In [2]:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from nltk.corpus import stopwords 
from nltk.tokenize import WordPunctTokenizer

import sqlite3 as sql
from datetime import datetime
import gc
import math
In [3]:
conn = sql.connect("../_SharedDataset/yelp.sqlite")

//Test with Recommend Restaurant in city Markham (37,810 Review)

In [4]:
#df_review_1 = pd.read_sql_query("SELECT * FROM review WHERE business_id IN (SELECT business_id FROM location WHERE state = 'AZ') LIMIT 60000 OFFSET 0", conn)
review_df = pd.read_sql_query("SELECT * FROM review WHERE business_id IN (SELECT business_id FROM location WHERE city = 'Markham')", conn)
In [39]:
restaurant_df = pd.read_sql_query("SELECT * FROM restaurant WHERE business_id IN (SELECT business_id FROM location WHERE city = 'Markham')", conn)

//Ploting Table for perform Matrix Factorization later.

In [6]:
start_time = datetime.now()

rating_matrix = pd.pivot_table(review_df, values='stars', index=['user_id'], columns=['business_id'])

time_elapsed = datetime.now() - start_time
print('Time elapsed (hh:mm:ss.ms) {}'.format(time_elapsed))
Time elapsed (hh:mm:ss.ms) 0:00:00.219875
In [7]:
rating_matrix
Out[7]:
business_id -0DET7VdEQOJVJ_v6klEug -0T0jfPnuBRdpNTXpOQZcA -2lSbNMhXKYu7URjEE59qA -56TP_w4VG2oNGpauDMOOQ -7EwIdxcRC5McO35DVfeSQ -I7Vz5eDjc63xKmmt4Qx4g -Lgj3gdQZiVngAEc1yALzw -aXiRp2vp8Ax3BWQsk8hpg 0-8DTqVaY9RJU0PAWD2l6Q 0-jZq2P4eN7fRdt4Ls1QZQ ... zBd5JvFWuMGlnCYLaGsXZg zLPs4wSjtfZxVy3WByt00g zdqvzYtIZYMCRAQRNfcKIw zgDfyybM8j8lnpM0G55icg zhE9euD7t-RlXmWk50rCxQ zkU-WMio8g6dpRJ2Y2xqvQ zkbJE4QFMZla-mnomfFC5w zoIEe7uhsQT2EyiFLIfhrw zs710LuQ8y10YsQHIjxjyw zutMSVmRLPjEbeF8aFtSnQ
user_id
--Br-QsbO9ad5GbZxVGxaw NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
--BumyUHiO_7YsHurb9Hkw NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
--KwxF4LB3dbENQBB98IqQ NaN NaN NaN NaN 4.0 NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
--UOvCH5qEgdNQ8lzR8QYQ NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
--YhjyV-ce1nFLYxP49C5A NaN NaN NaN NaN NaN NaN 3.0 NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
zzJaAO8tthdaPJIvkza2UA NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
zzTKylg4uoI4VdwR1Ky2LQ NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
zzXaoGK1oS-kIyCyaGhDgA NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
zzmhLxcZ4XZQyz95c_KbOA NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
zzo--VpSQh8PpsGVeMC1dQ NaN NaN NaN NaN NaN NaN 3.0 NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

11741 rows × 730 columns

df_review passed first step of clean up process, but for this specified use we need to perform more clean up.

In [8]:
review_txtprocess_df = review_df[['business_id', 'user_id', 'stars', 'text']]
In [9]:
import string
from nltk.corpus import stopwords
stop = []
for word in stopwords.words('english'):
    s = [char for char in word if char not in string.punctuation]
    stop.append(''.join(s))
In [10]:
def text_process(mess):
    """
    Takes in a string of text, then performs the following:
    1. Remove all punctuation
    2. Remove all stopwords
    3. Returns a list of the cleaned text
    """
    # Check characters to see if they are in punctuation
    nopunc = [char for char in mess if char not in string.punctuation]
# Join the characters again to form the string.
    nopunc = ''.join(nopunc)
    
    # Now just remove any stopwords
    return " ".join([word for word in nopunc.split() if word.lower() not in stop])
In [13]:
start_time = datetime.now()

review_txtprocess_df['text'] = review_txtprocess_df['text'].apply(text_process)

time_elapsed = datetime.now() - start_time
print('Time elapsed (hh:mm:ss.ms) {}'.format(time_elapsed))
Time elapsed (hh:mm:ss.ms) 0:00:11.111332
C:\ProgramData\Anaconda3\lib\site-packages\ipykernel_launcher.py:3: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  This is separate from the ipykernel package so we can avoid doing imports until
In [14]:
review_txtprocess_df.head()
Out[14]:
business_id user_id stars text
0 3fw2X5bZYeW9xCz_zGhOHg jlu4CztcSxrKx56ba1a5AQ 3.0 Tracy dessert big name Hong Kong one First Mar...
1 6sATfFam9_q9uod0I2aCsg D-vYE3HILl7Qk1UhYqZXYQ 5.0 really enjoyed visit Everything visually appea...
2 6sATfFam9_q9uod0I2aCsg -V-bzlNcuQc0otRfYKbZDg 1.0 taken family place quite happy service food Re...
3 QHZw2L6LV1qmExNJbfhIsQ lpBqT199xdDwh_xJwHieLA 1.0 Reservation walk Pointless make reservations m...
4 Fiq23fXJAcFsobkQaRqIkQ j55ySt8CuDQ0bahoVBAb_A 2.0 come today son wanted falafel balls dinnerI we...

Comment


Process take time, It's may better for trying to do NLP for each section of recommend!

Feature Extraction

Have to process twice for:
1) Individual User
2) Individual Restaurant

Do Normalization
Insert Mathmatical model here

In [15]:
user_review_df = review_txtprocess_df[['user_id','text']]
restaurant_review_df = review_txtprocess_df[['business_id', 'text']]
In [17]:
#Test for normalization result
user_review_df[user_review_df['user_id']=='jlu4CztcSxrKx56ba1a5AQ']
Out[17]:
user_id text
0 jlu4CztcSxrKx56ba1a5AQ Tracy dessert big name Hong Kong one First Mar...
493 jlu4CztcSxrKx56ba1a5AQ price sushi would four stars Ai Sushi option t...
814 jlu4CztcSxrKx56ba1a5AQ Unlike everyone else came bubble tea review ba...
2090 jlu4CztcSxrKx56ba1a5AQ Although Gals Sushi opened long time first tim...
2371 jlu4CztcSxrKx56ba1a5AQ first sure felt coming grocery store pet shop ...
... ... ...
35515 jlu4CztcSxrKx56ba1a5AQ 35 stars rounded came pretty good time Came ea...
36655 jlu4CztcSxrKx56ba1a5AQ think theyre good used still really love pork ...
36990 jlu4CztcSxrKx56ba1a5AQ Cute Japanese restaurant tucked NoFrills plaza...
37495 jlu4CztcSxrKx56ba1a5AQ Two words PINEAPPLE BUNS first Lucullus Bakery...
37632 jlu4CztcSxrKx56ba1a5AQ took come food outlook restaurant market towar...

97 rows × 2 columns

Now combine all.

In [18]:
user_review_df = user_review_df.groupby('user_id').agg({'text': ' '.join})
restaurant_review_df = restaurant_review_df.groupby('business_id').agg({'text': ' '.join})

This process turn "user_id" as primary key and will replace number indexing and "user_id" can no-longer be call but as "index calling" instated.

In [19]:
#Test for joining result
user_review_df.loc['jlu4CztcSxrKx56ba1a5AQ']['text']
Out[19]:
'Tracy dessert big name Hong Kong one First Markham place many years Came Chinese dessert must say selection increased tremendously years might well add price also increased tremendously well waitress gave us tea could taste red date Fancy simple taro coconut tapioca pearls like 525 something Basically desserts 5 Thats crazy literally make dessert home bowl would probably cost like 050 years ago think still get like 34 reasonable wow 5 little top dessert Though must say Tracy Dessert little expensive side also saw items menu like fish balls chicken wings shaved ice friend got mango drink fresh mango Im also surprised many people come Tracy Dessert work came Sunday tables always filled think amount tables perfect one really waited seats long time tables kept filling table finished price sushi would four stars Ai Sushi option take sit Sitting would give hot tea water AI sushi always busy lot people ordering take recommended call advance wait long time wait time fairly fast though probably pick fifteen minutes ordering unless unusually large order recommend ordering large platters get best value items 16 pieces assorted sashimi 15 order 30 pieces 28 also options 50 80 pieces best value opinion assorted sushi sashimi rolls 100 pieces 60 great option share friends family members give large assortment sushi quality sushi AMAZING definitely better AYCE sushi restaurants one cheaper options go area Unlike everyone else came bubble tea review based bubble tea alone came Friday night waited seats came friend mind taking bar seats seated within ten minutes got hot ginger milk tea tapioca tapioca usually included price 499 though want upgrade larger size extra 100 believe grass jelly also 100 extra friend got cold bubble tea drink hot drinks served cute wooden plate Unfortunately forgot give friend tapioca wait someone able serve us Thankfully someone finally took note gave spoonful tapioca spoon tasted like normal bubble tea nothing special guess extremely busy hour half handed bill okay still lot people waiting outside Although Gals Sushi opened long time first time Ive really wanted Korean food somewhere little closer friends suggested come even though specialty Japanese fairly filled weekday night second week holidays Something really enjoyed privacy value seats person booth wide open area though thick winter jackets bags presents little challenging 4 girls share booth area ordered Gam Ja Tang 1199 Gam Ja Tang Korean Pork Bone Soup served us sweet potatoes glass noodles classic favourites banchan meals came decent speed also came bowl rice pork bone soup maybe 5 pieces rice cake though think anything SUPER special soup moderately spicy pork bones little bit meat think would come back try Bento Boxes heard specialty first sure felt coming grocery store pet shop many years walking think pretty good clean place Theres adequate parking spots located immediately left giant Home Depot Immediately left walk fresh produce followed meats frozen goods towards back Coming around perimeter store stock bread delivered another place fresh bakery inside columns comprised dried goods sauces snacks think snack column one interesting ones wide selection products example theres different flavours lays chips variety snacks imported Asia First Markham Place Im glad FINALLY opened grocery store felt lacking mall long time Newer food basics Markham clean offers variety cheaper grocery options along prices NoFrills Best part Food Basics Dollarama located right beside need cheap options last minute containers etc food conveniently go next door Easy drive traffic light located nearby unbusy intersection course design Food Basics much like ones bags cost 5 cents usual Although theres NoFrills slightly south Food Basics theres usually less people Food Basics also meaning less chaos less wait time cashier products go sale different grocery stores keep watch flyers want go stores come Markham road towards 16th stores conveniently 5 minute drive apart chewy goodness filled tons butter chocolate chips raisins nuts cookies soft tender taste droolworthy insta snap pic Monsieur Felix Mr Norton best cookies town 20 flavours sometimes see flavours sometimes see less guess depends much stock moment LOVE cookies Flavours macadamia nut cookies caramel menage et trois BEST course macadamia nut top list Prices little expensive looking around 1012 dozen cookies roughly 2inch diameters 1550 cookies get 17 cookies bonus side Monsieur Felix Mr Norton gives VIP card earn 1 stamp every 10 spent spending 120 gaining 12 stamps get 1LB free cookies thats 17 cookies small little shop Highway 7 Warden plaza NoFrills usually parking bad find spot depends far go Walking exposed selection gifts fudge small cupcakes etc Monsieur Felix Mr Norton beautiful cookie bouquets well looking give gifts Congee Queen looked like restaurant Hong Kong first stepped couple years ago went one shop two bought neighbouring store well ton people different cultures like eat congee queen well theyre pretty delicious decent prices food usually quality huge portions love salmon eel fried rice looking 13 whole plate LARGE fried turnip cake seasoned perfectly cut cute squares Another one favourites lobster E fu noodles sauce lobster everything fresh salty mention HUGE Definitely recommend come give try come early cause spots fill really early Literally plan eat come like 545pm dinner Arriving 1015amish Saturday morning needed wait 15 minutes seated already came quite early right got ton people flowed restaurant Chinese newspapers free charge week round long dine Yay type spend money newspaper go get ordered Mings Super Breakfast 7am 1130am got letter beef satay sauce vermicelli scrambled egg hambutter toast 550 addition get coffee tea free 075 extra cold beverage 075 extra change instant noodles 050 extra toasted bread honestly waited like 2 minutes drinks come ordered like less minute food came food hot felt like prepared already scooped mildly warm area bonus speed served beef satay enough satay feel addition soup hot warm toast toasted would need pay extra 050 toasted breadwhich little extra egg ham literally scrambeled egg mixed small ham slices expect sit really long time food really good fact newspaper free food comes SUPER fast bonus Sweet Notes located Commerce Gate right bridge area bold aqua baby blue colour orange letters one server one baker went front section offered many macarons small treats milk bottle desserts cakes people could come purchase decided try macarons 250 got green tea mango flavoured macarons also one better ones tried great Nadege macarons relative compared Ruelo opinion also tried strawberry souffle 850 waiter told us needed wait 45 minutes souffle prepared peak hours got see chef bake front eyes patiently agreed definitely worth wait Fresh oven top portion slightly crisp placing mouth souffle melted like cotton candy Pouring strawberry sauce added bit flavour souffle though think prefer souffle pure First time trying place location Northwestern Chinese Cuisine serves mainly noodle dishes average approximately 79 per bowl dishes fairly large one person absolutely worth opinion place fairly spacious plenty tables chairs menu sorted variety noodle types flavours got beef brisket rice noodle soup placing order order came moderately quickly soup blaring hot nice hot enough stay warm cold winter day prices Northwestern Chinese Cuisine decent large bowl noodles would nice warm dinner lunch cold day Came flaming kitchen regular weekday night quite number people waiting dine Flaming kitchen took location Aka Teppan essentially served type food sizzling hot plate wonder new owner took changed name ordering food waited approximately 15 minutes get food guess came good time reviews seem write much longer wait time friend tried black curry pork katsu beef supreme sizzling hot plate definitely kept food warm paper side prevented oil hitting hand However take paper way mix food sizzling plate sticks bottom food flavourful salty much sauce Overall thought flaming kitchen average food location IDEA called Peachtree Center even though Ive coming decade half THANK GOD YELPERS YELP Yea always called mong gok thats called Chinese actually went long ago changed sign New Kennedy Square although still see Peachtree Mall one signs couple stores changed since plaza opened shops decades like store sells popcorn cotton candy store sells sugar cane drinks food court booths opened though one directly middle food court always seems close probably feng shui great spot idea tbh dollar dollar store selling item think fewer bootleg dvd shops remember bootleg dvds like 20 3 10 3 popular day Parking difficult peak times Saturday dinner need wait long spot always pass hot star large fried chicken downtown Toronto never felt hungry try Im glad hot star large fried chicken opened non famous Pacific Mall friend really wanted try popcorn chicken 790 options pepper salt spicy ready 2 minutes 20 pieces came paper bag placed bag able tap visa nice convenient got salt spicy one super oily must say soggy popcorn chicken Ive Kristy sort soggy still four stars Cause popcorn chicken ACTUALLY large piece chicken lightly coated outside shell actually solid large piece chicken taste slightly salty really tasty delicious Average Food average home fries sort soggy omlette best part Everything else mediocre service hand decent server came check us asking theres anything needed polite Probably one best Italian foods ever tasted family owned business Besides Alice Fazoolis Folcos Ristorante another serves warm bread olive dip instead butter Thats already additional half star serve warm bread non butter dip love getting mussels appetizer share recommend pasta tomato juice point mussles slowly cooked opened perfectly gracefully covered appealing tomato sauce herbs pasta well pasta delicious homemade sauce summertime ask sit patio theres construction really adds feel dining restaurant Main Street north end Main Street Markham Inspire cozy place Markham lot parking spaces located right side shop Walking store felt like well designed fusion asian caucasian feel fireplace touch wood really made waiterswaitresses nice patient kindly explaining menu never came chicken waffles great first time fresh meringues pomegranate seeds fennel seeds However second time waffle bit smaller melted meringues tomatoes used replace pomegranate seeds appearance match first time went foods still great INSP burger fulfilling specialty really want come back try creme brulee dessert still offer Coming night parking pretty full new community Walking store thought designed nicely clean white aqua blue colour line short wait long arrived around 945pm10pm still plenty seats staying half hour longer seats already taken careful pay cause tip option button screen saying tip put credit card option would pressing 0 cross mind Also know serving us bringing food handing us gave tips turns like food court style would bring dessert table Looking menu noticed hot cold dessert decided give try Got Tofu Pudding Q Ball cold Red bean Soup Lychee hot Trying red bean soup lychee lacking little sweetness lychee seemed like falling apart felt like tasted better places specialize hot food cold tofu pudding Q ball much better smooth sweet Q balls rice flour different flavours taro sweet potato green tea selections 8 bowl suppose pricey side comparison places great experience Azyun Restaurant Going birthday celebration made reservations day staff member explained large party right us would later time problem Even though party us finished little later really liked everything communicated us Azyun small restaurant tables really enjoyed local warm vibe sat greeted right away staff mentioned new menu Despite never secretly excited new menu probably meant menu changed based tastes reviews customers menu comprised Asian Fusion delicacies compare Inspire located beside would say Azyun closer Asian touch wonderful food recommendation host gave us detailed description dishes tried TORCHED MACKEREL 9 Fish bones Sign Im big fan spitting bones accidentally swallowing throat torched mackerel definitely one favourites grilled fish citrus flavours drizzled throughout fish come large portions quite tasty SATAY BEEF SHORTRIB 14 satay beef shortrib delicious satay sauce tea spiced peanuts Definitely little different ones Dim Sum Another delicious dish BIANG BIANG NOODLE 16 regular size dishes one family enjoyed least Biang Biang noodles giant thick noodles clams surrounding think dish potential become tasty felt like enough savoury flavour chef decides change recipe bit definitely recommend adding salt TRUFFLE FRIED RICE 14 regular size Absolute FAVOURITE dish honestly genius creation truffle fried rice dish combination savoury salt garlic fresh tomatoes mushrooms surprising poached egg around goodness touch truffle knew good really might tried go 23 Large portion bring leftovers lunch next day Wait really see truffled Fried rice 50 Tuesdays SIGN hear name MAN know gotta go inside DING TAI FUNG way chain restaurants specializes Shanghai food Three words 小籠包xiao long bao Haha find kind funny translates literally small dragon bun Another one favourites plasticwrapped sticky rice contained dried strands salty pork floss strips fried dough every shanghai place dish definitely one favourites Yupp theres always long lineup make sure come early get reservations glass window see chefs make bread dumpling items Im really surprised design changed changed much years guess pricey side compared Shanghai places still delicious However compare Ding Tai Fung Legendary one Taiwan Id say man one cant compare one Ding Tai Fung Markham GOOD price food getI think better places Markham turtle bun must get Bakery Nakamura Located right Steeles Woodbine inside JTown Bakery Nakamura located inside grocery store Theres always fresh buns available people purchase tons people come purchase whenever come would say guaranteed fresh green tea turtle bun 250 signature item place buns range 120 per piece 4 expensive debatably worth purchasing well types buns sell Bakery Nakamura also sells donuts sandwiches danishes well cakes desserts See stop regular weekday able purchase delicious baked items Bright clean neat grocery store Ahhhh Longos one higher end grocery store chains Ontario high end Whole Foods always enough parking Walking hit cooked items including Starbucks way left side rotisseries dead center area plants flowers closer middle left fresh vegetables right meat section oh delicious fresh sliced perfection super clean bakery houses expensive breads including ACE Longos Brands chocolate drizzled croissants run sales Janes chicken nuggets however general expensive grocery stores like drinks coco since great variety slightly cheaper bubble tea chains like chatime etc also great options combinations three guys two ladies feel like write words consist little bigger menu literally walk right front sign squint read Came tonight one person making drinks took wait seats 930pm waiting one seat feel like lot room place extra seats stilk making environment comfortable enjoy specials recommendations sometimes see promoting get pretty good deal like paid 420 three guys back Christmas time different coco location average Chinese 茶餐廳 slightly expensive side lot dishes come soup tried Hainanese Chicken mediocre think Lobster Bisque soup really good thick creamy Chinese place though dish would recommend Another dish think really tasty stir fried instant noodles dish lot flavour though little pricey well guess place kind middle average overpriced place teenagers come 茶餐廳 AJISEN love iconic Japanese Character doll shop First would like say lucky getting rush hour two times came AWESOME got Ajisen Ramen 850 love trying house noodles every time visit noodle place see recommend also realize house meals worth value Ajisen ramen comprised green onions half egg BBQ pork bean sprouts course noodles friend got Pork Cutlet Ramen 950 noodles basically plain noodles soup green onions separate plate pork cutlet Although pork cutlet small plate lot texture tasted delicious tasted awesome eating guess left MSG started kicking actually quite bit MSG nevertheless still really tasty Beware awfully long wait times Came three times twice dinner lunch cute little restaurant inside JTOWN difficult find Walking first thing saw drum set thought place place music However think drum set used occasionally would definitely rate lunch dinner less people food actually tastier lunch time went dinner photos posted got 1 Unagidon 17 2 Shiso Clam Vongole 15 3 Shrimp Okonomiyaki 14 three came complimentary soup salad piece garlic bread side Ive never heard Japanese pasta Im glad tried tasted really good Instead pasta regular tomato alfredo sauce added twist regular pasta unagi shrimp clams delicious well rich flavour cooked right amount time temperature Ive always decent experience Frills However must say definitely gotten lot busier throughout years remembered first opened tons parking spots Markham Road smooth drive get across BurOak smooth easy However addition new apartments theres lot traffic around area Nevertheless Frills groceries Im looking clean easily accessible rarely ever sold sale products look theres rack dated seasonal things visit think lines gotten much longer years go usually terrible pretty long recently stopped coming SUPER HIDDEN SUSHI PLACE MARKHAM lived area years knowing actually decent sushi place around quite embarrassing Markham Sushi hidden little hole plaza right beside Fish Chips TD Canada Trust decided stop lunch friend realize tasty lunch specials would say lunch menu much worth dinner menu consist similar number items lunch much better price truly local sushi spot opened Westerners Many local people neighbourhood stop sushi great privacy private booths everyone lunch specials 1399 bento box bento box comes miso soup salad rice japchae addition could pick two items bento box One favourites includes choosing six piece roll sashimi dinner bento box 1799 essentially thing except comes additional 2pcs spring rolls 6pcs california roll instead rice japchae dinner come group get dinner combos sashimi sushi roll combo three people offer 52pcs 5199 includes 20 sashimi 20 sushi6 california roll 6 salmon roll fairly pricey think essentially 1 per item also lot food think quality Markham sushi decent Id say one top 5 Markham close bonus Panash Bakery quite pricey compared Chinese bakeries think theyre trying follow trend Bake Codes high end bakery items Located Highway 7 East McCowan left side Congee Queen parking sure difficult find bakery beautiful clean beautifully animal shaped bread bread basket located right store front items 130 except mochi small items However buns large tell one carefully done compared average Chinese buns cheaper mango mochi 1 one ACTUALLY mango pieces thats also knew would fresh mango tasted good Secondly really like condensed milk bun matcha milk bun believe specialty item 130 Although filling inside bun bun large actually baked great temperature topping sort like pineapple buns top except cooked thoroughly thats crack top purchase 6 items tax However prepared expensive buns purchased 6 items total cost 9 come 23 times month Grand Lake Chinese Cuisine Tai Wu decades come early like 10am want wait around seats place lot regular customers Sometimes see space room group people play mahjong addition perks coming early include 1100am specials dim sum weekends think many around anymore still push cart dimsums unless many customers write sheet paper love wrapped rice dishes including sticky rice 种子 糯米饭 also delicious Watch baked pudding custard saigo bottom comes weekends DELICIOUS 虾饺 really traditional though smaller places make huge nowadays fairly content Gyubees Eat came friends birthday made reservations month advance case booked Theyre always super full Walking saw tons people waiting side spots wonderhope made reservation going take time variety menu thats one page fantastic items variety beef sweet potatoes bibimbap cold noodles lettuce lettuce wrap mushrooms aluminum foil container filled delicious butter garlic much meat excellent quality well seasoned kept eating non stop also delicious shrimp squid shrimp shells peeled Dessert creme brulee melona creme brulee comes small tin foil tasted pretty good watery obviously par dessert shops pay bill grab melona popsicle go well Including tips tax 40 person 3999 exact bad great quality meats meat fan enjoy seafood come love red meat please give try Cause first time forever Therell good wings therell sauce first time forever Ill binge eating night long cut first time ever Mr ChiMaek place taking entire Yelp Instagram feed expectations high Yes feel like Mr ChiMaek met expectations Half half start menus pretty cute printed kraft paper last long laminated copies menus changing time elimination plastic would say pretty ecofriendly service pretty good staff checked us asked us able give us really good recommendations Coming two friends ordered two orders wings Half half 34 half original half spicy original well boneless honey butter friend chicken one order sweet potato fries pitcher Asahi Chicken beer Chicken beer three people costed around 40 including tips tax ordering given corn popcorn radish sides dishes really small though looking nonfried veggies place personally recommended half half chicken particularly appealing tasted like regular fried chicken spicy chicken spicy sauce poured However ended impressing smoothness chicken inside Instead dry rough chicken actually really juicy really liked though honey butter powdered boneless chicken friend thought tasted little sweet LOVED thought powder extremely clever idea chicken pieces bite sized Overall price Canada fair still relatively expensive compared places newer creative way eat chicken wish smaller portion sizes available even decided come alone would good option without hurting wallet much Woah revolving door place fancy OMG decorations look amazing bonus points food Im sorry really work Chinese people Mandarin literally made Chinese food Westernized worth paying 30 eat food cook better home less 10 mean variety good awesome like Westernized Chinese food Typical AYCE food quantity quality Im kind surprised low ratings thought okay place eat first time first opened tons people waiting seats would say system came first great one host seemed remember first one worked Le Viet rather large pho shop cubbies side regular tables middle got special beef rice noodle soup 895 regular 1095 large noodles soggy portions huge soup fairly hot throughout also got Hainan Rice Chicken 1050 chicken really smooth juicy portion rice large tasty ginger really enjoyed also got drip coffee coffee drinker cant tell option actually really enjoy St Louis Wings compared pub chains specialize chicken wings first St Louis Ive one cant really compare St Louis Lets start wings Tuesday half price wings shucks came Tuesday Monday 1599 15 boneless wings fries 20oz beer wings pretty good tender juicy great flavours choose favourite honey garlic still fries swear speciality DILL PICKLE SAUCE mmmmm usually enjoy dill pickle GOOD Usually think service pretty good went yesterday pretty busy took nearly half hour process four bills VISA machine Someone told Izakaya Ju related Guu Izakaya way Well nevertheless decided try Izakaya Ju see like located small little area behind Shiso Tree Café JapTown Woodbine Steeles Parking space little tight sometimes though Ive never trouble finding parking space want avoid possibility hard find seats go earlier lunch dinner Entering Izakaya Ju small restaurant limited amount seats Nevertheless able get seats without waiting Like name states izakaya little servings food served favourite dishes Takoyaki balls sashimi lunch unagi prices fair priced takoyaki balls 5 sashimi lunch 17 large plate compared rest small selections dollars warn bill add idea order sashimi fresh loved salmon takoyaki balls delicious two small chewy pieces octopus would definitely come area Pickle Barrel one restaurants really need Yelp one chain restaurants great family dinners one safer options go average priced American meal Located right inside Markville Mall right beside Winners Shoe Company Pickle Barrel great going shopping Markville Mall want grab quick bite like design Pickle Barrel gives comfortable space want comfortable space patio want eat outside summers open area thats looking Coming store hostesses hosts front serve right away server let us take time choose wanted friend went bowls friend went Kung Pow Kung Pao got shrimp beef individually noodles mediocre spaghetti fetticini pasta mixed soya sauce Asian style think 1499 worth dish probably Chinese restaurants much cheaper shrimp really large delicious 56 large shrimps something see Chinese restaurants noodles saucey beef option hand rather juicy sauce think would go back waffles pancakes next time favourite Shanghai restaurant decent price family based restaurant wife makes mantou bread many dumplings sticky rice wrap rolls husband dishes service might little slow really worth really cheap lunch dinner combos low 56 dumplings dish quality food delicious xiao long bao hot soup inside sticky rice rolls often large enough portions divided 4 pieces also recommend crispy duck Coming thirty fourty times always see tables order crispy duck surrounded handmade mantou DELICIOUS Parking horrible though especially weekdays need come 6pm guarantee parking spot plaza Costco never huge warehouse sells almost item think bulk usually discounted price regular price though offense Costco sometimes get way better deals supermarkets outside smaller quantity Costco family also cant eat much Costco usually sells really keep much freezer usually useless us get membership pharmacy really good though take around hour weekends get prescriptions Im pretty happy visited Costco cash card visit purchase items usually get man bugging us extensively get Costco membership card Yes get job get frustrating want pay leave place SUPER AFFORDABLE portions quite large Coming Hai Tang Cafe bakery dine Chinese meal option come one seat find seat addition order straight counter busy always come larger group people one person sit tables person orders Please wait drink counter bring meals table got one day breakfasts go beef satay noodle soup 479 Although quality food anything special noodles actually little soggy price food good get love Walmart long lineup parking never full things sale usually get Also seems much cleaner probably isolated location one larger centers ones Markham basically isolated Walmart Supercenter store close Boxgrove plaza ninth line ever border East side markham Walmart things sell similar rest prices low always opinion one better locations Green Grotto appreciated openconcept design long table middle store space sides booth areas design made shop look Although plaza appears quite old theres always spaces parking come bubble tea night store packed theres always space come unlike Green Grottos gave us bucket popcorn right sat service easy fast shop always full made drinks right away ordered Fast service comfortable environment always something really appreciate restaurants tried condensed milk tea 599 large 20oz loved added Tohato caramel puffs top actually snack really enjoy eating thought incorporating drink really made reminisce times kid hated drinking milk always added sweet chips like Tohato endure drinking came Saturday night friends 900pm Walking shop could smell faint durian smell durian desserts decided get number 111 menu matcha green tea ice cream jelly mochi mango red bean delicious combo extremely large roughly 650 Unfortunately space tight waitress kindly asked us 11pm leave table booked another customer Would come bad loved going kid actually coming every weekend two years place around decade always love xiao long bao rice wrapped around fried fritter xiao long bao made nicely hole top ready suck soup bite soup slight scent pork smell everyone enjoy say cheapest place shaghai food dishes extremley large guess want something new could try SONOYA Japanese Ramen place located First Markham Place closer Mall Entrance parking always rather difficult get plaza find spot literally get choose almost 50 restaurants Walking seated right away offered nice hot tea right away well ordered Pork Katsu Tonkotsu Ramen around 1011 waitress tried explain us choice pork katsu good one theyre promotion right dollars dish meat rice noodles dish dumplings decide take picture upload instagram facebook neither us data really wanted katsu anyways really liked katsu sauce think chicken katsu fried right think exceptionally good ramen hand slightly disappointing thought soup little plain noodles chewy enough quite bit options restaurant might come back give items menu try PACIFIC MALL BECOME used place resembled Hong Kong selling products Hong Kongs Fa Yuen Street bootleg DVDs HUGE variety things sticky picture stores see many curry fish balls sale lot stationary stores Although famous stores still ones mainly middle others like junk food stores Taipan Bank East China rest changed phone cases nail salons overpriced bubbletea even taste good WHYYYYY upstairs portion still remains though Im pretty glad guess walk Market Village still PMALL feel COLD NOODLES SLURRRRPPPPP would know Korean place good KNOW Korean place good get thirty Koreans lining cold noodles weekday night came Thursday night WOW place packed squished little less sardines waiting area Cho Sun Ok come make sure walk straight cash register yes straight right side get number staff call number Korean English sit booth careful pull open boards right beside else playing peekaboo guests sitting opposite side Yes embarrassing Thursday night waited twenty minutes half hour FINALLY got seat us ordered Cold Noodle Dish got Mool Nangmeyon 1095 friend got Bibim Nangmeyon side dishes radish kimchi heard order items greater selection side dishes dishes LARGE Id say size like large bowl pho put radishes largest piece looks like radish actually pear Mool Nangmeyon spicy friend spicy eater bursting flames especially towards end Definitely watch spicy eater broth like slush nice cold waitress brings cold noodles cart cut quadrants right front Super pretty layout half egg friend enjoyed spicy food ordered Bibim Nanmeyon super spicy noodles cold get broth Verdict Come hot summer day expect wait line Came regular workday visit old coworkers lunch hour lunch break walked thankfully many guests went extremely busy However got little busy Im seriously wondering hour enough time come lunch head back office ordered curry katsu 850 lunch menu including tax 961 salad miso soup came first though came little later usual even finished appetizers yet dish ordered came curry katsu spicy used Japanese curry different Chinese Indian curry dish fairly large portion able finish many people think one portion size enough lunch katsu crunchy hoped maybe try serve separately next time curry make chicken katsu soggy Nevertheless food okay would come back try dishes FreshCo opened years back replacing Sobeys though company FreshCo sells cheaper products Sobeys spot decade beginning neighbourhood build However probably price enough people came grocery store Parking never problem mall lot spots Walking FreshCo definitely dull Sobeys lights dim white lights amount fresh green produce seem reduced though tried pick groceries veggies great quality veggies liked separated veggies section fresh meat fish area notice big bakery section however selection baked goods limited rest supermarket filled dried products snacks pasta medicine toiletries etc heard place always PACKEDDD got lucky able get seats within 15 minutes came 5 minutes later would waited good 30 minutes Ramen definitely eat lot grew bowl soup based noodles everyday basically ate 5000 bowls soup based noodles literally almost every supermarket brand dad loves soup based noodles practically coffee Um 10 ramen definitely expected lot feel like worth noodles feel like taste like frozen brand buy supermarket soup base though felt like Sansotei added lot sesame oil MSG really got praise smooth egg though something close since went Tokyo sauna eggs course different Sansoteis eggs quite smooth noodle portion pretty small 10 would pay 6 10 Heard fried chicken seaweed salad appetizers well desserts like noodles go supermarket frozen section get pack add seasame oil MSG itll basically taste Came Pho 72 regular weekday lunch plaza Sunny Foodmart way grab groceries might well stop Pho 72 bowl pho Theres parking outside rarely ever completely full might park little back Pho 72 small store front walk inside actually quite long impressive size tables sides offering comfortable seating menus already set tables seated immediately restaurant write number quantity order standard pho restaurants Service really fast food came fairly fast Pho Beef noodle soups came two sizes medium 875 large 985 whichever bowl ordered decided get medium standard medium compared pho places might even compared small places pho okay opinion broth hot enough beef little rough lean instead fatty ordered one broken rice dishes roughly 10 plate got broken rice chicken fresh noncooked egg top broken rice tasted really good chicken really tasty would thought one better dishes exception egg reason egg tasted little funny mom thought egg little old funny odour Maybe cooked egg option would ideal get another time spring rolls standard amazed option 4 spring rolls though also made sense spring rolls smaller typical Vietnamese pho places Overall food okay really enjoy pho places hot broth good meat egg also smelt little odd us maybe particular time went okay experience Came regular weekday night walked greeted right away environment quite spacious booths sat gave us bit privacy restaurants able give asked wanted eat AYCE la carte menu first considering AYCE realizing evening AYCE price ridiculous 36 quoted one servers decided going decided order sashimi maki combo bento box coming total roughly 50 including tips tax sushi quality mediocre rice little loose opinion really liked served sashimi maki separately bento box little unique serving fried wonton part side dishes rather creative compared places gives salad japchae noodles etc comes wings Star Wings unfortunately one top choices Coming weekday night packed Even though packed took waitresses 20 minutes served asked us many people party little disappointing even acknowledged later wings decent got Honey Garlic usual pound wings 11 plus tax wings came 5 sticks celerycarrots also little disappointing felt like Id rather small amount celery carrots served quantity around 10 would better served great got sit waitress really accommodating splitting bill large party guests Baskin Robbins tucked inside small plaza McCowan Highway 7 relatively small shop used come lot options come often chairs tables sit enjoy ice cream though feel like need renovation keep trends plenty options cakes variety ice cream flavours come ramen curry chicken special 490 including tax pretty affordable tasty meal came seaweed soup although person told wait five minutes roughly ten minute wait think cook perhaps opposed reheating reheated pretty hot ton curry sauce spicy curry sauce reminds Japanese packets lot carrot slices broccoli would appreciate amount sauce enough rice chicken pretty decent think barely found one potato dish Overall food okay top notch quality 490 decent large boxed lunch average Asian grocery store East Markham neighbourhood Opened six years ago Sunny Food Mart wide variety Asian cultural foods fresh produce halal meat isolated fish area bakery ready go eats snacks spices etc variety Asian foods love purchasing dried fruits 299 pound dried cranberries 2 cheaper bulk barn next door produce fairly reasonably priced expensive TT supermarkets even cheaper Foody Mart Theres plenty parking plaza theres two doors entrances exits winter freezing cold parked closer one side Pho Quinn newer restaurants plaza replaced spot Harveys used Walking restaurant greeted quickly seated almost right away tables seats close together table beside 25 centimeters away waiters speak English believe one took order speaks Chinese Vietnamese restaurant always start trying pho Pho Quinn serves pho size small large small 750 large 950 got Chefs Special Beef Rice Noodle Soup size large also got grilled chicken rice 795 wait long pho reading reviews Vietnamese food temperature soup fresh noodles makes HUGE difference deciding good place Unfortunately soup hot expected noodles fresh ones tasted like packaged grilled chicken rice anything special either think price slightly expensive mediocre place average sized portions Lunch time special weekends large plate food 595 695 spring roll pop believe weekdys dollar cheaper large plate food served tasted fairly well chicken pad Thai huge plate 595 lot chicken huge plate enough bring home leftovers next day came birthday actually really enjoyed Many people might compared place Captains Boil cause really similar restaurants theres one Good Catch Boil House theres several franchises Captains Boil point idea actually seems like copied Captains Boils concept tweaked make restaurant decor place really nice though certainly unique style add nice touch DownTown Markham ordered clams 1395 per pound choose Cajun Szechuan Curry Garlic Butter Good Catch Blend Lemon Pepper course know well enough go flavour PROBABLY garlic butter well selected choice garlic taste gross rather adds delicious clams addition got soft shelled crab fried rice 1395 came giant pyramid slightly spicy ask staff member possibly make less spicy spice eater also decent priced large Next got oyster sliders one favourite dish oysters fried reasonable priced 1395 Lastly ordered softshelled crab basket 1095 came one whole soft shelled crab little bit fries Absolutely delicious meal price meal considered cheap well Small Chinese restaurant Markham East area parking maybe 7 spots Walking restaurant old cha chan tang styled restaurant seats super spacious especially winter huge jackets got baked Portuguese sauce chicken rice beef ho fun wait long meals came REALLY appreciated baked Portuguese sauce chicken rice came two different dishes One plate scoop rice Portuguese chicken many cha chan tangs visit rice embedded Portuguese sauce makes tasty get lot less quantity meal beef ho fun oily used fresh ho fun something see often many stores tasted delicious hot fresh meals came soup choice hot drink total meal little less 15 Super affordable local neighbourhood Cute patisserie location signature mont blanc chestnut exterior tart base cream inside came Saturday extremely busy lot desserts yet staff accomodating tried lemon tart mont blanc apple danish none failed dissapoint also served cute wooden board added atmosphere SUPER local restaurant East Markham looks though existed Markhams urbanization side Markham appears regulars come food Walking restaurant decor like diner style states seat wherever want part confusing walk get food someone comes bring us menu Turns sit anywhere someone comes serve us came dinner though believe lunch breakfast deals may bit better Halibut House ran Asian people something unusual Fish Chips Place makes want learn nevertheless got try menu extravagant one page back front menu Fish Chips main sellers able choose type fish cod haddock price halibut options 10 per meal dinner menu tried 2 Orders Fish 1 Chips 2295 came two pieces halibut fish lots fries coleslaw Im never sure fish Im eating cut definitely piece fish filet places try scam fish moderately soft though EXTREMELY special Im comparing BEST place Fish Chips Ive ever Gibraltar located right next ocean Secondly got Chicken Souvlaki pita greek salad 1295 garden salad impressive comprise large pieces lettuce tomatoes onions cut yes forget cheese thats sprinkled top onions cut really large appreciate though sauce left side really thoughtful case people want much sauce Chicken Souvlaki mediocre nothing extremely special Whenever drive see 395 breakfast deal maybe Ill come check next time love Love LOVE LOVEEEEE Pa Pa Changs idea existed even though Yelp highly ranked place reason still never super strong urge try Im SUPER happy delicious affordable izakaya styled dishes place lunch Papa Changs Fancy Schmancy design looks like small family owned business walk waiters tend speak Cantonese Photographs spread areas walls newspaper articles Pa Pa Changs Taiwan pretty impressive impressivedisappointing piece decoration time three pottery glazed LAO FU ZIS ledge mean comeon height Food reviews really enjoyed every single dish offered One favourites chopped meat rice egg egg extra 1 though small portion delicious rice cooked chewy texture overly moist OH MAN meat pretty close perfection think snacks really delicious Another item tried Panko Fish Stick 3 pieces 449 drizzled slightly wasabi wasabi phobias worry wasabi really light even someone like cough turn red immediately ever come Monday dissapointed today Yes guessed Pa Pa Changs CLOSED Monday NNNNNNOOOOOOOOOO hey restaurant employees need break able produce delicious food customers came lunch experience eat come lunch Coming 1200pm lot people lunch 1200pm 200pm many people came supposed many people know eat lunch environment great mention air conditioning FREEZING right friend tea nice hot make cold AC food fair price 1099 HUGE portion Chicken Katsu bento box included salad miso soup shrimp vegetable tempura 2 pieces total 4 scoop rice 15 pieces chicken katsu cut strips cooked vegetables zucchinis places underneath 3 large pieces california roll nicely cut orange chicken katsu crispy tender inside wish option sauce dip chicken make little less dry friend ordered Kaka maki rolls second one menu included california rolls spicy salmon large pieces 799 tasted good AYCE quality la carte lunch menu expected little example tighter rolled maki rice packed closely together maki falling apart Im eating Overall kaka good experience service atmosphere great would probably come back try AYCE becuase hear great things came dessert weekday night walk style Moji interesting mix wood plastic chairs tables walls different styles wall Theres exactly one set design multiple combined cut napkins side get bill come metal buckets Pretty interesting order given sheet paper write Letter Number order Drinks 2 meal 380 4 came try ice cream Make sure ask Special looks like Taro friend came said Special blueberry ordered D4 twist taro Matcha ice cream tapioca popping pearls located underneath friend ordered D1 ice cream float came marble sodas ice cream average though prefer menchies yogurtys price order double cost Came Friday freezing night friend came back year working school different continents around world wanted grab food seated immediately plenty spots decided spend little time speaking deciding get share etc discussed expensive food generally every place increased meal prices needed pay around 7 pho meal 10 tables still half empty waitress came us rushed us order meal stated table us already made order said taking forever make mind reluctantly ordered curry chicken rice bowl spicy pho friends order asked vermicelli wrap food okay curry decent pho spicy top would still give three star vermicelli wrap came ingredients rice paper asked waitress started stating like 8 sheets rice paper additional 8 hope someone clarify case whole EXTRA 8 still talked throughout meal thankfully left time asked bill food alright decent definitely grew lot expensive kind service think coming back got confused friends telling place English name nothing like Chinese name 金牛苑 thought would call Golden BullCow restaurant something Anyways entering saw two levels one bottom wide open area top Im pretty sure top decoration though seen anyone Ive never really wait long seats place around AGES though wide variety pho ingredients choose different sizes pho taste like fresh pho soup base hot mediocre get Hainanese chicken 海南雞飯 sometimes mediocre well hot chicken sort smooth SUPER smooth really liked curry crab though guess years ago curry crab less common Come normal viet place average scale terms price food One closest congee shops find Toronto quality Hong Kong congee stores place usually huge line go weekends breakfast around 930am 10am till 1pm 130pm usually avoid massive lineups coming super early super late came around 1115am lineup well staff amazing basically repeat order confirm looking numbers wrote Also food comes super fast food item expensive portion sizes small dishes like rice wrapped leafs zhong make stuffed personal favourites cheoung fun sweet fried dough chow mein Remember add awesome sauces table dark coloured one bottle sweet hoisin sauce light coloured one looks like watered peanut butter sesame paste called jeung Moms Kitchen located Langham plaza south Highway 7 Kennedy Parking spots near restaurant limited due many restaurants chiropractic practice next door underground parking go double doors definitely prevent cold seeping restaurant super large place prices rather inexpensive Korean place 799 meal banchan consisted seaweed salad potatoes actually hot sweet tasted like soup potatoes kimchi bean sprouts radish slices waitress nice speaks Cantonese well English decided try seafood pancake pork bone soup items mediocre though Id like say seafood pancake consisted quite items including shrimp chives scallop base made egg sweet potato flour pork bone soup opinion could little spicier could cooked flavour together 10 person Great dinner weekday night 35 stars Alley Walking first time service exceptional bubble tea place walked server asked first time introduced bubble teas let us samples sniffs popular bubble teas Royal 9 tea milk tea blueberry twist smelt lovely However really enjoyed smell sweet dew tea option fresh milk thought super interesting Im big fresh milk drinker combine make delicious bubble teas little expensive regular size 5 tapioca jelly extra 050 got rainbow jelly quite large scoop jelly 050 worth total 622 one regular sized bubble tea drink seemed little overpriced though taste average think Im going stick locations bubble tea tons TT supermarkets TT different others GTA Reason UNDERGROUND parking petrified squishy spooky underground parking spaces might delighted find although driving underground parking might bit squishy parking spaces fair size far spooky underground parking Thats theres ALWAYS people walking underground find rare one moving underground parking lot accommodate underground parking automated cart escalators allows bring groceries car shopping TT nice clean definitely convenient might live residential building sections grocery store well spaced wide selection promotional items fresh produce front followed bakery cooked foods meat fish frozen foods following TT also beauty store section want pick products skin face aisles theres wide selection instant foods snacks filling cravings washroom right cash registers Everything fairly easy find TT clean raining snowing lot outside really enjoy coming escape needing walk outside underground space enjoy shopping Came 930am today Good Friday waited 15 minutes seats bad seats fairly spacious three people given six person table newspaper came along ordered tea Regular price considered holiday 338 378 L 418 SP 438 ordered total seven dishes Chiu chow styled dumpling chives shrimp dumpling tasted average average size Chiu chow dumpling usually massive anyways liked solid filling like places would try put less ingredients filling chicken pie good since lot dim sum places offer anything especially new also got shrimp rice roll standard rice roll though quite smooth really recommend green onion lap cheung pancake delicious freshly made addition honey braised 牛仔骨 quite tasty meat seemed little overcooked counted special dish expensive compared many places charge 7 really like radish cake lot flour lot radish taste crispy enough personal liking place authentic English style made feel though literally tea party many English ladies come discussion waiter extremely polite offerring selection teas choose addition know much tierd high tea thought could order day Fortunately helped us arrange able try day tiered high tea filled fulfilling sandwiches bottom tier fig sauce jam top tier many freshly baked cookies taste extremely delicious definitely authentic person given pot tea selection high tea combo unique well Deciding give 600th review allstar local bakery Extremely LOCAL Markham bakery long time Parking located back might best turn street immediately East Markham road Dairy Queen Plaza goto breakfast place many years great quality foods local taste TT kind like serve bakery find table bring dishes counter done kind place counter order one many dishes quiches local favourite around 4 large portion pie hot foods like pancakes sausages eggs etc would like cookies breads scones also options design inside older sort feeling also makes TT bakery special Many regular locals come back daytime food would personally recommend quiche something like long time theyre commonly sold people streets Hong Kong super traditional candy dragon beard something get seebuy often anymore Prices still 650 small box 8 pieces 750 large box 10 pieces addition traditional items sale small peanut treats crispy peanut coconut filling wrapped skin 3 something slightly larger size macaron really fresh delicious one best Ive made right dragon beard thin definitely tastes soft different texture cotton candy enough peanut inside dragon beard candy opinion still delicious Theyre open every Saturday Sunday open weekend morning afternoon Please go try theres many chefs know make anymore hearing positive comments word mouth decided come Chinese New Years Dinner cant believe many people came Let start PACKED Like Jampacked barely walk plate food many people everywhere Chinese Buffet person regularly eats Chinese food one best buffet locations usually Chinese buffets taste anything like Chinese food Thankfully making reservation 23 weeks advance granted seat 15 minutes actual time reservation decor place beautiful Im actually quite impressed much thought put decor allowing privacy per table instead cramming together seats people actual area food rather small dishes small theres quite large variety selection Theres sashimi sushi fresh fried oysters robotic arm making noodles teppanyaki steak filets hand made pork jerky dim sum PEKING DUCK typical Chinese dishes Chinese desserts fresh oyster rather large 2 time bottom portion sliced making difficult eat sashimi pieces little large able obtain many pieces sashimi time limit take prevent wasting food One best items opinion peking duck take four time theres usually line items replenished rather quickly admire amount times staff come kitchen ensure food fresh K F Kitchen small little store located First Markham Place Walking smelt huge stench stinky tofu seemed disappear time past think lot people would come store seem extremely nicely decorated surprised people waiting seats 645pm Sunday English menus also available ordered Set dinner 2699 included FreeRange Chicken Soya Wine Sweet Sour Pork Beef Mushrooms Green Onions Chinese Greens Minced Garlic Since sold FreeRange Chicken Soya Wine allowed select item wanted menu 899 decided get chicken steam lotus leaf bowl white rice costs 180 quality rice good size rather large Although dishes rather small dishes really hot thought extremely delicious Nice hot dishes makes dishes taste extra delicious Sweet Sour Pork huge pieces pork beef mushroom slightly salty eating white rice perfect greens good quality garlic clearly made smell really good set meal come soup came delicious dessert 豆腐花 Soft tofu syrup much expensive Markham came times layout similar locations Parking easy find driving horrific people push shopping carts mini crossing area without looking swear takes forever car drive Theres also poles covering pedestrians harder cars see rated one star specials shown flyers EVERYTHING ELSE literally everything expenisve go another tt day overpriced Fruits 15 times 3 times prices stores Also check purchase bag thought know locations give bag MABU GENERATION Dundunnn dunnnnnnnn picture something coming pedestal movie shining light came lunch weekday around 100pm man place pretty packed lucky enough come anyone waiting seats still empty tables else last time wanted try place dinner waitress said needed wait hour decor definitely Taiwanese style beautiful antique posters famous Taiwanese female artistes large wall painting lights dim seats quite low large comfy seated right away waitress asked us came said nicely explained worked MABU leave piece paper write want eat theres option box want drink appetizer dessert waitress served us interesting cups hold waterit handle really much lunch special 1099 menu says comes appetizer drink green milk green milk bubble tea hotcold dessert Im sure old deal Im reading wrong think get one three choices decided try Taiwanese Style BBQ sausage minced pork rice Taiwanese Style Stewed Beef Noodle Soup bowl Taiwanese Style BBQ sausage minced pork rice mediocre think Papa Changs definitely little better really quite enjoyed stewed beef noodle soup natural rich flavour food came little slower usual could tell waiters waitresses worked 2 waitresses 1 waiter walking bar area making drinks etc one cash reading menu think would come back hotpot looks big enough share two people 1599 pot Dairy Queen rather old shabby buts located next Main Street Markham matches scene Dairy Queen linked Orange Julius sells savoury foods inside well used enjoy getting cakes last time came friends ordered chocolate dipped soft serve cone five minutes eating shell cracked ice cream began dripping sidewalk like massive waterfall eat ice cream pretty fast first time ever happened experience worth laugh also preventing wanting visit poke guys located newly built Downtown Markham areas never poke literally deconstructed sushi fish avocado seaweed pieces kale rice sauce Going poke guys first time sashimi pieces ginormous Typically really love chunky sashimi pieces ones day big barely fit mouth would appreciated slightly smaller sauce additional toppings fairly standard prices fairly reasonable comparison poke places roughly 10 bowl regular bowl pretty big definitely worth money organized system arranging everything ordering food front one person completes entire order prevent things getting mixed Seatingwise theres many seats offered space heads gets busy though might sit outside pretty great weather nice Location fantastic downtown Markham parking however little frustrating parked condo area visitors park confirmed later attendant supposed park Thats completely fine mind walking thing getting back parking garage frustrating believe closed stairs outside get garage literally run car driving parking able retrieve car Trying Next Door first time felt unique experience variety good food options great option people looking different options brunch lunch dinner late night drinks Next Door unique hip decorations enter giving vybe neighbourhood bar yuppies also feels classy move away front entrance Although parking one side building walk side order enter restaurant also gives opportunity walk around pretty structure Mainstreet Markham dinner menu 3pm 10pm Note free bread included meal little uncommon Western restaurants However would like bread order 5 tried Tortellini 14 description Curried sweet potato dumpling hen woods mushrooms sun dried cherry tomatoes tempura green beans spinach puree extremely accurate presentation amazing tortellini surrounded tempura green beans delicious large plump cherry tomatoes However rather small dish less 10 pieces twobite sized tortellini sauce DELICIOUS know made spinach puree honestly magnificent sauce dish also tried NextDoor Burger 18 description 6oz smoked mozzarella bacon caramelized onions arugula kewpie mayo brioche bun already makes know delicious dish biting regular burger chef cooks really took time make components burger compiled create delicious meal caramelized onions really added onto taste NextDoor Burger none caramelized onions burnt may also one largest mains definitely get worth price wish Next Door served bread kind butter ones olive oil Please delicious meal cant wait try brunch hard believe Foody Mart almost opened decade Literally seemed though yesterday everyone rushing Foody Mart Bamburgh Circle realized need open another Foody Mart TT would say Foody Mart one revolutionary markets Markham North Scarborough regions Foody Mart sells wide variety imported snacks bright lights somewhat cleanish feeling floor makes want shop inside amount people came monstrous McDonalds neighbouring stores block parking spots customers use Foody driven lot business towards mall opinion provides lot options terms food choices food court ready available meals sushi bubble tea baked bread fish meat fruit veggie departments Mini shop located upstairs Langham Square opened later night wants affordable dessert Outside shop saw tons signs different food snacks sold shop Egg waffles affordable side 2 plain waffles generally 250 3 special waffles eg ginger waffles chocolate chip waffles green tea waffles etc also options waffles ice cream Pop House also sells tons random products including old toys notebooks utensils forks mysterious items also ketchup mustard relish shelves people use two seats small table small amount people sit packaging snacks reminds HK bags cups generic cups bags premade designs small green sticker pop house stuck onto packaging got green tea egg waffles 3 asked wait 510 minutes think place small business people show Im sure would ready egg waffle good comparison Tung Tung ones thought green tea actually slightly bitter egg waffles cooked nicely though WOHOO Indian food near house review based 39 Spices dinner menu Located right main street Markham 39 spices located fairly close Highway 7 right side driving north Markham Road Entering ambience somewhat fancy people come wearing nicer clothes kick restaurant dressing bit occasion ordered Butter Chicken 1495 another one lamb curry dishes also around price addition got mix bread basket 995 naan paratha rotis included bread basket delicious meals really enjoyed hot naan paratha 39 spices spice level right spicy ask mild lot people know big fan Nak actually find decent place eat Nak around long time Ive coming quite times years even movie theatre still located First Markham Place come plenty seats big restaurant never see place completely empty large tables good large groups eat option well order dine option always go think WIDE selection banchan come always delicious great Whenever come always get pork bone soup comes stone pot metal bowl rice ask tasty Korean restaurant might best GTA area definitely okay place visit deciding want eat never big fan escape rooms Omescape definitely fun one visit Please reserve room early website wwwomescapeca fairly hard get spot scene rooms give 60 minutes escape range 35 difficulty 55 difficulty different groups people required rooms well 3 10 players Currently prices 2820 per person 3 discount post Facebook definitely pretty pricey add 5 top get stay unlimited boardgame playing free yogurtsmall sized premium drink Omescape Presotea located right inside definitely nice place get bubbletea afterwards well definitely spend entire day question would multiple rooms unlock omescape cute story line someone whos petrified mysteries unknown things got kingdom cats super duper cute also provide walkie talkie help answer questions ask hints able go wall fame actually smells bamboo shoots walked door instead stinky tofu scent everyone talking yelp review However get used smell especially food comes got homemade beef noodle soup large select small large well homemade dumplings homemade dumplings take little longer warned given time frame one servers ordered homemade beef noodle soup came warm soup tender beef pieces large bowl noodles noodles standard opinion whole decent price value food bowl signature bowl opinion everyone seems order dumplings actually favourite part meal 12 large dumplings delicious hot soup inside every single one skin dumpling little thicker usually Im fan thicker skinned dumplings one definitely exception liked dumplings much next time come back think Im going order dumplings plus another dish 2 people enough food perfect cold day Please note pay check Yelp receive 10 meal Monday Sunday 830am 1130am L 250 SP 288 Monday Sunday 1130am 400pm L 288 SP 328 Holiday 250 288 L 368 SP 468 Walking felt like nicely decorated one word describe yellow lighting table cloths chairs covered yellow thing red carpet Taking look menu many selections prices mediocre dimsum place really enjoyed portuguese sauce chicken pie pineapple bun crust filled Chinese styled Portuguese sauce little hotter though shell tart tasted like nom flaky egg tart shells price 298 three pies came rest items rice wrapped fried dough rice wrapped beef roll INCREDIBLY small dishes felt like made whole roll gave us half portion another table half literally 6 pieces rice wrap beef roll 9 rice wrap fritter roll see pictures small items either taste mediocre nothing special yelpers point probably three star five really like waiters service end handed us bill collected smiled said change right EXCUSEME First thing think itd best say Let come right back change let customer decide much want tip Secondly 25 tip range tips really vary based restaurant one personally would tip 10 ask need change bothers well putting uncomfortable position brutally honest usually tip environment waiter phrases things eg returning change Lastly literally received paper 5 bill change recently bakery decided use server said change right comes back us literally without polite gesture said fake straight cause black scratches Note went bank verify deposit bank took FAKE Food mediocre Portuguese sauce chicken pie delicious service horrible Green grotto started small shop grown bubble tea chain shop Green Grotto little different bubble tea locations serve popcorn YAYY always great little snack side eating popcorn addition always ask seconds popcorn Sometimes popcorn little stale usually fresh batches buttery popcorn drinks mediocre though love Yakult selection Similar bubble tea shops 4 5 standard bubble tea tapioca size upgrade costs money service Green Grotto little slow lot times waiterwaitresses busy talking acknowledge requests customers many times walk cashier ask want Came times Chatime plaza Woodbine 16th Theres adequate amount parking inside plaza away chaos TT bubble tea 480 plus tax regular milk tea tapioca think standard price multiple options choose two common level sugar ice want drink like ask ice chatime deduct amount drink surprised fill water certainly taste like Chatime partnered Bakecode delicious fresh cakes macarons tarts order also extremely expensive creative buns eat quite fancy want something little typical TT literally right across plaza Im always peak hours Ive never experienced extended wait times folks saying reviews Usually Im first second one line drinks usually always made five minutes tapioca pearls also okay usually cooked decently visit Im much sitter bubble tea shop anymore either usually grabbed go mind seats stores Chatime must admit much fewer seats Chatimes Chatime different way purple collab Bake Code place decorated like name says like grotto cave came today dad bowl pho However cant finish two bowls got large assorted meat balls seaweed pho 8 leek dumplings 425 wanted place order lady came speaks Mandarin told us posted sign said needed order 2 bowls noodles pretty dissapointed order basically forced order two bowls pho got two small bowls pho one 7 650 Thats literally 125 order earlier read sign Chinese technically says needed order per personwhich literally wanted walk restaurant cause cant eat lot ended finishing half bowl one pho want take home container pho turn soggy Also still another place go rare shining sun car today autumn fresh waste food though delicious soup HOT remained hot whole time ate hard find places like soup hot Yes MSG soupbase GOOD beefballs fishballs squidballs good food honestly Id probably give 5 star However Im sure would come literally needed get one bowl pho per person really recommend businesses forcing customers get large meal mean understand would okay person get something originally force customers get whole main people cant eat much like plan come back cause waste food 35 stars rounded came pretty good time Came early dinner made time 230 500pm special sashimi orders even bit sashimi 10 everything else 20 addition pay cash 5 10 still great deal environment beautiful many cubicles guests enjoy bit privacy instead sitting close people know eat really check meals included got one miso soup two complementary salads think rushing make time 500pm special rushed order Initially wanted sushi ordered Chief Special DInner Set 2 people fan cooked food includes teriyaki salmon head spicy japchae noodles chicken broccoli mushrooms 5 pieces raw salmon two include salmon skin clump rice lobster onion shrimp terriyaki 3 pieces 28 raw salmon 10 portion MASSIVE thought food average superb terrible either portion amount paying worth dish got soft shelled crab udon 18 TWO soft shelled crabs udon Holy moly usually one soft shelled crabs usually cost close 8 places get really like dunked inside soup suggest served separate plate crabs BIG literally bigger hand literally tasted cholesterol part pretty full eating one udon okay got bill waiter really nice gave us two large pieces mint gum well Going come back try sushi hopefully catching time special think theyre good used still really love pork cutlet bun 猪扒包。The food comes relatively fast fairly large portions Comimg several times noticed waiter different terms level politeness One extremely well mannered another waiter extremely rude Cute Japanese restaurant tucked NoFrills plaza Highway 7 west Markham Road came pretty early seats right away waiters really nice fast paced point felt little rushed came eat suppose Sunday night quite guests came completely packed yet Inside Osaka mini Japanese styled rooms people enjoy dinner family love Japanese styled rooms restaurants ordered Chirashi Sushi 1895 Salmon Lover 1295 Black Dragon 1595 order came decent speed super fast super slow also served one miso soup order think chirashi 2 complimentary salads chirashi sushi comprised huge portion rice terriyaki sauce spread half plate 3 pieces salmon 6 white tunas 3 white ones 3 clearish ones 3 red tunas 1 piece crab meat 1 piece shrimp 1 piece octopus 1 piece red 1 piece white surf clam sashimi really fresh thought way much rice also would preferred rice served bowl salmon lover literally sounded like piece salmon top salmon filled maki roll HUGE roll TON salmon inside maki roll swear put like 10 pieces salmon inside eight pieces maki sushi definitely worth 1295 black dragon roll liked lot well unagi slice laid top terriyaki sauce lot filling including avocado cucumbers crab meat etc large roll well think price salmon might worth time unagi quite expensive sliced orange cut cutest way served dessert Come give Osaka try Two words PINEAPPLE BUNS first Lucullus Bakery opened Toronto similar environment Chinese bakeries investment new European styled design really upscaled typical Chinese Bakery scene interesting fusion mix came one instagram events able try chrysanthemum drinks honey delicious taste FRESH OVEN PINEAPPLE BUNS definitely signature crust thin soft bun melts mouth definitely come back customer Im around area movies took come food outlook restaurant market towards Sichuan styled food made impression food overall really spicy MISCONCEPTION Red serves Shanghai styled food many spicy restaurant spacious many large tables beautiful decor inside However wait time table wait time food REALLY long food ordered ipad restaurant waiter waitress prices surprisingly decent expensive portion size fairly large xiaolong bao may appear though rather expensive actually buy one get one free two crates xiaolong bao fair cost got Shanghai noodles peashoots fried rice none super oily well tasted absolutely delicious taste wokstyled dishes really strongly nice hot taste rich flavours Definitely come back lunch try menu items'

Now we apply the TFIDF Vectorizer to extract the features from the text.

In [20]:
start_time = datetime.now()

from sklearn.feature_extraction.text import TfidfVectorizer
review_vectorizer = TfidfVectorizer(tokenizer = WordPunctTokenizer().tokenize, max_features=5000)

user_vectorizer = review_vectorizer
restaurant_vectorizer = review_vectorizer

#userid vectorizer
user_vectors = user_vectorizer.fit_transform(user_review_df['text'])
#Business id vectorizer
restaurant_vectors = restaurant_vectorizer.fit_transform(restaurant_review_df['text'])

time_elapsed = datetime.now() - start_time
print('Time elapsed (hh:mm:ss.ms) {}'.format(time_elapsed))
Time elapsed (hh:mm:ss.ms) 0:00:04.531932
In [21]:
user_vectors.shape
Out[21]:
(11741, 5000)
In [22]:
restaurant_vectors.shape
Out[22]:
(730, 5000)

Latent Factor Collaborative Filtering Optimization

In [24]:
def matrix_factorization(R, P, Q, steps=25, gamma=0.001,lamda=0.02):
    for step in range(steps):
        for i in R.index:
            for j in R.columns:
                if R.loc[i,j]>0:
                    eij=R.loc[i,j]-np.dot(P.loc[i],Q.loc[j])
                    P.loc[i]=P.loc[i]+gamma*(eij*Q.loc[j]-lamda*P.loc[i])
                    Q.loc[j]=Q.loc[j]+gamma*(eij*P.loc[i]-lamda*Q.loc[j])
        e=0
        for i in R.index:
            for j in R.columns:
                if R.loc[i,j]>0:
                    e= e + pow(R.loc[i,j]-np.dot(P.loc[i],Q.loc[j]),2)+lamda*(pow(np.linalg.norm(P.loc[i]),2)+pow(np.linalg.norm(Q.loc[j]),2))
        if e<0.001:
            break
        
    return P,Q
In [26]:
P = pd.DataFrame(user_vectors.toarray(), index=user_review_df.index, columns=user_vectorizer.get_feature_names())
Q = pd.DataFrame(restaurant_vectors.toarray(), index=restaurant_review_df.index, columns=restaurant_vectorizer.get_feature_names())
In [30]:
start_time = datetime.now()
print('Start:',datetime.now())

P, Q = matrix_factorization(rating_matrix, P, Q, steps=25, gamma=0.001,lamda=0.02)

print('Finish:',datetime.now())
time_elapsed = datetime.now() - start_time
print('Time elapsed (hh:mm:ss.ms) {}'.format(time_elapsed))
Start: 2020-07-07 17:49:19.907034
Finish: 2020-07-07 20:07:03.197780
Time elapsed (hh:mm:ss.ms) 2:17:43.318817
In [31]:
Q.head()
Out[31]:
0 05 050 1 10 100 1000 1010 1015 1030 ... yuzu zangi zen zenq zero zucchini
business_id
-0DET7VdEQOJVJ_v6klEug 0.001555 0.001660 0.000931 0.071277 0.115744 0.014894 0.000935 0.015862 0.009688 0.004607 ... 0.007815 0.001303 0.001079 0.001872 0.011507 0.007214 0.000547 0.001874 0.000960 0.026725
-0T0jfPnuBRdpNTXpOQZcA 0.000259 0.000084 0.000039 0.003642 0.007318 0.000468 0.000021 0.000100 0.000133 0.000032 ... 0.000054 0.000036 0.000069 0.000099 0.000442 0.000062 0.000010 0.000121 0.000021 0.000213
-2lSbNMhXKYu7URjEE59qA 0.001725 0.001555 0.000686 0.046438 0.022305 0.002102 0.000278 0.000570 0.001248 0.000096 ... 0.000945 0.000175 0.000962 0.003682 0.001369 0.000570 0.000537 0.002311 0.000255 0.004366
-56TP_w4VG2oNGpauDMOOQ 0.000644 0.000791 0.001886 0.011974 0.079938 0.003077 0.000193 0.000901 0.000506 0.000086 ... 0.000293 -0.000034 0.000676 0.000313 0.000952 0.000238 0.000491 0.001895 0.000162 0.002387
-7EwIdxcRC5McO35DVfeSQ 0.001243 0.000907 0.001100 0.099390 0.097674 0.009888 0.000619 0.001228 0.005275 0.009675 ... 0.009424 0.003067 0.023914 0.003515 0.002685 0.001948 0.000731 0.004528 0.001536 0.010036

5 rows × 5000 columns

In [32]:
Q.iloc[0].sort_values(ascending=False).head(10)
Out[32]:
food        0.617512
sizzling    0.497625
good        0.454170
place       0.451592
rice        0.451122
udon        0.444893
would       0.388463
flaming     0.385449
beef        0.367820
spicy       0.359038
Name: -0DET7VdEQOJVJ_v6klEug, dtype: float64
In [33]:
P.head()
Out[33]:
0 05 050 1 10 100 1000 1010 1015 1030 ... yuzu zangi zen zenq zero zucchini
user_id
--Br-QsbO9ad5GbZxVGxaw 0.001195 0.000454 0.000388 0.011763 0.012121 0.002083 0.000357 0.002156 0.001488 0.000939 ... 0.000726 0.006168 0.001370 0.001436 0.000463 0.000310 0.000028 0.000196 0.000108 0.001040
--BumyUHiO_7YsHurb9Hkw 0.000158 0.000375 0.000461 0.004118 0.005226 0.000507 0.000096 0.000867 0.000406 0.000296 ... 0.000211 0.000034 0.000264 0.000246 0.000217 0.000114 0.000014 0.000353 0.000048 0.000692
--KwxF4LB3dbENQBB98IqQ 0.000075 0.000059 0.000049 0.005268 0.004987 0.000474 0.000026 0.000052 0.000256 0.000540 ... 0.000385 0.000132 0.001029 0.000129 0.000128 0.000104 0.000028 0.000183 0.000056 0.000399
--UOvCH5qEgdNQ8lzR8QYQ 0.000589 0.000382 0.000133 0.006949 0.008404 0.000935 0.000085 0.000142 0.001706 0.001081 ... 0.000146 0.000042 0.001256 0.000310 0.000253 0.000156 0.000316 0.001403 0.000095 0.002505
--YhjyV-ce1nFLYxP49C5A 0.000664 0.001682 0.000809 0.012379 0.057132 0.002383 0.000292 0.001018 0.000721 0.000649 ... 0.000607 0.000190 0.000365 0.000757 0.001525 0.001652 0.000131 0.001010 0.002095 0.007373

5 rows × 5000 columns

In [34]:
P.iloc[0].sort_values(ascending=False).head(10)
Out[34]:
tea        0.396060
soft       0.344446
serve      0.339025
green      0.317502
time       0.289296
wooffle    0.220505
amazing    0.191109
get        0.171636
first      0.171510
cream      0.170438
Name: --Br-QsbO9ad5GbZxVGxaw, dtype: float64

Exporting Model

In [36]:
import pickle
output = open('markham_city_recommendation_model.pkl', 'wb')
pickle.dump(P,output)
pickle.dump(Q,output)
pickle.dump(user_vectorizer,output)
output.close()
In [37]:
output = open('markham_city_recommendation_model_2vectorizer.pkl', 'wb')
pickle.dump(P,output)
pickle.dump(Q,output)
pickle.dump(user_vectorizer,output)
pickle.dump(restaurant_vectorizer,output)
output.close()
In [45]:
words = "i want to have dinner with beautiful views"
test_df= pd.DataFrame([words], columns=['text'])
test_df['text'] = test_df['text'].apply(text_process)
test_vectors = user_vectorizer.transform(test_df['text'])
test_v_df = pd.DataFrame(test_vectors.toarray(), index=test_df.index, columns=user_vectorizer.get_feature_names())

predictItemRating=pd.DataFrame(np.dot(test_v_df.loc[0],Q.T),index=Q.index,columns=['Rating'])
topRecommendations=pd.DataFrame.sort_values(predictItemRating,['Rating'],ascending=[0])[:7]

for i in topRecommendations.index:
    print(restaurant_df[restaurant_df['business_id']==i]['name'].iloc[0])
    print("X") #print(restaurant_df[restaurant_df['business_id']==i]['categories'].iloc[0])
    print(str(restaurant_df[restaurant_df['business_id']==i]['stars'].iloc[0])+ ' '+str(restaurant_df[restaurant_df['business_id']==i]['review_count'].iloc[0]))
    print('')
NextDoor Restaurant
X
4.0 295

Gyubee Japanese BBQ - Markham
X
3.5 287

Dragon Legend
X
3.5 309

Duo Patisserie & Cafe
X
4.5 307

Hai Tang Cafe
X
3.5 75

Inspire Restaurant
X
4.0 408

Peter's Fine Dining Steak and Seafood
X
4.5 130

In [ ]: