This is the implementation of our two recent models for recommending scientific articles. The first model, CATA, utilizes articles’ titles and abstracts via a single attentive autoencoder, while the second model, CATA++, utilizes additional articles' information (such as tags and citations between articles) via two parallel attentive autoencoders.
- Collaborative Attentive Autoencoder for Scientific Article Recommendation (ICMLA 2019)
- CATA++: A Collaborative Dual Attentive Autoencoder Method for Recommending Scientific Articles (Access 2020)
Dataset | #users | #articles | #pairs | sparsity |
---|---|---|---|---|
Citeulike-a | 5,551 | 16,980 | 204,986 | 99.78% |
Citeulike-t | 7,947 | 25,975 | 134,860 | 99.93% |
- Python 3
- Tensorflow
- Keras
You can evaluate our models with different settings in terms of:
- data_name
-d
: 'a' for citeulike-a and 't' for citeulike-t. [Optional] [Default=citeulike-a] - sparse
-s
: '0', 'no', 'false', or 'f' for dense. [Optional] [Default=sparse] - pretrain
-pretrain
: '1', 'yes', 'true' or 't' for pretrain the attentive autoencoder. [Optional] [Default=No-pretraining] - epochs
-e
: Number of epochs to pretrain the attentive autoencoder. [Optional] [Default=150] - lambda_u
-u
: value of lambda_u. [Optional] [Default=10] - lambda_v
-v
: value of lambda_v. [Optional] [Default=0.1] - pmf_epochs
-pe
: Number of iterations for PMF. [Optional] [Default=100] - output_name
-o
: Name of the output file. [Optional] - latent_size
-l
:Size of latent space. [Optional] [Default=50]
-
To run CATA model, use test_CATA.py file.
-
To run CATA++ model, use test_CATA++.py file.
-
Example 1: Run CATA++ model for citeulike-t dataset with the dense setting. Also, always pretrain the two autoencoders if you run the code for the first time by setting
-pretrain 1
:python3 test_CATA++.py -pretrain 1 -d 't' -s 0
-
Example 2: Run CATA++ model for citeulike-t dataset with the sparse setting:
python3 test_CATA++.py -pretrain 0 -d 't' -s 1
-
Example 3: Run CATA model for citeulike-a dataset with the sparse setting:
python3 test_CATA.py -pretrain 0 -d 'a' -s 1