【问题标题】:Recommender system推荐系统
【发布时间】:2014-06-10 05:15:37
【问题描述】:

我正在尝试实现基于 mahout 的推荐系统。我无法在 jsf 页面上显示结果。

@ManagedBean(name="similarvaluerecommender") @ViewScoped

公共类 SimilarValueRecommender 实现 Serializable { 私人列表推荐物品;

@PostConstruct
public void init() {
    this.recommendedItems = new ArrayList<>();


    DataModel dm;
    try {
        dm = new FileDataModel(new File("Dataset/userdata.csv"));

    //ItemSimilarity sim = new LogLikelihoodSimilarity(dm);
    TanimotoCoefficientSimilarity sim = new TanimotoCoefficientSimilarity(dm);
    GenericItemBasedRecommender recommender = new GenericItemBasedRecommender(dm, sim);
    int x=1;

        for(LongPrimitiveIterator items = dm.getItemIDs(); items.hasNext();) {
            long itemId = items.nextLong();
            List<RecommendedItem>recommendedItems1 = recommender.mostSimilarItems(itemId, 10);

            this.recommendedItems.addAll(recommendedItems1);
            x++;

        }
    } catch (TasteException ex) {
        Logger.getLogger(SimilarValueRecommender.class.getName()).log(Level.SEVERE, null, ex);
    }
    catch (IOException ex) {
        Logger.getLogger(SimilarValueRecommender.class.getName()).log(Level.SEVERE, null, ex);
    }
}

//getter and setter...
 public List<RecommendedItem> getRecommendedItems(){
     return recommendedItems;

 }

 public void setList(List<RecommendedItem> recommendedItems) {
     this.recommendedItems=recommendedItems;

 }

}

我想把这个页面的结果以表格的形式显示在一个jsf页面上。这是风景

<ui:composition template="WEB-INF/commonlayout.xhtml">
        <ui:define name="content">
            <h:form>
                hi
                <h:dataTable id="similarvaluestable" value="#{similarvaluerecommender.recommendedItems}" var="recommendedItem">
                <h:column>
                #{recommendedItem.itemID}
        </h:column>

                </h:form>
             </ui:define>  
    </ui:composition>

</h:body>
 </html>

【问题讨论】:

    标签: jsf mahout


    【解决方案1】:

    做以下事情:

    • 在您的托管 bean 中声明 List&lt;RecommendedItem&gt; recommendations 属性。
    • 为此属性定义getter 和setter 方法。不要在任何这些方法中包含任何业务逻辑。
    • @PostConstruct 方法中加载数据并将其存储到recommendations 属性中。
    • 在视图中显示来自recommendations 属性的数据。

    在代码中:

    @ManagedBean("similarValueRecommender")
    @ViewScoped
    public class SimilarValueRecommender implements Serializable {
        List<RecommendedItem> recommendations;
    
        @PostConstruct
        public void init() {
            this.recommendations = new ArrayList<RecommendedItem>();
    
            //taken from your current code
            //seems like this is the code to load recommendations
            DataModel dm = new AlphaItemFileDataModel(new File("Dataset/userdata.csv"));
            //ItemSimilarity sim = new LogLikelihoodSimilarity(dm);
            TanimotoCoefficientSimilarity sim = new TanimotoCoefficientSimilarity(dm);
            GenericItemBasedRecommender recommender = new GenericItemBasedRecommender(dm, sim);
            int x=1;
            for(LongPrimitiveIterator items = dm.getItemIDs(); items.hasNext();) {
                long itemId = items.nextLong();
                List<RecommendedItem>recommendations = recommender.mostSimilarItems(itemId, 10);
                /*
                for(RecommendedItem recommendation : recommendations) {
                    similaritemID=recommendation.getItemID();
                    System.out.println(itemId + "," + recommendation.getItemID() + "," + recommendation.getValue());
                }
                */
                this.recommendations.addAll(recommendations);
                x++;
                //if(x>10) System.exit(1);
            }
        }
    
        //getter and setter...
    }
    

    在你看来:

    <h:dataTable value="#{similarValueRecommender.recommendations}" var="recommendation">
        <h:column>
            #{recommendation.text}
        </h:column>
    </h:dataTable>
    

    【讨论】:

    • 我确实尝试了您的解决方案。太感谢了。但是表格仍然没有显示出来。
    • @user3570179 请编辑您的问题并展示您如何在视图中显示表格。
    猜你喜欢
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多