Ejemplo n.º 1
0
  /** 对用户性别进行过滤 */
  public static void filterGender(
      long uid, RecommenderBuilder recommenderBuilder, DataModel dataModel, String gender)
      throws TasteException, IOException {
    Set<Long> userids = getByGender("datafile/book/user.csv", gender);

    // 计算指定性别用户打分过的图书
    Set<Long> bookids = new HashSet<Long>();
    for (long uids : userids) {
      LongPrimitiveIterator iter = dataModel.getItemIDsFromUser(uids).iterator();
      while (iter.hasNext()) {
        long bookid = iter.next();
        bookids.add(bookid);
      }
    }

    IDRescorer rescorer = new FilterRescorer(bookids);
    List<RecommendedItem> list =
        recommenderBuilder.buildRecommender(dataModel).recommend(uid, RECOMMENDER_NUM, rescorer);
    RecommendFactory.showItems(uid, list, false);
  }
Ejemplo n.º 2
0
  public static void main(String[] args) throws TasteException, IOException {
    long uid = 198; // 65
    String gender = "F"; // "M"
    String file = "datafile/book/rating.csv";
    String fileF = filterRatingDataByUserGender(file, gender);

    DataModel dataModel = RecommendFactory.buildDataModel(fileF);
    RecommenderBuilder rb1 = BookEvaluator.userEuclidean(dataModel);
    RecommenderBuilder rb2 = BookEvaluator.itemEuclidean(dataModel);
    RecommenderBuilder rb3 = BookEvaluator.userEuclideanNoPref(dataModel);
    RecommenderBuilder rb4 = BookEvaluator.itemEuclideanNoPref(dataModel);

    System.out.print("userEuclidean       =>");
    filterGender(uid, rb1, dataModel, gender);
    System.out.print("itemEuclidean       =>");
    filterGender(uid, rb2, dataModel, gender);
    System.out.print("userEuclideanNoPref =>");
    filterGender(uid, rb3, dataModel, gender);
    System.out.print("itemEuclideanNoPref =>");
    filterGender(uid, rb4, dataModel, gender);
  }