1 importjava.io.BufferedReader;2
3 importjava.io.BufferedWriter;4
5 importjava.io.File;6
7 importjava.io.FileNotFoundException;8
9 importjava.io.FileReader;10
11 importjava.io.FileWriter;12
13 importjava.io.IOException;14
15 importjava.util.List;16
17 importorg.apache.commons.cli2.OptionException;18
19 importorg.apache.mahout.cf.taste.common.TasteException;20
21 importorg.apache.mahout.cf.taste.impl.common.LongPrimitiveIterator;22
23 importorg.apache.mahout.cf.taste.impl.model.file.FileDataModel;24
25 importorg.apache.mahout.cf.taste.impl.recommender.CachingRecommender;26
27 importorg.apache.mahout.cf.taste.impl.recommender.slopeone.SlopeOneRecommender;28
29 importorg.apache.mahout.cf.taste.model.DataModel;30
31 importorg.apache.mahout.cf.taste.recommender.RecommendedItem;32
33
34 public classApp35
36 {37
38 static final String inputFile = "/mnt/new/ml-1m/ratings.dat";39
40 static final String outputFile = "/mnt/new/ml-1m/ratings.csv";41
42
43
44 public static void main( String[] args ) throwsIOException, TasteException, OptionException45
46 {47
48 CreateCsvRatingsFile();49
50 //创建模型数据源文件
51
52 File ratingsFile = newFile(outputFile);53
54 DataModel model = newFileDataModel(ratingsFile);55
56 //SlopeOne算法
57
58 CachingRecommender cachingRecommender = new CachingRecommender(newSlopeOneRecommender(model));59
60 //对所有用户进行推荐
61
62 for (LongPrimitiveIterator it =model.getUserIDs(); it.hasNext();){63
64 long userId =it.nextLong();65
66 //对单个User进行推荐
67
68 List recommendations = cachingRecommender.recommend(userId, 10);69
70
71 //该用户无推荐结果
72
73 if (recommendations.size() == 0){74
75 System.out.print("User ");76
77 System.out.print(userId);78
79 System.out.println(": no recommendations");80
81 }82
83 //打印推荐信息
84
85 for(RecommendedItem recommendedItem : recommendations) {86
87 System.out.print("User ");88
89 System.out.print(userId);90
91 System.out.print(": ");92
93 System.out.println(recommendedItem);94
95 }96
97 }98
99 }100
101
102 //读文件前1000行作为模型输入
103 private static void CreateCsvRatingsFile() throwsFileNotFoundException, IOException {104
105
106 BufferedReader br = new BufferedReader(newFileReader(inputFile));107
108 BufferedWriter bw = new BufferedWriter(newFileWriter(outputFile));109
110
111
112 String line = null;113
114 String line2write = null;115
116 String[] temp;117
118
119 int i = 0;120
121 while ((line = br.readLine()) != null && i < 1000)122
123 {124
125 i++;126
127 temp = line.split("::");128
129 line2write = temp[0] + "," + temp[1];130
131 bw.write(line2write);132
133 bw.newLine();134
135 bw.flush();136
137 }138
139 br.close();140
141 bw.close();142
143 }144
145 }