由于之前的推荐算法只是最基础的,在这周完成了用户对文章的评分后,开始整合到具体的应用中.
一、关系模式
关系模式为userID articleID score的形式,
其中userID为String,articeID为int而score则是规范化到1-10的评分.
所以在上次的博客中没解决的问题就是 存储用户-文章:评分列表.
二、存储方式确定
因为整个的计算过程中涉及到大量的用户和文章,如果都采用多位数组存储会非常的稀疏,大大浪费了存储空间.
所以除了对用户我选择建立了用户矩阵以外,其余对数据一律采用Map和Set,这样可以保证数据存储空间的节省.
所以对于用户文章评分也就使用了如下结构:
Map<String,Map<Integer,Integer>> userScore = new HashMap<>(); //用户 文章 评分存储
三、代码完善
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
/**
* 基于用户的协同过滤推荐算法实现
* @author Jemary
*
*/
public class UserCF {
public static void main(String[] args) {
/**
* UID Article ID
* 'str' 1 2 3
*/
Scanner scann