Skip to content
forked from QilinGu/Rnews

简单的基于新闻语料的推荐算法实现

License

Notifications You must be signed in to change notification settings

qinhuaian/Rnews

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rnews

综述

我们的系统主要流程是:对新闻分词->对新闻提取主题特征->挖掘用户特征->使用不同算法推荐

算法推荐的流程是 训练用户模型->对user,article对评分->对每个用户提取得分高的article推荐

对于协同过滤,我们认为训练过程就是找与用户相似的用户,而用户对新闻的评分由与他相似的用户加权平均来取

每一个流程都应该相互独立,能够单独运行,单独改进,模块之间的关系只通过数据流相关,没有直接调用的关系,比如Recommender不会去调用特征生成,而是通过Provider去取特征,取不到Provider会自动调用算法生成,Provider在这里面就扮演了数据流的作用,解耦了两个模块之间的关系,这样不一样的推荐方法就能与不一样的特征,不一样的语料分析方法随意组合。

第三方工具集

  • 中文分词:Jieba分词
  • ORM框架:MongoEngiene
  • 语料主题模型分析:gensim
  • 聚类和K近邻等机器学习算法:scikit-learn
  • WEB开发:Django
  • 科学计算:numpy和scipy

帮助类

在算法运行期间,我们提供多种方式来存储数据,其中包括mongoDB数据库,本地文件,缓存.

我们使用统一的CacheUtil来管理缓存的本地持久化和读取操作.

使用Provider来统一实现从三种数据源读取中间数据并在无法读取时调用算法生成特征

  • CacheUtil:中间文件管理
  • DBUtil:批量写入数据库操作
  • WordExtractor:分词工具
  • CorpusHandler:主题提取和语料生成工具

核心类

  • Trainer:训练用户的模型
  • Predictor:求取用户对新闻的评分
  • Recommender:最后实际对用户进行推荐
  • Evaluator:计算算法的优劣

外部调用

我们希望做到每一个流程都能单独运行,单独改进,而不影响其他模块的运行,在console包里面我们专门提供从命令行启动每一个模块的脚本文件.

推荐算法

  • 基于内容的简单推荐
  • 基于用户的协同过滤

About

简单的基于新闻语料的推荐算法实现

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%