/*
* Copyright (C) 2016 RankSys http://ranksys.org
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
package org.ranksys.diversity.intentaware;
import es.uam.eps.ir.ranksys.diversity.intentaware.AspectModel;
import es.uam.eps.ir.ranksys.diversity.intentaware.IntentModel;
import es.uam.eps.ir.ranksys.mf.Factorization;
/**
* Factory class to create factorization-based intent-aware models.
*
* @author Jacek Wasilewski (jacek.wasilewski@insight-centre.org)
*
* @param <U> user type
* @param <I> item type
* @param <F> aspect type
*/
public abstract class IAFactorizationModelFactory<U, I, F> {
private final Factorization<U, I> factorization;
/**
* Creates the factorization-based models factory.
*
* @param factorization factorization model
*/
public IAFactorizationModelFactory(Factorization<U, I> factorization) {
this.factorization = factorization;
}
/**
* Returns factorization-based intent model.
*
* @return intent model
*/
public abstract IntentModel<U, I, F> getIntentModel();
/**
* Returns factorization-based aspect model.
*
* @return aspect model
*/
public abstract AspectModel<U, I, F> getAspectModel();
/**
*
* Returns factorization model.
*
* @return factorization model
*/
protected Factorization<U, I> getFactorization() {
return this.factorization;
}
}