Newer
Older
from http import HTTPStatus
from backend.models import db
from flask import json, render_template, request, redirect, Blueprint, Response
from ..models.UserCityModel import UserCityModel
from ..models.DestinationModel import DestinationModel
import sys
import os
sys.path.append(os.path.dirname(os.path.abspath(__file__))+ "/../../src/")
from algorithms.CosineSimilarityWithSimilarityCoefficient import CosineSimilarityWithSimilarityCoefficient
from algorithms.CosineSimilarity import CosineSimilarity
from algorithms.CollaborativeFiltering import CollaborativeFiltering
from algorithms.RandomSimilarity import RandomSimilarity

Terézia Slanináková
committed
from algorithms.TripSimilarity import TripSimilarity
from algorithms.OtherSimilarity import OtherSimilarity
from algorithms.OtherSimilarityWithSimilarityCoefficient import OtherSimilarityWithSimilarityCoefficient
recommendationsBlueprint = Blueprint(
'recommendations', __name__, url_prefix='')

Terézia Slanináková
committed
def recompute_match(data):
# TODO
sum_ = 0
for d in data:
sum_ += float(d[1])
for d in data:
d[1] = float(d[1]) / sum_
return data
@recommendationsBlueprint.route('/recommend/results', methods=['POST'])
def recommendationsResults():
cities = request.form.getlist("city_name")
result = DestinationModel.query.all()
available_cities = [str(r).split(" ")[1].split(">")[0] for r in result]
for c in cities:
if c not in available_cities:
cities.remove(c)
cosine = CosineSimilarity()
cosine_sim = CosineSimilarityWithSimilarityCoefficient()
collab = CollaborativeFiltering()
random = RandomSimilarity()

Terézia Slanináková
committed
#other = OtherSimilarity('manhattan')
other_sim_manhattan = OtherSimilarityWithSimilarityCoefficient('manhattan')
other_sim_minkowski = OtherSimilarityWithSimilarityCoefficient('minkowski')
trip_sim = TripSimilarity()
masking_dict = {
"Manhattan iteratively imputed data with SimilarityCoefficient": "Recommendation 1",
"SVD": "Recommendation 2",
"Random": "Recommendation 3",
"Cosine Imputed data with SimilarityCoefficient": "Recommendation 4",
"TripSimilarity": "Recommendation 5",
"Minkowski binned data with SimilarityCoefficient": "Recommendation 6"
}

Terézia Slanináková
committed
masking_dict["Manhattan iteratively imputed data with SimilarityCoefficient"]: other_sim_manhattan.similarity_on_iteratively_imputed_data(cities),
masking_dict["SVD"]: collab.similarity_with_SVD(cities),
masking_dict["Random"]: random.random_similarity(cities),
masking_dict["Cosine Imputed data with SimilarityCoefficient"]: cosine_sim.similarity_on_imputed_data(cities),
masking_dict["TripSimilarity"]: trip_sim.get_recommendations_with_removal(cities),
masking_dict["Minkowski binned data with SimilarityCoefficient"]: other_sim_minkowski.similarity_on_binned_data(cities)
}
else:
recommendations = {}
return render_template("recommend.html", results=recommendations, cities=cities)