提交 2b43a98e 编写于 作者: T Tom Qian

update readme.md

上级 64ac5924
......@@ -14,7 +14,7 @@
**推荐算法的具体细节可参考文件[推荐系统介绍.pdf]**
**主要使用的库(Lib): **
**主要使用的库(Lib):**
- [Ansj](https://github.com/NLPchina/ansj_seg):基于内容的推荐部分用以分词,以及其内含的TFIDF算法。
- [Quartz](http://www.quartz-scheduler.org/):推荐系统定时运行的设定。
......@@ -111,8 +111,11 @@ password = [登录密码]
四个步骤:
1.在com.qianxinyao.TomNewsRecommender包下,找到类Main;
2.选择推荐算法。设置boolean类型的enableCB,enableCF,enableHR变量,分别代表推荐过程中是否启用协同过滤推荐算法、基于内容的推荐算法、基于热点新闻的推荐算法。若均设为true,表示三种算法均工作,一起为用户生成推荐结果;
3.选择推荐对象。推荐对象分为三种:全体用户,活跃用户(最近一段时间有登录行为)与自定义用户(自己指定的用户),若选择自定义用户,需要构建包含目标用户id(long)的List<Long>
4.选择系统运行方式。运行方式分为两种:一次运行和定时运行。一次运行即只为用户进行一次推荐生成,生成结束后则系统停止,若要再生成推荐,需要重新启动系统。而定时运行则可以定时为用户生成推荐结果,若不强制停止系统,则系统会一直运行下去。(定时运行时间在paraConfig.properties文件中设定)
以下是示例代码:
......@@ -163,7 +166,9 @@ public class Main
系统运行的各类参数都可以在根目录下src/main/res目录下的paraConfig.properties文件中进行配置。默认配置是推荐配置。
若要保持系统的日常运行,还需要【新闻模块】每天抓取一定量的新闻并入库。
若需要推荐系统能在每次生成有效的推荐,只要【新闻模块】保持以一定频率抓取一定量的新闻并入库news表。(最好与推荐系统定时推荐的频率相同,并在推荐系统运行之前完成一次抓取,推荐每天抓取一次新闻,并进行一次推荐生成。)
**注意:入库的新闻要标注module_id,详情可参见数据库表与com.qianxinyao.TomNewsRecommender包下的NewsScraper类中的代码。**
## 测试数据
......@@ -177,8 +182,14 @@ public class Main
- newsmodules表:17个测试模块
- newslogs:测试推荐算法效果用的9条浏览记录
要查看推荐系统在测试数据上运行的效果,只需在Main类下执行:
```
//在测试数据上运行
new TestDataRunner().runTestData();
```
按照上一节中提供的示例代码运行的话
预期的推荐生成结果如下
- 若对测试数据进行一次协同过滤,将生成0条推荐。
- 若对测试数据进行一次基于内容的推荐,将为用户1(id=1)推荐85,87,89,104这四条新闻(有重复标题的新闻,新闻标题中的“合同”关键词匹配上了用户的喜好关键词),为用户2推荐89新闻(重复标题的新闻),推荐用户3推荐87,85,100这三条新闻(新闻标题中的“合同”关键词匹配上了用户的喜好关键词)。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册