使用Neo4j和简单分词算法实现菜品推荐系统
2017-04-26 11:37
435 查看
背景:本推荐系统基于一款硬件产品--旺小宝桌牌。客人按下点餐按钮,扫码进入点餐界面,然后开始点自己喜欢的菜,在手机端下单。目前在成都已有近200家合作餐饮商家。
菜品推荐功能:
当客人在某商家使用桌牌点菜,提取该客人点菜的主材,当客人下一次在另外一家使用桌牌的商家点菜时,即为该客户推荐该商家对应主材的菜。如:某客人在A店点了[麻辣鸡爪],则该客人喜好食材为”鸡爪”,当客人来到B店,则可为客人推荐B店对应的[二娘鸡爪爪]。
一.菜品主材提取
桌牌上的菜名由商家输入,存入到桌牌数据库中,当前已有的菜名去重后有约2万个。第一步:收集菜名
从数据库导出菜名。第二步:分词&词频统计
可以使用开源分词工具,本例中使用的是Word分词器。.
第三步:人工筛选主材
词频越高的主材,在菜名中出现的频率也越高,筛选时也越有价值;词频为1的词可以不用筛选,因为即使是主材,也没有其他的菜可以推荐。第四步:匹配主材算法
具体算法可由业务场景自行决定,匹配后的结果如下,“=>”左边是主材,右边是匹配到的菜名。二.数据结构
在本系统中,涉及到了“人-店-菜-主材”关系,为了使关系间的结构变得简单,因此引入了Neo4j图形数据库,在图形数据库中,该关系如下。当客人到店时,就推荐给客人该店能够匹配上他喜好主材的菜,按照喜好的权重排序。
三.系统架构
相关文章推荐
- 采用KNN算法实现一个简单的推荐系统
- 使用LUCENE快速实现属于自己的英文分词程序——附简单实现
- java中读写锁的实现及使用读写锁简单实现缓存系统的实例
- iOS系统GCD学习(11):使用串行队列实现简单的预加载
- 使用ICE实现一个简单的文件系统
- 使用Python MrJob的MapReduce实现电影推荐系统
- 使用存储过程实现进销存系统中的先进先出算法(1)――数据库与存储过程设计
- C下学生管理系统:从文件中读取30位学生的信息(含邮箱),并实现简单的增、删、查找、统计(邮箱使用人数)。---附程序哦!
- 使用Nginx反向代理来实现简单的负载均衡 推荐
- 一个简单最大正向匹配(Maximum Matching)MM中文分词算法的实现
- 从零使用OpenCV快速实现简单车牌识别系统
- 使用存储过程实现进销存系统中的先进先出算法(3)――Oracle9i版
- 使用Node.js + MongoDB实现一个简单的日志分析系统
- 协同过滤介绍和简单推荐系统的实现
- 使用正向最大匹配算法实现中文分词简单模型-用trie树实现
- linux系统Qt实现简单的任务管理器 推荐
- 模糊系统架构和简单实现--AForge.NET框架的使用(四)
- Neo4j:使用Ruby实现社交网站好友推荐
- 使用SVD方法实现电影推荐系统
- Java中读写锁的实现及使用读写锁简单实现缓存系统的实例