guru4elephant / gorse

An open source recommender system service written in Go

Home Page:https://gorse.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Language: English | 中文

gorse: Go Recommender System Engine

build codecov Go Report Card GoDoc Build Docs Gitter Gorse推荐系统交流群

Gorse is an open source recommendation system written in Go. Gorse aims to be an universal open source recommender system that can be easily introduced into a wide variety of online services. By importing items, users and interaction data into Gorse, the system will automatically train models to generate recommendations for each user. Project features are as follows.

  • Supports multi-way matching (latest, popular, collaborative filtering based on matrix factorization) and FM-based personalized ranking.
  • Single node training, distributed prediction, and ability to achieve horizontal scaling in the recommendation phase.
  • Provide RESTful APIs for data CRUD and recommendation requests.
  • Provide CLI tools for data import and export, model tuning, and cluster status checking.

User Guide

Recommendation Principles

The process of Gorse recommending items consists of two phases, recall and sort. The recall phase finds a collection of candidate items from the whole set of items for subsequent sorting. Due to the large number of items, the recommendation system is unable to perform the computational workload of sorting all items, so the recall phase mainly uses some simple strategies or models to collect the candidate items. At present, the system has implemented three types of recall methods, namely "recent popular items", "latest items" and "collaborative filtering". The sorting stage sorts the recalled items by removing duplicate items and historical items, and the sorting stage combines the items and user characteristics to make recommendations with more accuracy.

System Architecture

Gorse is a single node training and distributed prediction recommender system. Gorse stores data in MySQL or MongoDB, with intermediate data cached in Redis. The cluster consists of a master node, multiple worker nodes, and server nodes. The master node is responsible for ranking model training, collaborative filtering model training, non-personalized item matching, configuration management, and membership management. The server node is responsible for exposing the RESTful APIs and online real-time recommendations. Worker nodes are responsible for personalized matching for each user - currently only collaborative filtering is supported. In addition, administrator can perform model tuning, data import and export, and system status checking via the CLI.

Contributors

Any kind of contribution is expected: report a bug, give a advice or even create a pull request.

Acknowledgments

gorse is inspired by following projects:

About

An open source recommender system service written in Go

https://gorse.io

License:Apache License 2.0


Languages

Language:Go 99.4%Language:Dockerfile 0.6%Language:Shell 0.0%