Skip to content
Snippets Groups Projects
RecommendationResultsView.py 2.71 KiB
Newer Older
Jiří Vrbka's avatar
Jiří Vrbka committed
from flask import render_template, request, Blueprint
import os
Jiří Vrbka's avatar
Jiří Vrbka committed
import sys

from flask import render_template, request, Blueprint

from src.algorithms.CosineSimilarityWithSimilarityCoefficient import CosineSimilarityWithSimilarityCoefficient
from ..models.DestinationModel import DestinationModel

sys.path.append(os.path.dirname(os.path.abspath(__file__)) + "/../../src/")
from src.algorithms.CosineSimilarity import CosineSimilarity
from src.algorithms.CollaborativeFiltering import CollaborativeFiltering
from src.algorithms.RandomSimilarity import RandomSimilarity
from src.algorithms.TripSimilarity import TripSimilarity
from src.algorithms.OtherSimilarityWithSimilarityCoefficient import OtherSimilarityWithSimilarityCoefficient

recommendationsBlueprint = Blueprint(
    'recommendations', __name__, url_prefix='')

@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()
    other_sim_manhattan = OtherSimilarityWithSimilarityCoefficient('manhattan')
    other_sim_hamming = OtherSimilarityWithSimilarityCoefficient('hamming')
    trip_sim = TripSimilarity()

    masking_dict = {
        "Manhattan iteratively imputed data with SimilarityCoefficient": "Recommendation 1",
        "SVD": "Recommendation 2",
        "Random": "Recommendation 3",
        "Cosine Raw data with SimilarityCoefficient": "Recommendation 4",
        "Hamming binned data with SimilarityCoefficient": "Recommendation 6"
    if len(cities) != 0:
        recommendations = {
Jiří Vrbka's avatar
Jiří Vrbka 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 Raw data with SimilarityCoefficient"]: cosine_sim.similarity_on_raw_data(cities),
            masking_dict["TripSimilarity"]: trip_sim.get_recommendations_with_removal(cities),
            masking_dict["Hamming binned data with SimilarityCoefficient"]: other_sim_hamming.similarity_on_binned_data(cities)
        }
    else:
        recommendations = {}
    return render_template("recommend.html", results=recommendations, cities=cities)