From 52979eb5d4acf1f20e24ece5977c05e5ec5b24e7 Mon Sep 17 00:00:00 2001 From: darrylong Date: Mon, 24 Jun 2024 15:26:11 +0800 Subject: [PATCH] Add Model Table Display into Readthedocs (#624) * Added static page for model viewing and filtering * Update model json data * Update model js table * Add generate model json python file for js table * Reset filter input when clear filters button is selected --- docs/generate_model_js.py | 101 ++++ docs/source/_static/models/data.js | 804 +++++++++++++++++++++++++ docs/source/_static/models/models.html | 104 ++++ docs/source/index.rst | 6 + 4 files changed, 1015 insertions(+) create mode 100644 docs/generate_model_js.py create mode 100644 docs/source/_static/models/data.js create mode 100644 docs/source/_static/models/models.html 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};") diff --git a/docs/source/_static/models/data.js b/docs/source/_static/models/data.js new file mode 100644 index 000000000..678a72bb0 --- /dev/null +++ b/docs/source/_static/models/data.js @@ -0,0 +1,804 @@ +var data = [ + { + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "PyTorch": false, + "TensorFlow": false, + "packages": [ + "cornac.models.GlobalAvg" + ] + }, + { + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "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", + "PyTorch": false, + "TensorFlow": true, + "packages": [ + "cornac.models.WMF" + ] + } +]; \ 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..fcee3e469 --- /dev/null +++ b/docs/source/_static/models/models.html @@ -0,0 +1,104 @@ + + + + + +

Filters

+
+ +
+
+ + + + + + +
+
+ +
+
+
+ + + + + \ 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