Libimseti的用户推荐系统

来源:互联网 发布:交英语的软件 编辑:程序博客网 时间:2024/05/17 06:14
<span style="font-size:18px;">/*** * @author YangXin * @date 2016/2/19 * @info Libimseti的用户推荐系统 * 下列代码显示了一个推荐程序的实现,其中包含了前面所讲的基于用户的推荐引擎 */package unitFive;import java.io.File;import java.io.IOException;import java.util.Collection;import java.util.List;import org.apache.mahout.cf.taste.common.Refreshable;import org.apache.mahout.cf.taste.common.TasteException;import org.apache.mahout.cf.taste.impl.common.FastIDSet;import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood;import org.apache.mahout.cf.taste.impl.similarity.EuclideanDistanceSimilarity;import org.apache.mahout.cf.taste.model.DataModel;import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;import org.apache.mahout.cf.taste.recommender.IDRescorer;import org.apache.mahout.cf.taste.recommender.RecommendedItem;import org.apache.mahout.cf.taste.recommender.Recommender;import org.apache.mahout.cf.taste.similarity.UserSimilarity;public class LibimsetiRecommender implements Recommender {private final Recommender delegate;private final DataModel model;private final FastIDSet men;private final FastIDSet women;private final FastIDSet usersRateMoreMen;private final FastIDSet usersRateLessMen;//在生产环境下需要public LibimsetiRecommender() throws TasteException, IOException{this(new FileDataModel(readResourceToTempFile("E:\\mahout项目\\examples\\ratings.dat")));}/*** * 此方法封装了如何将资源转换为加载的文件,此处未实现 * @param string * @return */private static File readResourceToTempFile(String string) {// TODO Auto-generated method stubreturn null;}//在构建基于用户的推荐程序public LibimsetiRecommender(DataModel model) throws TasteException, IOException {// TODO Auto-generated constructor stubUserSimilarity similarity = new EuclideanDistanceSimilarity(model);UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model);delegate = new GenericUserBasedRecommender(model, neighboehood, similarity);this.model = model;FastIDSet[] menWomen = GenderRescorer.parseMenWomen(readResourceToTempFile("E:\\mahout项目\\examples\\gender.dat"));men = menWomen[0];women = menWomen[1];usersRateMoreMen = new FastIDSet(50000);usersRateLessMen = new FastIDSet(50000);}//在所有推荐上使用@Overridepublic List<RecommendedItem> recommend(long userID, int howMany)throws TasteException {// TODO Auto-generated method stubIDRescorer rescorer = new GenderRescorer(men, women, userID, usersRateMoreMen, userRateLessMen, userID, model);return delegate.recommend(userID, howMany, rescorer);}@Overridepublic List<RecommendedItem> recommend(long userID, int howMany, IDRescorer rescorer)throws TasteException {// TODO Auto-generated method stubreturn delegate.recommend(userID, howMany, rescorer);}@Overridepublic float estimatePreference(long userID, long itemID) throws TasteException {// TODO Auto-generated method stubIDRescorer rescorer = new GenderRescorer(men, women, userID, usersRateMoreMen,usersRateLessMen, userID, model);return (float)rescorer.rescore(itemID, delegate.estimatePreference(userID, itemID));}@Overridepublic void setPreference(long userID, long itemID, float value)throws TasteException {// TODO Auto-generated method stubdelegate.setPreference(userID, itemID, value);}@Overridepublic void removePreference(long userID, long itemID) throws TasteException {// TODO Auto-generated method stubdelegate.removePreference(userID, itemID);}@Overridepublic DataModel getDataModel() {// TODO Auto-generated method stubreturn delegate.getDataModel();}@Overridepublic void refresh(Collection<Refreshable> alreadyRefreshed) {// TODO Auto-generated method stubdelegate.refresh(alreadyRefreshed);}@Overridepublic List<RecommendedItem> recommend(long userID, int howMang, boolean arg2)throws TasteException {// TODO Auto-generated method stubreturn null;}@Overridepublic List<RecommendedItem> recommend(long arg0, int arg1,IDRescorer arg2, boolean arg3) throws TasteException {// TODO Auto-generated method stubreturn null;}@Overridepublic void refresh(Collection<Refreshable> arg0) {// TODO Auto-generated method stub}@Overridepublic List<RecommendedItem> recommend(long arg0, int arg1)throws TasteException {// TODO Auto-generated method stubreturn null;}@Overridepublic List<RecommendedItem> recommend(long arg0, int arg1, boolean arg2)throws TasteException {// TODO Auto-generated method stubreturn null;}@Overridepublic List<RecommendedItem> recommend(long arg0, int arg1, IDRescorer arg2)throws TasteException {// TODO Auto-generated method stubreturn null;}@Overridepublic List<RecommendedItem> recommend(long arg0, int arg1,IDRescorer arg2, boolean arg3) throws TasteException {// TODO Auto-generated method stubreturn null;}}</span>


0 0