{"id":13710333,"url":"https://github.com/ylongqi/openrec","last_synced_at":"2025-05-06T19:30:52.714Z","repository":{"id":27102535,"uuid":"112496759","full_name":"ylongqi/openrec","owner":"ylongqi","description":"OpenRec is an open-source and modular library for neural network-inspired recommendation algorithms","archived":false,"fork":false,"pushed_at":"2023-03-24T23:54:19.000Z","size":10247,"stargazers_count":414,"open_issues_count":5,"forks_count":85,"subscribers_count":36,"default_branch":"master","last_synced_at":"2025-02-05T14:54:03.629Z","etag":null,"topics":["deep-learning","deep-neural-networks","machine-learning","ml","recommendation","recommendation-algorithm","recommendation-system"],"latest_commit_sha":null,"homepage":"http://www.openrec.ai","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ylongqi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-11-29T16:04:40.000Z","updated_at":"2025-01-30T10:07:21.000Z","dependencies_parsed_at":"2024-11-13T20:44:10.657Z","dependency_job_id":null,"html_url":"https://github.com/ylongqi/openrec","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ylongqi%2Fopenrec","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ylongqi%2Fopenrec/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ylongqi%2Fopenrec/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ylongqi%2Fopenrec/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ylongqi","download_url":"https://codeload.github.com/ylongqi/openrec/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252753188,"owners_count":21798930,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deep-learning","deep-neural-networks","machine-learning","ml","recommendation","recommendation-algorithm","recommendation-system"],"created_at":"2024-08-02T23:00:54.615Z","updated_at":"2025-05-06T19:30:47.696Z","avatar_url":"https://github.com/ylongqi.png","language":"Python","funding_links":[],"categories":["Recommendation Systems","TensorFlow Implementations","Recommendation"],"sub_categories":["Tools"],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ca  href=\"http://www.openrec.ai/\" target=\"_blank\"\u003e\u003cimg src=\"https://github.com/ylongqi/openrec-web/blob/gh-pages/openrec.png?raw=true\" width=\"60%\"\u003e\u003c/a\u003e\u003cbr\u003e\u003cbr\u003e\n\u003c/div\u003e\n\n[**OpenRec**](http://www.openrec.ai/) is an open-source and modular library for neural network-inspired recommendation algorithms. Each recommender is modeled as a computational graph that consists of a structured ensemble of reusable modules connected through a set of well-defined interfaces. OpenRec is built to ease the process of extending and adapting state-of-the-art neural recommenders to heterogeneous recommendation scenarios, where different users', items', and contextual data sources need to be incorporated.\n\n**For the structure and the design philosophy of OpenRec, please refer to the following paper published in WSDM'18:** \n\n[Longqi Yang](https://ylongqi.com/), Eugene Bagdasaryan, Joshua Gruenstein, Cheng-Kang Hsieh, and [Deborah Estrin](http://destrin.smalldata.io/). 2018. [OpenRec: A Modular Framework for Extensible and Adaptable Recommendation Algorithms.](https://ylongqi.com/paper/YangBGHE18.pdf) In Proceedings of WSDM’18, February 5–9, 2018, Marina Del Rey, CA, USA.  \u003cimg src=\"https://github.com/christinatsan/openrec-demo/blob/gh-pages/ccimage.png?raw=true\" width=\"50\"\u003e\n\n**2020-02-17** OpenRec now uses Tensorflow 2.0 by default. Supports for Tensorflow 1.x are deprecated (all prior APIs have been moved to `openrec.tf1`). Currently supported recommendation algorithms include:\n* BPR (`openrec.tf2.recommenders.BPR`): Bayesian Personalized Ranking (Rendle et al., 2009)\n* WRMF (`openrec.tf2.recommenders.WRMF`): Weighted Regularized Matrix Factorization (Hu et al., 2008)\n* UCML (`openrec.tf2.recommenders.UCML`): Collaborative Metric Learning with uniformly sampled triplets (Hsieh et al., 2017)\n* GMF (`openrec.tf2.recommenders.GMF`): Generalized Matrix Factorization, a.k.a., Neural Collaborative Filtering (He et al., 2017)\n* DLRM (`openrec.tf2.recommenders.DLRM`): Deep Learning Recommendation Model, developed by Facebook (Naumov et al., 2019)\n\n**2019-07-12** OpenRec is being migrated to [Tensorflow 2.0](https://www.tensorflow.org/beta). Major changes to expect:\n\n- All OpenRec modules will be compatible with [tf.keras.layers.Layer](https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/keras/layers/Layer), so that they can be used seamlessly with any Tensorflow 2.0 code base.\n- All OpenRec models will be compatible with [tf.keras.Model](https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/keras/Model).\n- All input data pipelines will be compatible with [tf.data.Dataset](https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/data/Dataset) but are made much more friendly for recommendation models.\n- Minimizing boilerplate while keeping the modularity and adaptability of OpenRec.\n\nTo get things started, we introduce OpenRec (Tensorflow 2.0) implementations of [deep learning recommendation model (DLRM)](https://github.com/facebookresearch/dlrm). Check out `tf2_examples/dlrm_criteo.py`.\n\nTo experiment with these new features, do `pip3 install .` inside the repo and then `import openrec.tf2`. You need to have Tensorflow 2.0 installed (Follow the instructions [here](https://www.tensorflow.org/beta)).\n\nMore examples, tutorials and documents will be available soon. Check out `tf2_examples/`.\n\n**2018-08-31** Introducing new modular interfaces for OpenRec. Major changes:\n\n- A new paradigm for defining, extending, and building recommenders.\n  - Remove boilerplate class structure of recommenders.\n  - Introduce a macro-based recommender construction paradigm.\n  - Disentangle module construction and connection.\n  - Support module construction directly using Tensorflow and Keras APIs.\n- A more efficient and customizable pipeline for recommender training and evaluation.\n  - A new Dataset class for complex data input.\n  - A customizable ModelTrainer handling complex training/evaluation scenarios.\n  - Caching mechanism to speed up evaluation of complex recommenders.\n- Provide model training and evaluation examples for new interfaces.\n\nMore recommenders, examples, documents and tutorials are under development. Please checkout following events where we will present OpenRec new features:\n\n*Strata Data Conference 2018:* https://conferences.oreilly.com/strata/strata-ny/public/schedule/detail/68280\n\n*Recsys 2018:* https://recsys.acm.org/recsys18/tutorials/#content-tab-1-1-tab\n\n**To use original openrec, simply import `openrec.legacy`**.\n\n## Installation\n\nBefore installing OpenRec, please install [TensorFlow backend](https://www.tensorflow.org/install/) (GPU version is recommended). \n\n- **Install OpenRec from PyPI (recommended):**\n\n```sh\npip install openrec\n```\n\n- **Install OpenRec from source code:**\n\nFirst, clone OpenRec using `git`:\n\n```sh\ngit clone https://github.com/ylongqi/openrec\n```\n\nThen, `cd` to the OpenRec folder and run the install command:\n\n```sh\ncd openrec\npython setup.py install\n```\n\n## Dataset download\n\nAll datasets can be downloaded from Google drive [here](https://drive.google.com/drive/folders/1taJ91txiMAWBMUtezc_N5gaYuTEpvW_e?usp=sharing).\n\n## Get started\n\n* [OpenRec website](http://www.openrec.ai/)\n* [OpenRec legacy documents](http://openrec.readthedocs.io/en/latest/)\n* [OpenRec legacy tutorials](https://github.com/ylongqi/openrec/tree/master/legacy_tutorials)\n* [OpenRec legacy examples](https://github.com/ylongqi/openrec/tree/master/legacy_examples)\n\n## How to cite\n\n```\n@inproceedings{yang2018openrec,\n  title={OpenRec: A Modular Framework for Extensible and Adaptable Recommendation Algorithms},\n  author={Yang, Longqi and Bagdasaryan, Eugene and Gruenstein, Joshua and Hsieh, Cheng-Kang and Estrin, Deborah},\n  booktitle={Proceedings of the Eleventh ACM International Conference on Web Search and Data Mining},\n  year={2018},\n  organization={ACM}\n}\n```\n\n## License\n\n[Apache License 2.0](LICENSE)\n\n## Funders\n\u003cdiv\u003e\n  \u003cimg src=\"https://github.com/ylongqi/openrec-web/blob/gh-pages/imgs/funderlogonew.png?raw=true\" width=\"20%\"\u003e\u003cbr\u003e\u003cbr\u003e\n\u003c/div\u003e\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fylongqi%2Fopenrec","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fylongqi%2Fopenrec","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fylongqi%2Fopenrec/lists"}