def plot_sentiment(item,name_plot): sent_points = get_item_sentiment(item['item_id']) trace0 = Scatter(x=sent_points[0],y=sent_points[1], mode='markers', markers=Marker(size=8), name='reviews sentiment score') trace1 = Scatter(x=sent_points[0],y=[0]*len(sent_points[1]), name = "neutral line") data = ([trace0,trace1]) layout = Layout(xaxis=XAxis(title='Time Line',autorange=True), yaxis=YAxis(title='Sentiment score on product',autorange=True), legend=Legend(y=0.5,yref='paper',font=Font(size=10,)), ) fig = Figure(data=data, layout=layout) plot_url = py.plot(fig, filename=name_plot) return plot_url
def plot_sentiment(item, name_plot): sent_points = get_item_sentiment(item['item_id']) trace0 = Scatter(x=sent_points[0], y=sent_points[1], mode='markers', markers=Marker(size=8), name='reviews sentiment score') trace1 = Scatter(x=sent_points[0], y=[0] * len(sent_points[1]), name="neutral line") data = ([trace0, trace1]) layout = Layout( xaxis=XAxis(title='Time Line', autorange=True), yaxis=YAxis(title='Sentiment score on product', autorange=True), legend=Legend(y=0.5, yref='paper', font=Font(size=10, )), ) fig = Figure(data=data, layout=layout) plot_url = py.plot(fig, filename=name_plot) return plot_url
def recommendation(): """ When a POST request with json data is made to this url, read the data from json, find the beauty product, then return the response """ data = flask.request.json priority_concern = data["priority"][0] other_concerns = data["others"][0].split(",") list_of_concern = data["priority"] + data["skin_type"] + other_concerns list_of_concern = list(set(list_of_concern)) #print list_of_concern recommended_15_items = list_of_15(priority_concern, list_of_concern) item_ids = [i['item_id'] for i in recommended_15_items] recommended_5_items = list_of_5(item_ids) recommended_5 = add_price.add_price(recommended_5_items) #####------Trying to add price and distance into my data--------------- #recommended_items = add_price.add_price(recommended_5_items) unsorted_recommended_items = add_distance(data['extra_info'], recommended_5) sorted_recommended_items = sorted(unsorted_recommended_items, key=lambda k: k['distance'], reverse=True) recommended_items = sorted_recommended_items[:3] # plot1 = plot_sentiment(recommended_items[0],'sentiment plot 1') # plot2 = plot_sentiment(recommended_items[1],'sentiment plot 2') # plot3 = plot_sentiment(recommended_items[2],'sentiment plot 3') graph_data1 = get_item_sentiment(recommended_items[0]['item_id']) new_data1 = np.asarray(graph_data1).T.tolist() graph_data2 = get_item_sentiment(recommended_items[1]['item_id']) new_data2 = np.asarray(graph_data2).T.tolist() graph_data3 = get_item_sentiment(recommended_items[2]['item_id']) new_data3 = np.asarray(graph_data3).T.tolist() ####-------Result to be return to html---------------------------------- results = { 1: [ recommended_items[0]['name'], round(recommended_items[0]['star_rating_ave'], 3), recommended_items[0]['number_of_reviews'], recommended_items[0]['reviews_summary'], recommended_items[0]['price'] ], 2: [ recommended_items[1]['name'], round(recommended_items[1]['star_rating_ave'], 3), recommended_items[1]['number_of_reviews'], recommended_items[1]['reviews_summary'], recommended_items[1]['price'] ], 3: [ recommended_items[2]['name'], round(recommended_items[2]['star_rating_ave'], 3), recommended_items[2]['number_of_reviews'], recommended_items[2]['reviews_summary'], recommended_items[2]['price'] ], "graph_data1": new_data1, "graph_data2": new_data2, "graph_data3": new_data3 } return flask.jsonify(results)
def recommendation(): """ When a POST request with json data is made to this url, read the data from json, find the beauty product, then return the response """ data = flask.request.json priority_concern = data["priority"][0] other_concerns = data["others"][0].split(",") list_of_concern = data["priority"]+ data["skin_type"] + other_concerns list_of_concern = list(set(list_of_concern)) #print list_of_concern recommended_15_items = list_of_15(priority_concern,list_of_concern) item_ids = [i['item_id'] for i in recommended_15_items] recommended_5_items = list_of_5(item_ids) recommended_5 = add_price.add_price(recommended_5_items) #####------Trying to add price and distance into my data--------------- #recommended_items = add_price.add_price(recommended_5_items) unsorted_recommended_items = add_distance(data['extra_info'], recommended_5) sorted_recommended_items = sorted(unsorted_recommended_items,key=lambda k: k['distance'],reverse=True) recommended_items = sorted_recommended_items[:3] # plot1 = plot_sentiment(recommended_items[0],'sentiment plot 1') # plot2 = plot_sentiment(recommended_items[1],'sentiment plot 2') # plot3 = plot_sentiment(recommended_items[2],'sentiment plot 3') graph_data1 = get_item_sentiment(recommended_items[0]['item_id']) new_data1 = np.asarray(graph_data1).T.tolist() graph_data2 = get_item_sentiment(recommended_items[1]['item_id']) new_data2 = np.asarray(graph_data2).T.tolist() graph_data3 = get_item_sentiment(recommended_items[2]['item_id']) new_data3 = np.asarray(graph_data3).T.tolist() ####-------Result to be return to html---------------------------------- results = {1:[recommended_items[0]['name'],round(recommended_items[0]['star_rating_ave'],3), recommended_items[0]['number_of_reviews'],recommended_items[0]['reviews_summary'], recommended_items[0]['price']], 2:[recommended_items[1]['name'],round(recommended_items[1]['star_rating_ave'],3), recommended_items[1]['number_of_reviews'],recommended_items[1]['reviews_summary'], recommended_items[1]['price']], 3:[recommended_items[2]['name'],round(recommended_items[2]['star_rating_ave'],3), recommended_items[2]['number_of_reviews'],recommended_items[2]['reviews_summary'], recommended_items[2]['price']], "graph_data1":new_data1,"graph_data2":new_data2,"graph_data3":new_data3 } return flask.jsonify(results)