From 49bc7d0d68e9e3137a0073b1fc27b7559a414d04 Mon Sep 17 00:00:00 2001 From: darrylong Date: Fri, 7 Jun 2024 16:10:31 +0800 Subject: [PATCH 1/5] Added static page for model viewing and filtering --- docs/source/_static/models/data.js | 348 +++++++++++++++++++++++++ docs/source/_static/models/models.html | 67 +++++ docs/source/index.rst | 6 + 3 files changed, 421 insertions(+) create mode 100644 docs/source/_static/models/data.js create mode 100644 docs/source/_static/models/models.html diff --git a/docs/source/_static/models/data.js b/docs/source/_static/models/data.js new file mode 100644 index 000000000..de3897070 --- /dev/null +++ b/docs/source/_static/models/data.js @@ -0,0 +1,348 @@ +var data = [ + { + "year": "", + "name": "Online Indexable Bayesian Personalized Ranking (Online IBPR)", + "link": "cornac/models/online_ibpr", + "paper": "http://www.hadylauw.com/publications/cikm17a.pdf", + "type": "Collaborative Filtering", + "requirements": "cornac/models/online_ibpr/requirements.txt", + "platform": "CPU / GPU", + "quick-start": "examples/ibpr_example.py", + "deep-dive": "https://github.com/PreferredAI/tutorials/blob/master/recommender-systems/08_retrieval.ipynb" + }, + { + "year": "", + "name": "Visual Matrix Factorization (VMF)", + "link": "cornac/models/vmf", + "paper": "https://dsail.kaist.ac.kr/files/WWW17.pdf", + "type": "Content-Based / Image", + "requirements": "cornac/models/vmf/requirements.txt", + "platform": "CPU / GPU", + "quick-start": "examples/vmf_clothing.py" + }, + { + "year": "2016", + "name": "Collaborative Deep Ranking (CDR)", + "link": "cornac/models/cdr", + "paper": "http://inpluslab.com/chenliang/homepagefiles/paper/hao-pakdd2016.pdf", + "type": "Content-Based / Text", + "requirements": "cornac/models/cdr/requirements.txt", + "platform": "CPU / GPU", + "quick-start": "examples/cdr_example.py" + }, + { + "year": "", + "name": "Collaborative Ordinal Embedding (COE)", + "link": "cornac/models/coe", + "paper": "http://www.hadylauw.com/publications/sdm16.pdf", + "type": "Collaborative Filtering", + "requirements": "cornac/models/coe/requirements.txt", + "platform": "CPU / GPU" + }, + { + "year": "", + "name": "Convolutional Matrix Factorization (ConvMF)", + "link": "cornac/models/conv_mf", + "paper": "http://uclab.khu.ac.kr/resources/publication/C_351.pdf", + "type": "Content-Based / Text", + "requirements": "cornac/models/conv_mf/requirements.txt", + "platform": "CPU / GPU", + "quick-start": "examples/conv_mf_example.py", + "deep-dive": "https://github.com/PreferredAI/tutorials/blob/master/recommender-systems/09_deep_learning.ipynb" + }, + { + "year": "", + "name": "Learning to Rank Features for Recommendation over Multiple Categories (LRPPM)", + "link": "cornac/models/lrppm", + "paper": "https://www.yongfeng.me/attach/sigir16-chen.pdf", + "type": "Explainable", + "requirements": "", + "platform": "CPU", + "quick-start": "examples/lrppm_example.py" + }, + { + "year": "", + "name": "Session-based Recommendations With Recurrent Neural Networks (GRU4Rec)", + "link": "cornac/models/gru4rec", + "paper": "https://arxiv.org/pdf/1511.06939.pdf", + "type": "Next-Item", + "requirements": "cornac/models/gru4rec/requirements.txt", + "platform": "CPU / GPU", + "quick-start": "examples/gru4rec_yoochoose.py" + }, + { + "year": "", + "name": "Spherical K-means (SKM)", + "link": "cornac/models/skm", + "paper": "https://www.sciencedirect.com/science/article/pii/S092523121501509X", + "type": "Collaborative Filtering", + "requirements": "", + "platform": "CPU", + "quick-start": "examples/skm_movielens.py" + }, + { + "year": "", + "name": "Visual Bayesian Personalized Ranking (VBPR)", + "link": "cornac/models/vbpr", + "paper": "https://arxiv.org/pdf/1510.01784.pdf", + "type": "Content-Based / Image", + "requirements": "cornac/models/vbpr/requirements.txt", + "platform": "CPU / GPU", + "quick-start": "examples/vbpr_tradesy.py", + "cross-modality": "tutorials/vbpr_text.ipynb", + "deep-dive": "https://github.com/PreferredAI/tutorials/blob/master/recommender-systems/05_multimodality.ipynb" + }, + { + "year": "2015", + "name": "Collaborative Deep Learning (CDL)", + "link": "cornac/models/cdl", + "paper": "https://arxiv.org/pdf/1409.2944.pdf", + "type": "Content-Based / Text", + "requirements": "cornac/models/cdl/requirements.txt", + "platform": "CPU / GPU", + "quick-start": "examples/cdl_example.py", + "deep-dive": "https://github.com/lgabs/cornac/blob/luan/describe-gpu-supported-models-readme/tutorials/working_with_auxiliary_data.md" + }, + { + "year": "", + "name": "Hierarchical Poisson Factorization (HPF)", + "link": "cornac/models/hpf", + "paper": "http://jakehofman.com/inprint/poisson_recs.pdf", + "type": "Collaborative Filtering", + "requirements": "", + "platform": "CPU", + "quick-start": "examples/hpf_movielens.py" + }, + { + "year": "", + "name": "TriRank: Review-aware Explainable Recommendation by Modeling Aspects", + "link": "cornac/models/trirank", + "paper": "https://wing.comp.nus.edu.sg/wp-content/uploads/Publications/PDF/TriRank-%20Review-aware%20Explainable%20Recommendation%20by%20Modeling%20Aspects.pdf", + "type": "Explainable", + "requirements": "", + "platform": "CPU", + "quick-start": "examples/trirank_example.py" + }, + { + "year": "2014", + "name": "Explicit Factor Model (EFM)", + "link": "cornac/models/efm", + "paper": "https://www.yongfeng.me/attach/efm-zhang.pdf", + "type": "Explainable", + "requirements": "", + "platform": "CPU", + "quick-start": "examples/efm_example.py", + "deep-dive": "https://github.com/PreferredAI/tutorials/blob/master/recommender-systems/07_explanations.ipynb" + }, + { + "year": "", + "name": "Social Bayesian Personalized Ranking (SBPR)", + "link": "cornac/models/sbpr", + "paper": "https://cseweb.ucsd.edu/~jmcauley/pdfs/cikm14.pdf", + "type": "Content-Based / Social", + "requirements": "", + "platform": "CPU", + "quick-start": "examples/sbpr_epinions.py" + }, + { + "year": "2013", + "name": "Hidden Factors and Hidden Topics (HFT)", + "link": "cornac/models/hft", + "paper": "https://cs.stanford.edu/people/jure/pubs/reviews-recsys13.pdf", + "type": "Content-Based / Text", + "requirements": "", + "platform": "CPU", + "quick-start": "examples/hft_example.py" + }, + { + "year": "2012", + "name": "Weighted Bayesian Personalized Ranking (WBPR)", + "link": "cornac/models/bpr", + "paper": "http://proceedings.mlr.press/v18/gantner12a/gantner12a.pdf", + "type": "Collaborative Filtering", + "requirements": "", + "platform": "CPU", + "quick-start": "examples/bpr_netflix.py" + }, + { + "year": "2011", + "name": "Collaborative Topic Regression (CTR)", + "link": "cornac/models/ctr", + "paper": "http://www.cs.columbia.edu/~blei/papers/WangBlei2011.pdf", + "type": "Content-Based / Text", + "requirements": "", + "platform": "CPU", + "quick-start": "examples/ctr_example_citeulike.py", + "deep-dive": "https://github.com/PreferredAI/tutorials/blob/master/recommender-systems/05_multimodality.ipynb" + }, + { + "year": "Earlier", + "name": "Baseline Only", + "link": "cornac/models/baseline_only", + "paper": "http://courses.ischool.berkeley.edu/i290-dm/s11/SECURE/a1-koren.pdf", + "type": "Baseline", + "requirements": "", + "platform": "CPU", + "quick-start": "examples/svd_example.py" + }, + { + "year": "", + "name": "Bayesian Personalized Ranking (BPR)", + "link": "cornac/models/bpr", + "paper": "https://arxiv.org/ftp/arxiv/papers/1205/1205.2618.pdf", + "type": "Collaborative Filtering", + "requirements": "", + "platform": "CPU", + "quick-start": "examples/bpr_netflix.py", + "deep-dive": "https://github.com/recommenders-team/recommenders/blob/main/examples/02_model_collaborative_filtering/cornac_bpr_deep_dive.ipynb" + }, + { + "year": "", + "name": "Factorization Machines (FM)", + "link": "cornac/models/fm", + "paper": "https://www.csie.ntu.edu.tw/~b97053/paper/Factorization%20Machines%20with%20libFM.pdf", + "type": "Collaborative Filtering / Content-Based", + "requirements": "Linux, CPU", + "platform": "", + "quick-start": "examples/fm_example.py", + "deep-dive": "https://github.com/PreferredAI/tutorials/blob/master/recommender-systems/06_contextual_awareness.ipynb" + }, + { + "year": "", + "name": "Global Average (GlobalAvg)", + "link": "cornac/models/global_avg", + "paper": "https://datajobs.com/data-science-repo/Recommender-Systems-[Netflix].pdf", + "type": "Baseline", + "requirements": "", + "platform": "CPU", + "quick-start": "examples/biased_mf.py" + }, + { + "year": "", + "name": "Global Personalized Top Frequent (GPTop)", + "link": "cornac/models/gp_top", + "paper": "https://dl.acm.org/doi/pdf/10.1145/3587153", + "type": "Next-Basket", + "requirements": "", + "platform": "CPU", + "quick-start": "examples/gp_top_tafeng.py" + }, + { + "year": "", + "name": "Item K-Nearest-Neighbors (ItemKNN)", + "link": "cornac/models/knn", + "paper": "https://dl.acm.org/doi/pdf/10.1145/371920.372071", + "type": "Neighborhood-Based", + "requirements": "", + "platform": "CPU", + "quick-start": "examples/knn_movielens.py", + "deep-dive": "https://github.com/PreferredAI/tutorials/blob/master/recommender-systems/02_neighborhood.ipynb" + }, + { + "year": "", + "name": "Matrix Factorization (MF)", + "link": "cornac/models/mf", + "paper": "https://datajobs.com/data-science-repo/Recommender-Systems-[Netflix].pdf", + "type": "Collaborative Filtering", + "requirements": "", + "platform": "CPU / GPU", + "quick-start": "examples/biased_mf.py", + "pre-split-data": "examples/given_data.py", + "deep-dive": "https://github.com/PreferredAI/tutorials/blob/master/recommender-systems/03_matrix_factorization.ipynb" + }, + { + "year": "", + "name": "Maximum Margin Matrix Factorization (MMMF)", + "link": "cornac/models/mmmf", + "paper": "https://link.springer.com/content/pdf/10.1007/s10994-008-5073-7.pdf", + "type": "Collaborative Filtering", + "requirements": "", + "platform": "CPU", + "quick-start": "examples/mmmf_exp.py" + }, + { + "year": "", + "name": "Most Popular (MostPop)", + "link": "cornac/models/most_pop", + "paper": "https://arxiv.org/ftp/arxiv/papers/1205/1205.2618.pdf", + "type": "Baseline", + "requirements": "", + "platform": "CPU", + "quick-start": "examples/bpr_netflix.py" + }, + { + "year": "", + "name": "Non-negative Matrix Factorization (NMF)", + "link": "cornac/models/nmf", + "paper": "http://papers.nips.cc/paper/1861-algorithms-for-non-negative-matrix-factorization.pdf", + "type": "Collaborative Filtering", + "requirements": "", + "platform": "CPU", + "quick-start": "examples/nmf_example.py", + "deep-dive": "https://github.com/PreferredAI/tutorials/blob/master/recommender-systems/03_matrix_factorization.ipynb" + }, + { + "year": "", + "name": "Probabilistic Matrix Factorization (PMF)", + "link": "cornac/models/pmf", + "paper": "https://papers.nips.cc/paper/3208-probabilistic-matrix-factorization.pdf", + "type": "Collaborative Filtering", + "requirements": "", + "platform": "CPU", + "quick-start": "examples/pmf_ratio.py" + }, + { + "year": "", + "name": "Session Popular (SPop)", + "link": "cornac/models/spop", + "paper": "https://arxiv.org/pdf/1511.06939.pdf", + "type": "Next-Item / Baseline", + "requirements": "", + "platform": "CPU", + "quick-start": "examples/spop_yoochoose.py" + }, + { + "year": "", + "name": "Singular Value Decomposition (SVD)", + "link": "cornac/models/svd", + "paper": "https://people.engr.tamu.edu/huangrh/Spring16/papers_course/matrix_factorization.pdf", + "type": "Collaborative Filtering", + "requirements": "", + "platform": "CPU", + "quick-start": "examples/svd_example.py", + "deep-dive": "https://github.com/PreferredAI/tutorials/blob/master/recommender-systems/03_matrix_factorization.ipynb" + }, + { + "year": "", + "name": "Social Recommendation using PMF (SoRec)", + "link": "cornac/models/sorec", + "paper": "http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.304.2464&rep=rep1&type=pdf", + "type": "Content-Based / Social", + "requirements": "", + "platform": "CPU", + "quick-start": "examples/sorec_filmtrust.py", + "deep-dive": "https://github.com/PreferredAI/tutorials/blob/master/recommender-systems/05_multimodality.ipynb" + }, + { + "year": "", + "name": "User K-Nearest-Neighbors (UserKNN)", + "link": "cornac/models/knn", + "paper": "https://arxiv.org/pdf/1301.7363.pdf", + "type": "Neighborhood-Based", + "requirements": "", + "platform": "CPU", + "quick-start": "examples/knn_movielens.py", + "deep-dive": "https://github.com/PreferredAI/tutorials/blob/master/recommender-systems/02_neighborhood.ipynb" + }, + { + "year": "", + "name": "Weighted Matrix Factorization (WMF)", + "link": "cornac/models/wmf", + "paper": "http://yifanhu.net/PUB/cf.pdf", + "type": "Collaborative Filtering", + "requirements": "cornac/models/wmf/requirements.txt", + "platform": "CPU / GPU", + "quick-start": "examples/wmf_example.py", + "deep-dive": "https://github.com/PreferredAI/tutorials/blob/master/recommender-systems/04_implicit_feedback.ipynb" + } +]; \ No newline at end of file diff --git a/docs/source/_static/models/models.html b/docs/source/_static/models/models.html new file mode 100644 index 000000000..6e30a18d6 --- /dev/null +++ b/docs/source/_static/models/models.html @@ -0,0 +1,67 @@ + + + + + +
+ + + + + + + + +
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/docs/source/index.rst b/docs/source/index.rst index b0f632e1f..6ab136771 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -114,3 +114,9 @@ Quick Links :click-parent: Contributor's Guide + +Models Available +^^^^^^^^^^^^^^^^ + +.. raw:: html + :file: _static/models/models.html \ No newline at end of file From 53cc58b64b7fcef72542635064e0cf81822b15a9 Mon Sep 17 00:00:00 2001 From: darrylong Date: Fri, 14 Jun 2024 16:02:18 +0800 Subject: [PATCH 2/5] Update model json data --- docs/source/_static/models/data.js | 1076 ++++++++++++++++++++-------- 1 file changed, 766 insertions(+), 310 deletions(-) diff --git a/docs/source/_static/models/data.js b/docs/source/_static/models/data.js index de3897070..678a72bb0 100644 --- a/docs/source/_static/models/data.js +++ b/docs/source/_static/models/data.js @@ -1,348 +1,804 @@ var data = [ { - "year": "", - "name": "Online Indexable Bayesian Personalized Ranking (Online IBPR)", - "link": "cornac/models/online_ibpr", + "Year": "2024", + "Type": "Hybrid / Sentiment / Explainable", + "Name": "Hypergraphs with Attention on Reviews (HypAR)", + "Link": "cornac/models/hypar", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.hypar.recom_hypar", + "paper": "https://doi.org/10.1007/978-3-031-56027-9_14", + "PyTorch": true, + "TensorFlow": false, + "packages": [ + "cornac.models.HypAR" + ] + }, + { + "Year": "2022", + "Type": "Content-Based / Text & Image", + "Name": "Disentangled Multimodal Representation Learning for Recommendation (DMRL)", + "Link": "cornac/models/dmrl", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.dmrl.recom_dmrl", + "paper": "https://arxiv.org/pdf/2203.05406.pdf", + "PyTorch": true, + "TensorFlow": false, + "packages": [ + "cornac.models.DMRL" + ] + }, + { + "Year": "2021", + "Type": "Collaborative Filtering / Content-Based", + "Name": "Bilateral Variational Autoencoder for Collaborative Filtering (BiVAECF)", + "Link": "cornac/models/bivaecf", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.bivaecf.recom_bivaecf", + "paper": "https://dl.acm.org/doi/pdf/10.1145/3437963.3441759", + "PyTorch": true, + "TensorFlow": false, + "packages": [ + "cornac.models.BiVAECF" + ] + }, + { + "Year": "2021", + "Type": "Content-Based / Image", + "Name": "Causal Inference for Visual Debiasing in Visually-Aware Recommendation (CausalRec)", + "Link": "cornac/models/causalrec", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.causalrec.recom_causalrec", + "paper": "https://arxiv.org/abs/2107.02390", + "PyTorch": true, + "TensorFlow": false, + "packages": [ + "cornac.models.CausalRec" + ] + }, + { + "Year": "2021", + "Type": "Explainable", + "Name": "Explainable Recommendation with Comparative Constraints on Product Aspects (ComparER)", + "Link": "cornac/models/comparer", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.comparer.recom_comparer_sub", + "paper": "https://dl.acm.org/doi/pdf/10.1145/3437963.3441754", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.ComparERSub", + "cornac.models.ComparERObj" + ] + }, + { + "Year": "2020", + "Type": "Content-Based / Image", + "Name": "Adversarial Multimedia Recommendation (AMR)", + "Link": "cornac/models/amr", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.amr.recom_amr", + "paper": "https://ieeexplore.ieee.org/document/8618394", + "PyTorch": true, + "TensorFlow": false, + "packages": [ + "cornac.models.AMR" + ] + }, + { + "Year": "2020", + "Type": "Content-Based / Text", + "Name": "Hybrid Deep Representation Learning of Ratings and Reviews (HRDR)", + "Link": "cornac/models/hrdr", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.hrdr.recom_hrdr", + "paper": "https://www.sciencedirect.com/science/article/abs/pii/S0925231219313207", + "PyTorch": false, + "TensorFlow": true, + "packages": [ + "cornac.models.HRDR" + ] + }, + { + "Year": "2020", + "Type": "Collaborative Filtering", + "Name": "LightGCN: Simplifying and Powering Graph Convolution Network", + "Link": "cornac/models/lightgcn", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.lightgcn.recom_lightgcn", + "paper": "https://arxiv.org/pdf/2002.02126.pdf", + "PyTorch": true, + "TensorFlow": false, + "packages": [ + "cornac.models.LightGCN" + ] + }, + { + "Year": "2020", + "Type": "Next-Basket", + "Name": "Predicting Temporal Sets with Deep Neural Networks (DNNTSP)", + "Link": "cornac/models/dnntsp", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.dnntsp.recom_dnntsp", + "paper": "https://arxiv.org/pdf/2006.11483.pdf", + "PyTorch": true, + "TensorFlow": false, + "packages": [ + "cornac.models.DNNTSP" + ] + }, + { + "Year": "2020", + "Type": "Next-Basket", + "Name": "Recency Aware Collaborative Filtering (UPCF)", + "Link": "cornac/models/upcf", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.upcf.recom_upcf", + "paper": "https://dl.acm.org/doi/abs/10.1145/3340631.3394850", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.UPCF" + ] + }, + { + "Year": "2020", + "Type": "Next-Basket", + "Name": "Temporal-Item-Frequency-based User-KNN (TIFUKNN)", + "Link": "cornac/models/tifuknn", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.tifuknn.recom_tifuknn", + "paper": "https://arxiv.org/pdf/2006.00556.pdf", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.TIFUKNN" + ] + }, + { + "Year": "2020", + "Type": "Collaborative Filtering", + "Name": "Variational Autoencoder for Top-N Recommendations (RecVAE)", + "Link": "cornac/models/recvae", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.recvae.recom_recvae", + "paper": "https://doi.org/10.1145/3336191.3371831", + "PyTorch": true, + "TensorFlow": false, + "packages": [ + "cornac.models.RecVAE" + ] + }, + { + "Year": "2019", + "Type": "Next-Basket", + "Name": "Correlation-Sensitive Next-Basket Recommendation (Beacon)", + "Link": "cornac/models/beacon", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#correlation-sensitive-next-basket-recommendation-beacon", + "paper": "https://www.ijcai.org/proceedings/2019/0389.pdf", + "PyTorch": false, + "TensorFlow": true, + "packages": [ + "cornac.models.Beacon" + ] + }, + { + "Year": "2019", + "Type": "Collaborative Filtering", + "Name": "Embarrassingly Shallow Autoencoders for Sparse Data (EASE\u1d3f)", + "Link": "cornac/models/ease", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.ease.recom_ease", + "paper": "https://arxiv.org/pdf/1905.03375.pdf", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.EASE" + ] + }, + { + "Year": "2019", + "Type": "Collaborative Filtering", + "Name": "Neural Graph Collaborative Filtering (NGCF)", + "Link": "cornac/models/ngcf", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.ngcf.recom_ngcf", + "paper": "https://arxiv.org/pdf/1905.08108.pdf", + "PyTorch": true, + "TensorFlow": false, + "packages": [ + "cornac.models.NGCF" + ] + }, + { + "Year": "2018", + "Type": "Content-Based / Graph", + "Name": "Collaborative Context Poisson Factorization (C2PF)", + "Link": "cornac/models/c2pf", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.c2pf.recom_c2pf", + "paper": "https://www.ijcai.org/proceedings/2018/0370.pdf", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.C2PF" + ] + }, + { + "Year": "2018", + "Type": "Collaborative Filtering", + "Name": "Graph Convolutional Matrix Completion (GCMC)", + "Link": "cornac/models/gcmc", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.gcmc.recom_gcmc", + "paper": "https://www.kdd.org/kdd2018/files/deep-learning-day/DLDay18_paper_32.pdf", + "PyTorch": true, + "TensorFlow": false, + "packages": [ + "cornac.models.GCMC" + ] + }, + { + "Year": "2018", + "Type": "Explainable", + "Name": "Multi-Task Explainable Recommendation (MTER)", + "Link": "cornac/models/mter", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.mter.recom_mter", + "paper": "https://arxiv.org/pdf/1806.03568.pdf", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.MTER" + ] + }, + { + "Year": "2018", + "Type": "Explainable / Content-Based", + "Name": "Neural Attention Rating Regression with Review-level Explanations (NARRE)", + "Link": "cornac/models/narre", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.narre.recom_narre", + "paper": "http://www.thuir.cn/group/~YQLiu/publications/WWW2018_CC.pdf", + "PyTorch": false, + "TensorFlow": true, + "packages": [ + "cornac.models.NARRE" + ] + }, + { + "Year": "2018", + "Type": "Content-Based / Graph", + "Name": "Probabilistic Collaborative Representation Learning (PCRL)", + "Link": "cornac/models/pcrl", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.pcrl.recom_pcrl", + "paper": "http://www.hadylauw.com/publications/uai18.pdf", + "PyTorch": false, + "TensorFlow": true, + "packages": [ + "cornac.models.PCRL" + ] + }, + { + "Year": "2018", + "Type": "Collaborative Filtering", + "Name": "Variational Autoencoder for Collaborative Filtering (VAECF)", + "Link": "cornac/models/vaecf", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.vaecf.recom_vaecf", + "paper": "https://arxiv.org/pdf/1802.05814.pdf", + "PyTorch": true, + "TensorFlow": false, + "packages": [ + "cornac.models.VAECF" + ] + }, + { + "Year": "2017", + "Type": "Content-Based / Text", + "Name": "Collaborative Variational Autoencoder (CVAE)", + "Link": "cornac/models/cvae", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.cvae.recom_cvae", + "paper": "http://eelxpeng.github.io/assets/paper/Collaborative_Variational_Autoencoder.pdf", + "PyTorch": false, + "TensorFlow": true, + "packages": [ + "cornac.models.CVAE" + ] + }, + { + "Year": "2017", + "Type": "Content-Based / Text", + "Name": "Conditional Variational Autoencoder for Collaborative Filtering (CVAECF)", + "Link": "cornac/models/cvaecf", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.cvaecf.recom_cvaecf", + "paper": "https://dl.acm.org/doi/10.1145/3132847.3132972", + "PyTorch": true, + "TensorFlow": false, + "packages": [ + "cornac.models.CVAECF" + ] + }, + { + "Year": "2017", + "Type": "Collaborative Filtering", + "Name": "Generalized Matrix Factorization (GMF)", + "Link": "cornac/models/ncf", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.ncf.recom_gmf", + "paper": "https://arxiv.org/pdf/1708.05031.pdf", + "PyTorch": true, + "TensorFlow": true, + "packages": [ + "cornac.models.GMF", + "cornac.models.MLP", + "cornac.models.NeuMF" + ] + }, + { + "Year": "2017", + "Type": "Collaborative Filtering", + "Name": "Indexable Bayesian Personalized Ranking (IBPR)", + "Link": "cornac/models/ibpr", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.ibpr.recom_ibpr", "paper": "http://www.hadylauw.com/publications/cikm17a.pdf", - "type": "Collaborative Filtering", - "requirements": "cornac/models/online_ibpr/requirements.txt", - "platform": "CPU / GPU", - "quick-start": "examples/ibpr_example.py", - "deep-dive": "https://github.com/PreferredAI/tutorials/blob/master/recommender-systems/08_retrieval.ipynb" - }, - { - "year": "", - "name": "Visual Matrix Factorization (VMF)", - "link": "cornac/models/vmf", + "PyTorch": true, + "TensorFlow": false, + "packages": [ + "cornac.models.IBPR" + ] + }, + { + "Year": "2017", + "Type": "Content-Based / Graph", + "Name": "Matrix Co-Factorization (MCF)", + "Link": "cornac/models/mcf", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.mcf.recom_mcf", "paper": "https://dsail.kaist.ac.kr/files/WWW17.pdf", - "type": "Content-Based / Image", - "requirements": "cornac/models/vmf/requirements.txt", - "platform": "CPU / GPU", - "quick-start": "examples/vmf_clothing.py" - }, - { - "year": "2016", - "name": "Collaborative Deep Ranking (CDR)", - "link": "cornac/models/cdr", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.MCF" + ] + }, + { + "Year": "2017", + "Type": "Collaborative Filtering", + "Name": "Multi-Layer Perceptron (MLP)", + "Link": "cornac/models/ncf", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.ncf.recom_mlp", + "paper": "https://arxiv.org/pdf/1708.05031.pdf", + "PyTorch": true, + "TensorFlow": true, + "packages": [ + "cornac.models.GMF", + "cornac.models.MLP", + "cornac.models.NeuMF" + ] + }, + { + "Year": "2017", + "Type": "Collaborative Filtering", + "Name": "Neural Matrix Factorization (NeuMF) / Neural Collaborative Filtering (NCF)", + "Link": "cornac/models/ncf", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.ncf.recom_neumf", + "paper": "https://arxiv.org/pdf/1708.05031.pdf", + "PyTorch": true, + "TensorFlow": true, + "packages": [ + "cornac.models.GMF", + "cornac.models.MLP", + "cornac.models.NeuMF" + ] + }, + { + "Year": "2017", + "Type": "Collaborative Filtering", + "Name": "Online Indexable Bayesian Personalized Ranking (Online IBPR)", + "Link": "cornac/models/online_ibpr", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.online_ibpr.recom_online_ibpr", + "paper": "http://www.hadylauw.com/publications/cikm17a.pdf", + "PyTorch": true, + "TensorFlow": false, + "packages": [ + "cornac.models.OnlineIBPR" + ] + }, + { + "Year": "2017", + "Type": "Content-Based / Image", + "Name": "Visual Matrix Factorization (VMF)", + "Link": "cornac/models/vmf", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.vmf.recom_vmf", + "paper": "https://dsail.kaist.ac.kr/files/WWW17.pdf", + "PyTorch": true, + "TensorFlow": false, + "packages": [ + "cornac.models.VMF" + ] + }, + { + "Year": "2016", + "Type": "Content-Based / Text", + "Name": "Collaborative Deep Ranking (CDR)", + "Link": "cornac/models/cdr", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.cdr.recom_cdr", "paper": "http://inpluslab.com/chenliang/homepagefiles/paper/hao-pakdd2016.pdf", - "type": "Content-Based / Text", - "requirements": "cornac/models/cdr/requirements.txt", - "platform": "CPU / GPU", - "quick-start": "examples/cdr_example.py" - }, - { - "year": "", - "name": "Collaborative Ordinal Embedding (COE)", - "link": "cornac/models/coe", + "PyTorch": false, + "TensorFlow": true, + "packages": [ + "cornac.models.CDR" + ] + }, + { + "Year": "2016", + "Type": "Collaborative Filtering", + "Name": "Collaborative Ordinal Embedding (COE)", + "Link": "cornac/models/coe", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.coe.recom_coe", "paper": "http://www.hadylauw.com/publications/sdm16.pdf", - "type": "Collaborative Filtering", - "requirements": "cornac/models/coe/requirements.txt", - "platform": "CPU / GPU" - }, - { - "year": "", - "name": "Convolutional Matrix Factorization (ConvMF)", - "link": "cornac/models/conv_mf", + "PyTorch": true, + "TensorFlow": false, + "packages": [ + "cornac.models.COE" + ] + }, + { + "Year": "2016", + "Type": "Content-Based / Text", + "Name": "Convolutional Matrix Factorization (ConvMF)", + "Link": "cornac/models/conv_mf", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.conv_mf.recom_convmf", "paper": "http://uclab.khu.ac.kr/resources/publication/C_351.pdf", - "type": "Content-Based / Text", - "requirements": "cornac/models/conv_mf/requirements.txt", - "platform": "CPU / GPU", - "quick-start": "examples/conv_mf_example.py", - "deep-dive": "https://github.com/PreferredAI/tutorials/blob/master/recommender-systems/09_deep_learning.ipynb" - }, - { - "year": "", - "name": "Learning to Rank Features for Recommendation over Multiple Categories (LRPPM)", - "link": "cornac/models/lrppm", + "PyTorch": false, + "TensorFlow": true, + "packages": [ + "cornac.models.ConvMF" + ] + }, + { + "Year": "2016", + "Type": "Explainable", + "Name": "Learning to Rank Features for Recommendation over Multiple Categories (LRPPM)", + "Link": "cornac/models/lrppm", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#learn-to-rank-user-preferences-based-on-phrase-level-sentiment-analysis-across-multiple-categories-lrppm", "paper": "https://www.yongfeng.me/attach/sigir16-chen.pdf", - "type": "Explainable", - "requirements": "", - "platform": "CPU", - "quick-start": "examples/lrppm_example.py" - }, - { - "year": "", - "name": "Session-based Recommendations With Recurrent Neural Networks (GRU4Rec)", - "link": "cornac/models/gru4rec", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.LRPPM" + ] + }, + { + "Year": "2016", + "Type": "Next-Item", + "Name": "Session-based Recommendations With Recurrent Neural Networks (GRU4Rec)", + "Link": "cornac/models/gru4rec", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.gru4rec.recom_gru4rec", "paper": "https://arxiv.org/pdf/1511.06939.pdf", - "type": "Next-Item", - "requirements": "cornac/models/gru4rec/requirements.txt", - "platform": "CPU / GPU", - "quick-start": "examples/gru4rec_yoochoose.py" - }, - { - "year": "", - "name": "Spherical K-means (SKM)", - "link": "cornac/models/skm", + "PyTorch": true, + "TensorFlow": false, + "packages": [ + "cornac.models.GRU4Rec" + ] + }, + { + "Year": "2016", + "Type": "Collaborative Filtering", + "Name": "Spherical K-means (SKM)", + "Link": "cornac/models/skm", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.skm.recom_skmeans", "paper": "https://www.sciencedirect.com/science/article/pii/S092523121501509X", - "type": "Collaborative Filtering", - "requirements": "", - "platform": "CPU", - "quick-start": "examples/skm_movielens.py" - }, - { - "year": "", - "name": "Visual Bayesian Personalized Ranking (VBPR)", - "link": "cornac/models/vbpr", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.SKMeans" + ] + }, + { + "Year": "2016", + "Type": "Content-Based / Image", + "Name": "Visual Bayesian Personalized Ranking (VBPR)", + "Link": "cornac/models/vbpr", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.vbpr.recom_vbpr", "paper": "https://arxiv.org/pdf/1510.01784.pdf", - "type": "Content-Based / Image", - "requirements": "cornac/models/vbpr/requirements.txt", - "platform": "CPU / GPU", - "quick-start": "examples/vbpr_tradesy.py", - "cross-modality": "tutorials/vbpr_text.ipynb", - "deep-dive": "https://github.com/PreferredAI/tutorials/blob/master/recommender-systems/05_multimodality.ipynb" - }, - { - "year": "2015", - "name": "Collaborative Deep Learning (CDL)", - "link": "cornac/models/cdl", + "PyTorch": true, + "TensorFlow": false, + "packages": [ + "cornac.models.VBPR" + ] + }, + { + "Year": "2015", + "Type": "Content-Based / Text", + "Name": "Collaborative Deep Learning (CDL)", + "Link": "cornac/models/cdl", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.cdl.recom_cdl", "paper": "https://arxiv.org/pdf/1409.2944.pdf", - "type": "Content-Based / Text", - "requirements": "cornac/models/cdl/requirements.txt", - "platform": "CPU / GPU", - "quick-start": "examples/cdl_example.py", - "deep-dive": "https://github.com/lgabs/cornac/blob/luan/describe-gpu-supported-models-readme/tutorials/working_with_auxiliary_data.md" - }, - { - "year": "", - "name": "Hierarchical Poisson Factorization (HPF)", - "link": "cornac/models/hpf", + "PyTorch": false, + "TensorFlow": true, + "packages": [ + "cornac.models.CDL" + ] + }, + { + "Year": "2015", + "Type": "Collaborative Filtering", + "Name": "Hierarchical Poisson Factorization (HPF)", + "Link": "cornac/models/hpf", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.hpf.recom_hpf", "paper": "http://jakehofman.com/inprint/poisson_recs.pdf", - "type": "Collaborative Filtering", - "requirements": "", - "platform": "CPU", - "quick-start": "examples/hpf_movielens.py" - }, - { - "year": "", - "name": "TriRank: Review-aware Explainable Recommendation by Modeling Aspects", - "link": "cornac/models/trirank", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.HPF" + ] + }, + { + "Year": "2015", + "Type": "Explainable", + "Name": "TriRank: Review-aware Explainable Recommendation by Modeling Aspects", + "Link": "cornac/models/trirank", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.trirank.recom_trirank", "paper": "https://wing.comp.nus.edu.sg/wp-content/uploads/Publications/PDF/TriRank-%20Review-aware%20Explainable%20Recommendation%20by%20Modeling%20Aspects.pdf", - "type": "Explainable", - "requirements": "", - "platform": "CPU", - "quick-start": "examples/trirank_example.py" - }, - { - "year": "2014", - "name": "Explicit Factor Model (EFM)", - "link": "cornac/models/efm", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.TriRank" + ] + }, + { + "Year": "2014", + "Type": "Explainable", + "Name": "Explicit Factor Model (EFM)", + "Link": "cornac/models/efm", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.efm.recom_efm", "paper": "https://www.yongfeng.me/attach/efm-zhang.pdf", - "type": "Explainable", - "requirements": "", - "platform": "CPU", - "quick-start": "examples/efm_example.py", - "deep-dive": "https://github.com/PreferredAI/tutorials/blob/master/recommender-systems/07_explanations.ipynb" - }, - { - "year": "", - "name": "Social Bayesian Personalized Ranking (SBPR)", - "link": "cornac/models/sbpr", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.EFM" + ] + }, + { + "Year": "2014", + "Type": "Content-Based / Social", + "Name": "Social Bayesian Personalized Ranking (SBPR)", + "Link": "cornac/models/sbpr", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#social-bayesian-personalized-ranking-sbpr", "paper": "https://cseweb.ucsd.edu/~jmcauley/pdfs/cikm14.pdf", - "type": "Content-Based / Social", - "requirements": "", - "platform": "CPU", - "quick-start": "examples/sbpr_epinions.py" - }, - { - "year": "2013", - "name": "Hidden Factors and Hidden Topics (HFT)", - "link": "cornac/models/hft", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.SBPR" + ] + }, + { + "Year": "2013", + "Type": "Content-Based / Text", + "Name": "Hidden Factors and Hidden Topics (HFT)", + "Link": "cornac/models/hft", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.hft.recom_hft", "paper": "https://cs.stanford.edu/people/jure/pubs/reviews-recsys13.pdf", - "type": "Content-Based / Text", - "requirements": "", - "platform": "CPU", - "quick-start": "examples/hft_example.py" - }, - { - "year": "2012", - "name": "Weighted Bayesian Personalized Ranking (WBPR)", - "link": "cornac/models/bpr", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.HFT" + ] + }, + { + "Year": "2012", + "Type": "Collaborative Filtering", + "Name": "Weighted Bayesian Personalized Ranking (WBPR)", + "Link": "cornac/models/bpr", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#weighted-bayesian-personalized-ranking-wbpr", "paper": "http://proceedings.mlr.press/v18/gantner12a/gantner12a.pdf", - "type": "Collaborative Filtering", - "requirements": "", - "platform": "CPU", - "quick-start": "examples/bpr_netflix.py" - }, - { - "year": "2011", - "name": "Collaborative Topic Regression (CTR)", - "link": "cornac/models/ctr", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.BPR", + "cornac.models.WBPR" + ] + }, + { + "Year": "2011", + "Type": "Content-Based / Text", + "Name": "Collaborative Topic Regression (CTR)", + "Link": "cornac/models/ctr", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.ctr.recom_ctr", "paper": "http://www.cs.columbia.edu/~blei/papers/WangBlei2011.pdf", - "type": "Content-Based / Text", - "requirements": "", - "platform": "CPU", - "quick-start": "examples/ctr_example_citeulike.py", - "deep-dive": "https://github.com/PreferredAI/tutorials/blob/master/recommender-systems/05_multimodality.ipynb" - }, - { - "year": "Earlier", - "name": "Baseline Only", - "link": "cornac/models/baseline_only", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.CTR" + ] + }, + { + "Year": "Earlier", + "Type": "Baseline", + "Name": "Baseline Only", + "Link": "cornac/models/baseline_only", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#baseline-only", "paper": "http://courses.ischool.berkeley.edu/i290-dm/s11/SECURE/a1-koren.pdf", - "type": "Baseline", - "requirements": "", - "platform": "CPU", - "quick-start": "examples/svd_example.py" - }, - { - "year": "", - "name": "Bayesian Personalized Ranking (BPR)", - "link": "cornac/models/bpr", - "paper": "https://arxiv.org/ftp/arxiv/papers/1205/1205.2618.pdf", - "type": "Collaborative Filtering", - "requirements": "", - "platform": "CPU", - "quick-start": "examples/bpr_netflix.py", - "deep-dive": "https://github.com/recommenders-team/recommenders/blob/main/examples/02_model_collaborative_filtering/cornac_bpr_deep_dive.ipynb" - }, - { - "year": "", - "name": "Factorization Machines (FM)", - "link": "cornac/models/fm", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.BaselineOnly" + ] + }, + { + "Year": "Earlier", + "Type": "Collaborative Filtering", + "Name": "Bayesian Personalized Ranking (BPR)", + "Link": "cornac/models/bpr", + "docs": "https://arxiv.org/ftp/arxiv/papers/1205/1205.2618.pdf", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.BPR", + "cornac.models.WBPR" + ] + }, + { + "Year": "Earlier", + "Type": "Collaborative Filtering / Content-Based", + "Name": "Factorization Machines (FM)", + "Link": "cornac/models/fm", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#factorization-machines-fm", "paper": "https://www.csie.ntu.edu.tw/~b97053/paper/Factorization%20Machines%20with%20libFM.pdf", - "type": "Collaborative Filtering / Content-Based", - "requirements": "Linux, CPU", - "platform": "", - "quick-start": "examples/fm_example.py", - "deep-dive": "https://github.com/PreferredAI/tutorials/blob/master/recommender-systems/06_contextual_awareness.ipynb" - }, - { - "year": "", - "name": "Global Average (GlobalAvg)", - "link": "cornac/models/global_avg", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.FM" + ] + }, + { + "Year": "Earlier", + "Type": "Baseline", + "Name": "Global Average (GlobalAvg)", + "Link": "cornac/models/global_avg", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.global_avg.recom_global_avg", "paper": "https://datajobs.com/data-science-repo/Recommender-Systems-[Netflix].pdf", - "type": "Baseline", - "requirements": "", - "platform": "CPU", - "quick-start": "examples/biased_mf.py" + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.GlobalAvg" + ] }, { - "year": "", - "name": "Global Personalized Top Frequent (GPTop)", - "link": "cornac/models/gp_top", + "Year": "Earlier", + "Type": "Next-Basket", + "Name": "Global Personalized Top Frequent (GPTop)", + "Link": "cornac/models/gp_top", "paper": "https://dl.acm.org/doi/pdf/10.1145/3587153", - "type": "Next-Basket", - "requirements": "", - "platform": "CPU", - "quick-start": "examples/gp_top_tafeng.py" - }, - { - "year": "", - "name": "Item K-Nearest-Neighbors (ItemKNN)", - "link": "cornac/models/knn", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.GPTop" + ] + }, + { + "Year": "Earlier", + "Type": "Neighborhood-Based", + "Name": "Item K-Nearest-Neighbors (ItemKNN)", + "Link": "cornac/models/knn", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#item-k-nearest-neighbors-itemknn", "paper": "https://dl.acm.org/doi/pdf/10.1145/371920.372071", - "type": "Neighborhood-Based", - "requirements": "", - "platform": "CPU", - "quick-start": "examples/knn_movielens.py", - "deep-dive": "https://github.com/PreferredAI/tutorials/blob/master/recommender-systems/02_neighborhood.ipynb" - }, - { - "year": "", - "name": "Matrix Factorization (MF)", - "link": "cornac/models/mf", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.ItemKNN", + "cornac.models.UserKNN" + ] + }, + { + "Year": "Earlier", + "Type": "Collaborative Filtering", + "Name": "Matrix Factorization (MF)", + "Link": "cornac/models/mf", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.mf.recom_mf", "paper": "https://datajobs.com/data-science-repo/Recommender-Systems-[Netflix].pdf", - "type": "Collaborative Filtering", - "requirements": "", - "platform": "CPU / GPU", - "quick-start": "examples/biased_mf.py", - "pre-split-data": "examples/given_data.py", - "deep-dive": "https://github.com/PreferredAI/tutorials/blob/master/recommender-systems/03_matrix_factorization.ipynb" - }, - { - "year": "", - "name": "Maximum Margin Matrix Factorization (MMMF)", - "link": "cornac/models/mmmf", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.MF" + ] + }, + { + "Year": "Earlier", + "Type": "Collaborative Filtering", + "Name": "Maximum Margin Matrix Factorization (MMMF)", + "Link": "cornac/models/mmmf", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.mmmf.recom_mmmf", "paper": "https://link.springer.com/content/pdf/10.1007/s10994-008-5073-7.pdf", - "type": "Collaborative Filtering", - "requirements": "", - "platform": "CPU", - "quick-start": "examples/mmmf_exp.py" - }, - { - "year": "", - "name": "Most Popular (MostPop)", - "link": "cornac/models/most_pop", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.MMMF" + ] + }, + { + "Year": "Earlier", + "Type": "Baseline", + "Name": "Most Popular (MostPop)", + "Link": "cornac/models/most_pop", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.most_pop.recom_most_pop", "paper": "https://arxiv.org/ftp/arxiv/papers/1205/1205.2618.pdf", - "type": "Baseline", - "requirements": "", - "platform": "CPU", - "quick-start": "examples/bpr_netflix.py" - }, - { - "year": "", - "name": "Non-negative Matrix Factorization (NMF)", - "link": "cornac/models/nmf", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.MostPop" + ] + }, + { + "Year": "Earlier", + "Type": "Collaborative Filtering", + "Name": "Non-negative Matrix Factorization (NMF)", + "Link": "cornac/models/nmf", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.nmf.recom_nmf", "paper": "http://papers.nips.cc/paper/1861-algorithms-for-non-negative-matrix-factorization.pdf", - "type": "Collaborative Filtering", - "requirements": "", - "platform": "CPU", - "quick-start": "examples/nmf_example.py", - "deep-dive": "https://github.com/PreferredAI/tutorials/blob/master/recommender-systems/03_matrix_factorization.ipynb" - }, - { - "year": "", - "name": "Probabilistic Matrix Factorization (PMF)", - "link": "cornac/models/pmf", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.NMF" + ] + }, + { + "Year": "Earlier", + "Type": "Collaborative Filtering", + "Name": "Probabilistic Matrix Factorization (PMF)", + "Link": "cornac/models/pmf", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.pmf.recom_pmf", "paper": "https://papers.nips.cc/paper/3208-probabilistic-matrix-factorization.pdf", - "type": "Collaborative Filtering", - "requirements": "", - "platform": "CPU", - "quick-start": "examples/pmf_ratio.py" - }, - { - "year": "", - "name": "Session Popular (SPop)", - "link": "cornac/models/spop", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.PMF" + ] + }, + { + "Year": "Earlier", + "Type": "Next-Item / Baseline", + "Name": "Session Popular (SPop)", + "Link": "cornac/models/spop", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.spop.recom_spop", "paper": "https://arxiv.org/pdf/1511.06939.pdf", - "type": "Next-Item / Baseline", - "requirements": "", - "platform": "CPU", - "quick-start": "examples/spop_yoochoose.py" - }, - { - "year": "", - "name": "Singular Value Decomposition (SVD)", - "link": "cornac/models/svd", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.SPop" + ] + }, + { + "Year": "Earlier", + "Type": "Collaborative Filtering", + "Name": "Singular Value Decomposition (SVD)", + "Link": "cornac/models/svd", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.svd.recom_svd", "paper": "https://people.engr.tamu.edu/huangrh/Spring16/papers_course/matrix_factorization.pdf", - "type": "Collaborative Filtering", - "requirements": "", - "platform": "CPU", - "quick-start": "examples/svd_example.py", - "deep-dive": "https://github.com/PreferredAI/tutorials/blob/master/recommender-systems/03_matrix_factorization.ipynb" - }, - { - "year": "", - "name": "Social Recommendation using PMF (SoRec)", - "link": "cornac/models/sorec", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.SVD" + ] + }, + { + "Year": "Earlier", + "Type": "Content-Based / Social", + "Name": "Social Recommendation using PMF (SoRec)", + "Link": "cornac/models/sorec", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.sorec.recom_sorec", "paper": "http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.304.2464&rep=rep1&type=pdf", - "type": "Content-Based / Social", - "requirements": "", - "platform": "CPU", - "quick-start": "examples/sorec_filmtrust.py", - "deep-dive": "https://github.com/PreferredAI/tutorials/blob/master/recommender-systems/05_multimodality.ipynb" - }, - { - "year": "", - "name": "User K-Nearest-Neighbors (UserKNN)", - "link": "cornac/models/knn", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.SoRec" + ] + }, + { + "Year": "Earlier", + "Type": "Neighborhood-Based", + "Name": "User K-Nearest-Neighbors (UserKNN)", + "Link": "cornac/models/knn", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#user-k-nearest-neighbors-userknn", "paper": "https://arxiv.org/pdf/1301.7363.pdf", - "type": "Neighborhood-Based", - "requirements": "", - "platform": "CPU", - "quick-start": "examples/knn_movielens.py", - "deep-dive": "https://github.com/PreferredAI/tutorials/blob/master/recommender-systems/02_neighborhood.ipynb" - }, - { - "year": "", - "name": "Weighted Matrix Factorization (WMF)", - "link": "cornac/models/wmf", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.ItemKNN", + "cornac.models.UserKNN" + ] + }, + { + "Year": "Earlier", + "Type": "Collaborative Filtering", + "Name": "Weighted Matrix Factorization (WMF)", + "Link": "cornac/models/wmf", + "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.wmf.recom_wmf", "paper": "http://yifanhu.net/PUB/cf.pdf", - "type": "Collaborative Filtering", - "requirements": "cornac/models/wmf/requirements.txt", - "platform": "CPU / GPU", - "quick-start": "examples/wmf_example.py", - "deep-dive": "https://github.com/PreferredAI/tutorials/blob/master/recommender-systems/04_implicit_feedback.ipynb" + "PyTorch": false, + "TensorFlow": true, + "packages": [ + "cornac.models.WMF" + ] } ]; \ No newline at end of file From a62d66479dda18c66692259238c7618923e22ec5 Mon Sep 17 00:00:00 2001 From: darrylong Date: Fri, 14 Jun 2024 16:02:52 +0800 Subject: [PATCH 3/5] Update model js table --- docs/source/_static/models/models.html | 73 ++++++++++++++++++-------- 1 file changed, 52 insertions(+), 21 deletions(-) diff --git a/docs/source/_static/models/models.html b/docs/source/_static/models/models.html index 6e30a18d6..e478cd4c2 100644 --- a/docs/source/_static/models/models.html +++ b/docs/source/_static/models/models.html @@ -3,20 +3,23 @@ +

Filters

- - - - - - - - +
-
- +
+ + + + + + +
+
+
-
+
+
@@ -38,6 +41,22 @@ ); } + function filterModels(filter) { + gridApi.setColumnFilterModel("Type", { + type: "contains", + filter: filter, + }) + .then(() => { + gridApi.onFilterChanged(); + }); + } + + function clearFilters(){ + gridApi.setColumnFilterModel("Type", null) + .then(() => { + gridApi.onFilterChanged(); + }); + } // Grid Options: Contains all of the grid configurations const gridOptions = { @@ -45,22 +64,34 @@ rowData: data, // Columns to be displayed (Should match rowData properties) columnDefs: [ - { field: "name", headerName: "Model Name", flex: 4 }, - { field: "type", flex: 2 }, - { field: "year" }, - { field: "platform" }, - { field: "link", cellRenderer: params => LinkRenderer(github_url + params.value, "Source Code")}, - { field: "paper", cellRenderer: params => LinkRenderer(params.value, "Paper") }, - { field: "requirements", cellRenderer: params => LinkRenderer(github_url + params.value, "Requirements.txt") }, - // { field: "quick-start" }, - // { field: "deep-dive" } + { field: "Year" }, + { + field: "Name", + headerName: "Model Name (Hover over for package name)", + + flex: 4, + cellRenderer: params => LinkRenderer(params.data.docs, params.data.Name), + tooltipValueGetter: (params) => "Package Name: " + params.data.packages, + }, + { field: "Type", flex: 2 }, + { + field: "PyTorch", + headerName: "PyTorch", + cellRenderer: params => params.value ? "✅" : "❌", + }, + { + field: "TensorFlow", + headerName: "TensorFlow", + cellRenderer: params => params.value ? "✅" : "❌", + }, ], defaultColDef: { flex: 1, filter: true, + // floatingFilter: true, }, pagination: true, - paginationAutoPageSize: true, + paginationAutoPageSize: true }; // Create Grid: Create new grid within the #myGrid div, using the Grid Options object gridApi = agGrid.createGrid(document.querySelector("#grid"), gridOptions); From f4ceb9f4f6c144f159958cd2d84626431a6e5c91 Mon Sep 17 00:00:00 2001 From: darrylong Date: Fri, 14 Jun 2024 16:06:30 +0800 Subject: [PATCH 4/5] Add generate model json python file for js table --- docs/generate_model_js.py | 101 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 docs/generate_model_js.py diff --git a/docs/generate_model_js.py b/docs/generate_model_js.py new file mode 100644 index 000000000..ba894314e --- /dev/null +++ b/docs/generate_model_js.py @@ -0,0 +1,101 @@ +import json + + +def get_key_val(part): + key_index_start = part.index('[') + key_index_end = part.index(']') + val_index_start = part.rindex('(') + val_index_end = part.rindex(')') + + key = part[key_index_start + 1: key_index_end] + val = part[val_index_start + 1: val_index_end] + + return key, val + + +# Read the content from README.md +with open('../README.md', 'r') as file: + content = file.read() + +# Extract the relevant information from the content +models = [] +lines = content.split('\n') +lines = lines[lines.index('## Models') + 4: lines.index('## Resources') - 2] + +headers = [] +headers = lines[0].split('|')[1:-1] +headers = [header.strip() for header in headers] + +for line in lines[2:]: + parts = line.split('|')[1:-1] + parts = [part.strip() for part in parts] + model = dict(zip(headers, parts)) + models.append(model) + +year = None + +for model in models: + # handle empty years + if model["Year"] == "": + model["Year"] = year + else: + year = model["Year"] + + # handle model, docs and paper part + name_paper_str = model["Model and Paper"] + + for i, part in enumerate(name_paper_str.split(', ')): + key, val = get_key_val(part) + + if i == 0: + model["Name"] = key + model["Link"] = val + else: + model[key] = val + + # handle environment part + + env_part = model["Environment"].split(', ')[0] + + search_dict = { + "PyTorch": "torch", + "TensorFlow": "tensorflow" + } + + if "requirements" in env_part: + _, requirements_dir = get_key_val(env_part) + + # read requirements file + with open(f'../{requirements_dir}', 'r') as file: + requirements = file.read() + + for header, package in search_dict.items(): + model[header] = package in requirements + else: + for header, _ in search_dict.items(): + model[header] = False + + # remove non required keys + model.pop("Model and Paper") + model.pop("Environment") + + # Get package name + model_dir = model["Link"] + + with open(f'../{model_dir}/__init__.py', 'r') as file: + init_data = file.read() + + package_names = [] + + for row in init_data.split('\n'): + if "import" in row: + package_name = row[row.index("import") + len("import "):] + package_names.append(f"cornac.models.{package_name}") + + model["packages"] = package_names + +json_str = json.dumps(models, indent=4) + +# Write the JSON object to a file +with open('source/_static/models/data.js', 'w') as file: + file.write(f"var data = {json_str};") From be55b7ecc4ba9dff0bd3da577163149c2c4f8dab Mon Sep 17 00:00:00 2001 From: darrylong Date: Tue, 18 Jun 2024 11:10:50 +0800 Subject: [PATCH 5/5] Reset filter input when clear filters button is selected --- docs/source/_static/models/models.html | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/source/_static/models/models.html b/docs/source/_static/models/models.html index e478cd4c2..fcee3e469 100644 --- a/docs/source/_static/models/models.html +++ b/docs/source/_static/models/models.html @@ -56,6 +56,12 @@

Filters

.then(() => { gridApi.onFilterChanged(); }); + // reset filter box + document.getElementById("filter-text-box").value=""; + gridApi.setGridOption( + "quickFilterText", + "", + ); } // Grid Options: Contains all of the grid configurations