由于缺乏对maven和java工程的了解, RecommenderIntro demo折腾了很久才搞定. 其中参考了《Maven 权威指南》, Mahout Documents和网上一些资料. 感觉现有的一些例子讲的不是很清楚, 又或者是用eclipse.
言归正传, 在跑这个 demo之前, 需要安装maven3.x, mahout-0.x, JDK1.5以上, 环境配置就不赘述了, 反正网上一搜一大堆.
建议在操作之前最好看一下《Maven权威指南》1-3章, 起码得知道Maven是什么, pom.xml用来干什么用的, 不然跟我一样, 碰一鼻子灰, 到头来还是得老老实实看书.
首先用maven插件archetype创建一个简单的maven工程
$ sudo mvn archetype:create -DgroupId=action.in.mahout -DartifactId=recommenderintro -Dversion=1.0-SNAPSHOT
这时候会生成目录recommenderintro, recommenderintro目录结构如图:
然后删除src/main/java/action/in/mahout/App.java, 同时在src/main/java/action/in/mahout目录下创建RecommenderIntro.java, 内容如下:
package action.in.mahout;
import org.apache.mahout.cf.taste.impl.model.file.*;
import org.apache.mahout.cf.taste.impl.neighborhood.*;
import org.apache.mahout.cf.taste.impl.recommender.*;
import org.apache.mahout.cf.taste.impl.similarity.*;
import org.apache.mahout.cf.taste.model.*;
import org.apache.mahout.cf.taste.neighborhood.*;
import org.apache.mahout.cf.taste.recommender.*;
import org.apache.mahout.cf.taste.similarity.*;
import java.io.*;
import java.util.*;
public class RecommenderIntro {
public RecommenderIntro(){};
public static void main (String args[])throws Exception{
DataModel model =new FileDataModel(new File("/tmp/intro.csv"));
UserSimilarity similarity =new PearsonCorrelationSimilarity(model);
UserNeighborhood neighborhood =new NearestNUserNeighborhood(2,similarity,model);
Recommender recommender= new GenericUserBasedRecommender(model,neighborhood,similarity);
List<RecommendedItem> recommendations =recommender.recommend(1, 2);
for(RecommendedItem recommendation :recommendations){
System.out.println(recommendation);
}
}
}
注意将数据文件intro.csv, 放到/tmp目录下。
向pom.xml中添加依赖关系:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>action.in.mahout</groupId>
<artifactId>recommenderintro</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>recommenderintro</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.mahout</groupId>
<artifactId>mahout-core</artifactId>
<version>0.8</version>
</dependency>
</dependencies>
</project>
编译安装工程
$ sudo mvn clean install
再然后就是运行demo了
$ sudo mvn exec:java -Dexec.mainClass=action.in.mahout.RecommenderIntro