mahout基于用户的协作过滤建议

时间:2015-09-09 05:31:47

标签: java maven csv mahout mahout-recommender

我创建了一个maven项目,并在pom文件中添加了以下依赖项

<dependency>
        <groupId>org.apache.mahout</groupId>
        <artifactId>mahout-mr</artifactId>
        <version>0.11.0</version>
    </dependency>

我在mahout中遵循了示例并添加了RecommenderIntro  class to src / main / java并将intro.csv文件复制到src / main / resource文件夹中。

错误发生在:

DataModel model = new FileDataModel (new File("resources\intro.csv"));

Exception in thread "main" java.io.FileNotFoundException: resources/intro.csv
    at org.apache.mahout.cf.taste.impl.model.file.FileDataModel.<init>(FileDataModel.java:180)
    at org.apache.mahout.cf.taste.impl.model.file.FileDataModel.<init>(FileDataModel.java:167)
    at org.apache.mahout.cf.taste.impl.model.file.FileDataModel.<init>(FileDataModel.java:147)
    at recstest.UserBased.main(UserBased.java:19)

我还将文件复制到主src \ main \ java并检查,但仍然发生相同的错误。这可能是什么原因?

2 个答案:

答案 0 :(得分:0)

使用此方法从类路径加载资源:

    URL url = getClass().getResource("/intro.csv");
    Path path = Paths.get(url.toURI());
    File file = path.toFile();

答案 1 :(得分:0)

您可以在类上使用getResource来获取所需的资源

DataModel model = new FileDataModel(new File(this.getClass().getResource("/intro.csv").toURI()));

当然,您需要以某种方式处理可能的URISyntaxExceptionIOException