def combine_recommenders(neighbourhood_calculators,
                         neighbour_contribution_calculators,
                         baseline_calculators, similarity_calculators,
                         num_neighbours_list, thresholds, num_topics_list):

    combined_recommenders = []

    for neighbourhood_calculator,\
        neighbour_contribution_calculator,\
        baseline_calculator,\
        similarity_calculator,\
        num_neighbours,\
        threshold,\
        num_topics\
        in itertools.product(
            neighbourhood_calculators,
            neighbour_contribution_calculators,
            baseline_calculators,
            similarity_calculators,
            num_neighbours_list,
            thresholds,
            num_topics_list):
        recommender = ContextualKNN(None,
                                    None,
                                    None,
                                    None,
                                    None,
                                    has_context=True)
        recommender.neighbourhood_calculator = neighbourhood_calculator
        recommender.neighbour_contribution_calculator =\
            neighbour_contribution_calculator
        recommender.user_baseline_calculator = baseline_calculator
        recommender.user_similarity_calculator = similarity_calculator
        recommender.num_neighbours = num_neighbours
        recommender.threshold1 = threshold
        recommender.threshold2 = threshold
        recommender.threshold3 = threshold
        recommender.threshold4 = threshold
        recommender.num_topics = num_topics
        combined_recommenders.append(recommender)

    return combined_recommenders
def combine_recommenders(
        neighbourhood_calculators,
        neighbour_contribution_calculators,
        baseline_calculators,
        similarity_calculators,
        num_neighbours_list,
        thresholds,
        num_topics_list):

    combined_recommenders = []

    for neighbourhood_calculator,\
        neighbour_contribution_calculator,\
        baseline_calculator,\
        similarity_calculator,\
        num_neighbours,\
        threshold,\
        num_topics\
        in itertools.product(
            neighbourhood_calculators,
            neighbour_contribution_calculators,
            baseline_calculators,
            similarity_calculators,
            num_neighbours_list,
            thresholds,
            num_topics_list):
        recommender = ContextualKNN(
            None, None, None, None, None, has_context=True)
        recommender.neighbourhood_calculator = neighbourhood_calculator
        recommender.neighbour_contribution_calculator =\
            neighbour_contribution_calculator
        recommender.user_baseline_calculator = baseline_calculator
        recommender.user_similarity_calculator = similarity_calculator
        recommender.num_neighbours = num_neighbours
        recommender.threshold1 = threshold
        recommender.threshold2 = threshold
        recommender.threshold3 = threshold
        recommender.threshold4 = threshold
        recommender.num_topics = num_topics
        combined_recommenders.append(recommender)

    return combined_recommenders