新闻个性化推荐(备忘)

新闻个性化推荐
1)任务
针对******新闻用户,基于用户喜好,个性化推荐新闻。
2)数据
数据是JSON格式,按照Bodensee协议设计的。
3)方案
方案一:基于协同过滤的新闻推荐
方案二:基于用户行为和新闻内容的新闻推荐
目前采用方案一实现
4)基于协同过滤的新闻推荐的技术路线
JSON数据==>mahout可接受的数据格式==>采用item-based的协同过滤==>在hadoop上使用mahout实现协同过滤==>推荐结果在solr建立索引==>实现推荐服务

mahout是一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,包括协同过滤CF等项目。
solr是一个独立的企业级搜索服务,基于Lucene的全文搜索服务器,通过建立推荐结果索引,在推荐服务实现时方便查询推荐结果。

这里有3个服务:
A、解析数据服务--不断取新数据,并解析成mahout数据格式,加入到模型训练语料库中,并从语料库中移除一个月以前过期的数据;
B、新闻推荐模型训练服务--模型定时重新训练,产生推荐结果文件,并索引到SOLR里;
C、对外提供推荐服务--通过调用推荐接口服务,实现新闻个性化推荐。

5)推荐服务service接口设计
输入:用户的clientID
输出:推荐结果列表
List<NewsRecommendResult> recommender(String clientID)
NewsRecommendResult设计如下:
public class NewsRecommendResult {
private String clientID;//用户clientID
private List<String> history;//用户最近看过的新闻
private List<String> recommend_list;//推荐给用户的新闻
... ...
}
6)SOLR索引推荐结果
查询clientID是f5cab4cfdf1a6307d80df5ac08112f78的最新版本的推荐结果: {
"response": {
"numFound": 1,
"start": 0,
"docs": [ {
"recommender_version": 2,
"userID": "-6183871622198485712",
"clientID": "f5cab4cfdf1a6307d80df5ac08112f78",
"history": [
"http://soccer.nbcsports.com/2015/11/30/porters-timbers-just-wanted-in-the-playoffs-now-theyre-90-mins-away-from-a-title/ en_US",
"http://observer.com/2015/11/the-good-wife-recap-7x9-too-many-people-of-color/ en_US",
"http://www.wsj.com/articles/the-race-to-create-elon-musks-hyperloop-heats-up-1448899356?mod=rss_technology en_US",
"http://www.makeuseof.com/tag/create-iso-image-windows-system/ en_US",
"https://www.washingtonpost.com/sports/highschools/the-post-top-20-stone-bridge-patuxent-join-the-rankings-after-gritty-playoff-wins/2015/11/30/453210ec-9744-11e5-8917-653b65c809eb_story.html en_US",
"http://www.forbes.com/sites/simonthompson/2015/11/29/the-forced-awakens-or-why-some-star-wars-fans-feel-less-is-more/ en_US",
"http://screenrant.com/revenant-tv-trailer-leonardo-dicaprio/ en_US",
"http://sn.gem.is/content/target-site-crashes-cyber-monday?mob=1 en_US"
],
"recommend_list": [
"http://observer.com/2015/11/the-good-wife-recap-7x9-too-many-people-of-color/ 1.0",
"http://www.motorauthority.com/news/1101183_ferrari-laferrari-meets-its-predecessors-video 1.0",
"http://sports.yahoo.com/news/why-kobe-bryant-decided-it-was-time-to-retire-070605697.html 1.0"
],
"id": "73792599-cb8e-4d84-ab7e-fda2928039e2",
"_version_": 1520514787377676300
}
]
}
}
7)mahout协同过滤(item-based)
包含下面6个过程:
求出用户矩阵==>求出项目矩阵==>求出项目矩阵的平方和==>根据项目矩阵、项目矩阵平方和求出项目相似度矩阵==>整合用户矩阵、项目相似度矩阵,得到用户-项目相似度矩阵==>根据用户-项目相似度矩阵求出用户推荐矩阵。
未考虑时效性,待改进
8)待补充中

你可能感兴趣的:(新闻个性化推荐(备忘))