Skip to main content

A Comparative Framework for Multimodal Recommender Systems

Project description

Cornac

Cornac is a comparative framework for multimodal recommender systems. It focuses on making it convenient to work with models leveraging auxiliary data (e.g., item descriptive text and image, social network, etc). Cornac enables fast experiments and straightforward implementations of new models. It is highly compatible with existing machine learning libraries (e.g., TensorFlow, PyTorch).

Cornac is one of the frameworks recommended by ACM RecSys 2023 for the evaluation and reproducibility of recommendation algorithms. In addition, the implementation of BPR model in Cornac has been recommended as trustworthy baseline for RecSys comparison by independent research.

Quick Links

Website | Documentation | Tutorials | Examples | Models | Datasets | Paper | Preferred.AI

Conda Azure Pipelines .github/workflows/python-package.yml CircleCI Docs Codecov
Release PyPI Conda Forge Conda Recipe PyPI - Downloads Pepy Total Downloads
Python Conda Platforms GitHub License

Installation

Currently, we are supporting Python 3. There are several ways to install Cornac:

  • From PyPI (recommended):

    pip3 install cornac
    
  • From Anaconda:

    conda install cornac -c conda-forge
    
  • From the GitHub source (for latest updates):

    pip3 install git+https://github.com/PreferredAI/cornac.git
    

Note:

Additional dependencies required by models are listed here.

Some algorithm implementations use OpenMP to support multi-threading. For Mac OS users, in order to run those algorithms efficiently, you might need to install gcc from Homebrew to have an OpenMP compiler:

brew install gcc | brew link gcc

Getting started: your first Cornac experiment

Flow of an Experiment in Cornac

import cornac
from cornac.eval_methods import RatioSplit
from cornac.models import MF, PMF, BPR
from cornac.metrics import MAE, RMSE, Precision, Recall, NDCG, AUC, MAP

# load the built-in MovieLens 100K and split the data based on ratio
ml_100k = cornac.datasets.movielens.load_feedback()
rs = RatioSplit(data=ml_100k, test_size=0.2, rating_threshold=4.0, seed=123)

# initialize models, here we are comparing: Biased MF, PMF, and BPR
mf = MF(k=10, max_iter=25, learning_rate=0.01, lambda_reg=0.02, use_bias=True, seed=123)
pmf = PMF(k=10, max_iter=100, learning_rate=0.001, lambda_reg=0.001, seed=123)
bpr = BPR(k=10, max_iter=200, learning_rate=0.001, lambda_reg=0.01, seed=123)
models = [mf, pmf, bpr]

# define metrics to evaluate the models
metrics = [MAE(), RMSE(), Precision(k=10), Recall(k=10), NDCG(k=10), AUC(), MAP()]

# put it together in an experiment, voilà!
cornac.Experiment(eval_method=rs, models=models, metrics=metrics, user_based=True).run()

Output:

MAE RMSE AUC MAP NDCG@10 Precision@10 Recall@10 Train (s) Test (s)
MF 0.7430 0.8998 0.7445 0.0548 0.0761 0.0675 0.0463 0.13 1.57
PMF 0.7534 0.9138 0.7744 0.0671 0.0969 0.0813 0.0639 2.18 1.64
BPR N/A N/A 0.8695 0.1042 0.1500 0.1110 0.1195 3.74 1.49

Model serving

Here, we provide a simple way to serve a Cornac model by launching a standalone web service with Flask. It is very handy for testing or creating a demo application. First, we install the dependency:

$ pip3 install Flask

Supposed that we want to serve the trained BPR model from previous example, we need to save it:

bpr.save("save_dir", save_trainset=True)

After that, the model can be deployed easily by running Cornac serving app as follows:

$ FLASK_APP='cornac.serving.app' \
  MODEL_PATH='save_dir/BPR' \
  MODEL_CLASS='cornac.models.BPR' \
  flask run --host localhost --port 8080

# Running on http://localhost:8080

Here we go, our model service is now ready. Let's get top-5 item recommendations for the user "63":

$ curl -X GET "http://localhost:8080/recommend?uid=63&k=5&remove_seen=false"

# Response: {"recommendations": ["50", "181", "100", "258", "286"], "query": {"uid": "63", "k": 5, "remove_seen": false}}

If we want to remove seen items during training, we need to provide TRAIN_SET which has been saved with the model earlier, when starting the serving app. We can also leverage WSGI server for model deployment in production. Please refer to this guide for more details.

Model A/B testing

Cornac-AB is an extension of Cornac using the Cornac Serving API. Easily create and manage A/B testing experiments to further understand your model performance with online users.

User Interaction Solution Recommendations Dashboard Feedback Dashboard
demo recommendations feedback

Efficient retrieval with ANN search

One important aspect of deploying recommender model is efficient retrieval via Approximate Nearest Neighbor (ANN) search in vector space. Cornac integrates several vector similarity search frameworks for the ease of deployment. This example demonstrates how ANN search will work seamlessly with any recommender models supporting it (e.g., matrix factorization).

Supported Framework Cornac Wrapper Example
spotify/annoy AnnoyANN quick-start, deep-dive
meta/faiss FaissANN quick-start, deep-dive
nmslib/hnswlib HNSWLibANN quick-start, hnsw-lib, deep-dive
google/scann ScaNNANN quick-start, deep-dive

Models

The table below lists the recommendation models/algorithms featured in Cornac. Examples are provided as quick-start showcasing an easy to run script, or as deep-dive explaining the math and intuition behind each model. Why don't you join us to lengthen the list?

Year Model and Paper Type Environment Example
2024 Comparative Aspects and Opinions Ranking for Recommendation Explanations (Companion), docs, paper Hybrid / Sentiment / Explainable CPU quick-start
Hypergraphs with Attention on Reviews (HypAR), docs, paper Hybrid / Sentiment / Explainable requirements, CPU / GPU quick-start
2023 Scalable Approximate NonSymmetric Autoencoder (SANSA), docs, paper Collaborative Filtering requirements, CPU quick-start, 150k-items
2022 Disentangled Multimodal Representation Learning for Recommendation (DMRL), docs, paper Content-Based / Text & Image requirements, CPU / GPU quick-start
2021 Bilateral Variational Autoencoder for Collaborative Filtering (BiVAECF), docs, paper Collaborative Filtering / Content-Based requirements, CPU / GPU quick-start, deep-dive
Causal Inference for Visual Debiasing in Visually-Aware Recommendation (CausalRec), docs, paper Content-Based / Image requirements, CPU / GPU quick-start
Explainable Recommendation with Comparative Constraints on Product Aspects (ComparER), docs, paper Explainable CPU quick-start
2020 Adversarial Multimedia Recommendation (AMR), docs, paper Content-Based / Image requirements, CPU / GPU quick-start
Hybrid Deep Representation Learning of Ratings and Reviews (HRDR), docs, paper Content-Based / Text requirements, CPU / GPU quick-start
LightGCN: Simplifying and Powering Graph Convolution Network, docs, paper Collaborative Filtering requirements, CPU / GPU quick-start
Predicting Temporal Sets with Deep Neural Networks (DNNTSP), docs, paper Next-Basket requirements, CPU / GPU quick-start
Recency Aware Collaborative Filtering (UPCF), docs, paper Next-Basket requirements, CPU quick-start
Temporal-Item-Frequency-based User-KNN (TIFUKNN), docs, paper Next-Basket CPU quick-start
Variational Autoencoder for Top-N Recommendations (RecVAE), docs, paper Collaborative Filtering requirements, CPU / GPU quick-start
2019 Correlation-Sensitive Next-Basket Recommendation (Beacon), docs, paper Next-Basket requirements, CPU / GPU quick-start
Embarrassingly Shallow Autoencoders for Sparse Data (EASEᴿ), docs, paper Collaborative Filtering CPU quick-start
Neural Graph Collaborative Filtering (NGCF), docs, paper Collaborative Filtering requirements, CPU / GPU quick-start
2018 Collaborative Context Poisson Factorization (C2PF), docs, paper Content-Based / Graph CPU quick-start
Graph Convolutional Matrix Completion (GCMC), docs, paper Collaborative Filtering requirements, CPU / GPU quick-start
Multi-Task Explainable Recommendation (MTER), docs, paper Explainable CPU quick-start, deep-dive
Neural Attention Rating Regression with Review-level Explanations (NARRE), docs, paper Explainable / Content-Based requirements, CPU / GPU quick-start
Probabilistic Collaborative Representation Learning (PCRL), docs, paper Content-Based / Graph requirements, CPU / GPU quick-start
Variational Autoencoder for Collaborative Filtering (VAECF), docs, paper Collaborative Filtering requirements, CPU / GPU quick-start, param-search, deep-dive
2017 Collaborative Variational Autoencoder (CVAE), docs, paper Content-Based / Text requirements, CPU / GPU quick-start
Conditional Variational Autoencoder for Collaborative Filtering (CVAECF), docs, paper Content-Based / Text requirements, CPU / GPU quick-start
Generalized Matrix Factorization (GMF), docs, paper Collaborative Filtering requirements, CPU / GPU quick-start, deep-dive
Indexable Bayesian Personalized Ranking (IBPR), docs, paper Collaborative Filtering requirements, CPU / GPU quick-start, deep-dive
Matrix Co-Factorization (MCF), docs, paper Content-Based / Graph CPU quick-start, cross-modality
Multi-Layer Perceptron (MLP), docs, paper Collaborative Filtering requirements, CPU / GPU quick-start, deep-dive
Neural Matrix Factorization (NeuMF) / Neural Collaborative Filtering (NCF), docs, paper Collaborative Filtering requirements, CPU / GPU quick-start, deep-dive
Online Indexable Bayesian Personalized Ranking (Online IBPR), docs, paper Collaborative Filtering requirements, CPU / GPU quick-start, deep-dive
Visual Matrix Factorization (VMF), docs, paper Content-Based / Image requirements, CPU / GPU quick-start
2016 Collaborative Deep Ranking (CDR), docs, paper Content-Based / Text requirements, CPU / GPU quick-start
Collaborative Ordinal Embedding (COE), docs, paper Collaborative Filtering requirements, CPU / GPU
Convolutional Matrix Factorization (ConvMF), docs, paper Content-Based / Text requirements, CPU / GPU quick-start, deep-dive
Learning to Rank Features for Recommendation over Multiple Categories (LRPPM), docs, paper Explainable CPU quick-start
Session-based Recommendations With Recurrent Neural Networks (GRU4Rec), docs, paper Next-Item requirements, CPU / GPU quick-start
Spherical K-means (SKM), docs, paper Collaborative Filtering CPU quick-start
Visual Bayesian Personalized Ranking (VBPR), docs, paper Content-Based / Image requirements, CPU / GPU quick-start, cross-modality, deep-dive
2015 Collaborative Deep Learning (CDL), docs, paper Content-Based / Text requirements, CPU / GPU quick-start, deep-dive
Hierarchical Poisson Factorization (HPF), docs, paper Collaborative Filtering CPU quick-start
TriRank: Review-aware Explainable Recommendation by Modeling Aspects, docs, paper Explainable CPU quick-start
2014 Explicit Factor Model (EFM), docs, paper Explainable CPU quick-start, deep-dive
Social Bayesian Personalized Ranking (SBPR), docs, paper Content-Based / Social CPU quick-start
2013 Hidden Factors and Hidden Topics (HFT), docs, paper Content-Based / Text CPU quick-start
2012 Weighted Bayesian Personalized Ranking (WBPR), docs, paper Collaborative Filtering CPU quick-start
2011 Collaborative Topic Regression (CTR), docs, paper Content-Based / Text CPU quick-start, deep-dive
Earlier Baseline Only, docs, paper Baseline CPU quick-start
Bayesian Personalized Ranking (BPR), docs paper Collaborative Filtering CPU quick-start, deep-dive
Factorization Machines (FM), docs, paper Collaborative Filtering / Content-Based Linux, CPU quick-start, deep-dive
Global Average (GlobalAvg), docs, paper Baseline CPU quick-start
Global Personalized Top Frequent (GPTop), paper Next-Basket CPU quick-start
Item K-Nearest-Neighbors (ItemKNN), docs, paper Neighborhood-Based CPU quick-start, deep-dive
Matrix Factorization (MF), docs, paper Collaborative Filtering CPU / GPU quick-start, pre-split-data, deep-dive
Maximum Margin Matrix Factorization (MMMF), docs, paper Collaborative Filtering CPU quick-start
Most Popular (MostPop), docs, paper Baseline CPU quick-start
Non-negative Matrix Factorization (NMF), docs, paper Collaborative Filtering CPU quick-start, deep-dive
Probabilistic Matrix Factorization (PMF), docs, paper Collaborative Filtering CPU quick-start
Session Popular (SPop), docs, paper Next-Item / Baseline CPU quick-start
Singular Value Decomposition (SVD), docs, paper Collaborative Filtering CPU quick-start, deep-dive
Social Recommendation using PMF (SoRec), docs, paper Content-Based / Social CPU quick-start, deep-dive
User K-Nearest-Neighbors (UserKNN), docs, paper Neighborhood-Based CPU quick-start, deep-dive
Weighted Matrix Factorization (WMF), docs, paper Collaborative Filtering requirements, CPU / GPU quick-start, deep-dive

Resources

Contributing

This project welcomes contributions and suggestions. Before contributing, please see our contribution guidelines.

Citation

If you use Cornac in a scientific publication, we would appreciate citations to the following papers:

Cornac: A Comparative Framework for Multimodal Recommender Systems, Salah et al., Journal of Machine Learning Research, 21(95):1–5, 2020.
@article{salah2020cornac,
  title={Cornac: A Comparative Framework for Multimodal Recommender Systems},
  author={Salah, Aghiles and Truong, Quoc-Tuan and Lauw, Hady W},
  journal={Journal of Machine Learning Research},
  volume={21},
  number={95},
  pages={1--5},
  year={2020}
}
Exploring Cross-Modality Utilization in Recommender Systems, Truong et al., IEEE Internet Computing, 25(4):50–57, 2021.
@article{truong2021exploring,
  title={Exploring Cross-Modality Utilization in Recommender Systems},
  author={Truong, Quoc-Tuan and Salah, Aghiles and Tran, Thanh-Binh and Guo, Jingyao and Lauw, Hady W},
  journal={IEEE Internet Computing},
  year={2021},
  publisher={IEEE}
}
Multi-Modal Recommender Systems: Hands-On Exploration, Truong et al., ACM Conference on Recommender Systems, 2021.
@inproceedings{truong2021multi,
  title={Multi-modal recommender systems: Hands-on exploration},
  author={Truong, Quoc-Tuan and Salah, Aghiles and Lauw, Hady},
  booktitle={Fifteenth ACM Conference on Recommender Systems},
  pages={834--837},
  year={2021}
}

License

Apache License 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cornac-2.3.3.tar.gz (5.9 MB view details)

Uploaded Source

Built Distributions

cornac-2.3.3-cp312-cp312-win_amd64.whl (10.0 MB view details)

Uploaded CPython 3.12Windows x86-64

cornac-2.3.3-cp312-cp312-manylinux1_x86_64.whl (31.2 MB view details)

Uploaded CPython 3.12

cornac-2.3.3-cp312-cp312-macosx_10_13_universal2.whl (13.6 MB view details)

Uploaded CPython 3.12macOS 10.13+ universal2 (ARM64, x86-64)

cornac-2.3.3-cp311-cp311-win_amd64.whl (10.0 MB view details)

Uploaded CPython 3.11Windows x86-64

cornac-2.3.3-cp311-cp311-manylinux1_x86_64.whl (31.5 MB view details)

Uploaded CPython 3.11

cornac-2.3.3-cp311-cp311-macosx_10_9_universal2.whl (13.6 MB view details)

Uploaded CPython 3.11macOS 10.9+ universal2 (ARM64, x86-64)

cornac-2.3.3-cp310-cp310-win_amd64.whl (10.0 MB view details)

Uploaded CPython 3.10Windows x86-64

cornac-2.3.3-cp310-cp310-manylinux1_x86_64.whl (30.0 MB view details)

Uploaded CPython 3.10

cornac-2.3.3-cp310-cp310-macosx_10_9_universal2.whl (13.6 MB view details)

Uploaded CPython 3.10macOS 10.9+ universal2 (ARM64, x86-64)

cornac-2.3.3-cp39-cp39-win_amd64.whl (10.0 MB view details)

Uploaded CPython 3.9Windows x86-64

cornac-2.3.3-cp39-cp39-manylinux1_x86_64.whl (30.1 MB view details)

Uploaded CPython 3.9

cornac-2.3.3-cp39-cp39-macosx_14_0_arm64.whl (10.2 MB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

File details

Details for the file cornac-2.3.3.tar.gz.

File metadata

  • Download URL: cornac-2.3.3.tar.gz
  • Upload date:
  • Size: 5.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for cornac-2.3.3.tar.gz
Algorithm Hash digest
SHA256 6253d932c7fd65126c3be948134e5d04ecb756f7bf79a081ec0e32dc0dd1df39
MD5 ed9ab20094891149276a48895a7227a4
BLAKE2b-256 d699785592e2a56f5c92547f7572872e026d76510c8dfd819d9922e138ab1a87

See more details on using hashes here.

File details

Details for the file cornac-2.3.3-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: cornac-2.3.3-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 10.0 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for cornac-2.3.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9a89359e90a97cd6e753ebee1925acc60558cd3e7cd429c04c92d393280050f2
MD5 284029b19e18e95b3d10b9c865f38c79
BLAKE2b-256 d1bf6d36b6ad75bb946e119d3a155f7328cf8644780d580d27f5dc9f18f62571

See more details on using hashes here.

File details

Details for the file cornac-2.3.3-cp312-cp312-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for cornac-2.3.3-cp312-cp312-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 49e3cdcd785fb1a1a4ebe754f76a8b2d43c675662c7f57341c60f5d3587f6e41
MD5 358131f0a2847ca0fd1b888c5f1ce2cb
BLAKE2b-256 9b5226c8dc9b6575dde6f08ca7aed90f0cf99b64d3c106fd06fa2905d47953a4

See more details on using hashes here.

File details

Details for the file cornac-2.3.3-cp312-cp312-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for cornac-2.3.3-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 7f0ae1f5d4f0c45edb059d6466440745421fdbba556e5650f64fcffe73202c68
MD5 a2ea7e0029f66aa78c5ada36c54145ad
BLAKE2b-256 3b0b9d4cd93ec3f3d5d6a3ba4f1339fe556f571cd7697bb953f432933564ad00

See more details on using hashes here.

File details

Details for the file cornac-2.3.3-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cornac-2.3.3-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 10.0 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for cornac-2.3.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 1b4977b82310445173c91b4a8b5c61706738896ba29cd7ef3a89937314982c5c
MD5 91ed791f27b0e61324748d3fddb7fb16
BLAKE2b-256 f09ba3729f0fa89edb1b565a442b0d0b388b34c511a6c3f871e2a3dfa2fc8f4e

See more details on using hashes here.

File details

Details for the file cornac-2.3.3-cp311-cp311-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for cornac-2.3.3-cp311-cp311-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 16e8f0a03c0c151bdba403711d76f5e1d1b39b9fd572b92c15d4bff88a0d2f0f
MD5 3c03d88e260217a47a62e0550c69d5da
BLAKE2b-256 12165736bcde0e144fa278831259d67420ae8aeb9e7d7231f9e504ee3d4518f3

See more details on using hashes here.

File details

Details for the file cornac-2.3.3-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for cornac-2.3.3-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 5cff844b732d03800861d609bc30a9ff3d32bb1dc428d72d98a087e232d9e93f
MD5 99770816c5f55917f2212a9d6340e11d
BLAKE2b-256 40e995873b27bd01a626a1c3f4fed0443c0883b22bce37dc93c3ad78952840c8

See more details on using hashes here.

File details

Details for the file cornac-2.3.3-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: cornac-2.3.3-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 10.0 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for cornac-2.3.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1d8ea15b3ca9c0f4a5295eb7d5abc493844514f005c9b5e00de1f0becc19cc57
MD5 a21265f84ee1dd74604d789c0e338753
BLAKE2b-256 a3f4c2c60ea2f7b90d464976d77c751f8667f40511b60b04cab9fc88327988b4

See more details on using hashes here.

File details

Details for the file cornac-2.3.3-cp310-cp310-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for cornac-2.3.3-cp310-cp310-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 6e1fa633621b1188c95f80822d45efc04374cfcba6b6c2a589d7fefb4f6062ca
MD5 a4c42deecd3395e15646007503d8b1e5
BLAKE2b-256 cf317bc09053cc394931681a43313b1fdae5659ee424001060eb8051a592a0b8

See more details on using hashes here.

File details

Details for the file cornac-2.3.3-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for cornac-2.3.3-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 c17fcd36c232de083124d49ec75761d95a5aa2732a892877a8c671f0041dfa41
MD5 641918d8c3a47d3bc47ea6e6c0ce924d
BLAKE2b-256 9748ac3dc9424e48508096a6eb764c048a0a4e166e91940384d6a462958a07da

See more details on using hashes here.

File details

Details for the file cornac-2.3.3-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: cornac-2.3.3-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 10.0 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for cornac-2.3.3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 66fc18b9b562db7eb1b23ce7b3f62fe140ecc5704e5289243d79509eec303313
MD5 67e2e8ab8d750710e658458dfd37c064
BLAKE2b-256 39c1b50d50c30411074c9ed944d26b5cf9b578bb90b1d34721f5b38d114c76f4

See more details on using hashes here.

File details

Details for the file cornac-2.3.3-cp39-cp39-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for cornac-2.3.3-cp39-cp39-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 a3f79d02f3f2b9ef944ff8ab4a0d44d927e52731750c0204549cdcbf2533783f
MD5 5892b52fae49b9722eff16a6c645a79e
BLAKE2b-256 d07e36a7f5d543b4f0d4edc0918f34513d0c70b6f904b20fa1c07b4e835b1f75

See more details on using hashes here.

File details

Details for the file cornac-2.3.3-cp39-cp39-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for cornac-2.3.3-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 9de8196014b1aed9e65f9d07cdc30acec922fb885067c045cc8336274cd8e88e
MD5 8b42de6abb05c9b74c716c6455ccb312
BLAKE2b-256 0600d3d5cecb5ad8c0fd990ed9ee16407169e07b2683f8bdc9ad20067d67829f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page