Journal Recommender Application.
Description.
This web app recommends Indonesian scientific journals that best fit the user’s scientific paper. The premise is quite simple: the user inputs the abstract for their scientific article, and the application outputs a list of journals ordered descendingly by how similar they are to the article in terms of percentages. It’s able to do this because it utilizes a previously trained Softmax Regression model that’s deployed to the web app.
Softmax Regression is a version of Logistic Regression the switches the Sigmoid function in the output layer with a Softmax function. To put it simply, while a Logistic Regression model classifies the input data dichotomously (yes or no; cat or dog) with a 100% certainty, a Softmax Regression model classifies the input data multinomially (yes, no, or maybe; cat, dog, mouse, or bird) with differing percentages for each class. The model is trained on a dataset that was scraped from SINTA and Garuda using a web scraper that I built in conjunction with this web app, and the features of the dataset were selected using a Chi-Square feature selection program that I also built.
Here is the link for the Github repository and here is the link for the demo of the app. The demo could be slow to start because I deployed it to the free version of Heroku and it takes time for the dyno to spin up if it hasn’t been used in a while.
Background.
This is a project for my Bachelor’s thesis. The idea came up when I was casually browsing the internet to find journals that I could use as inspiration for my thesis. I came across a feature from Elsevier that allows researchers to find the best journals that fit their scientific papers. After searching whether or not there was an Indonesian counterpart available online (which there wasn’t at that time), and knowing that my major’s specialization was Artificial Intelligence, I ended up doing this project.
Features.
- Utilizes a trained Softmax Regression model and Chi-Square feature selection.
- Outputs journal recommendations in the form of probabilities.
- Recommends journal with the highest probability as the main recommendation and outputs a summary and a link for said recommended journal.
- Works properly only with Indonesian abstracts.
- Only allows abstracts that consist of 100 - 350 words as input.
- Recommends 12 different journals:
No. | Name | Scope of Knowledge |
---|---|---|
1. | Jurnal Hortikultura | Horticulture |
2. | Jurnal Penelitian Perikanan Indonesia | Fisheries |
3. | Jurnal Riset Akuakultur | Aquaculture |
4. | Jurnal Jalan-Jembatan | Road Construction |
5. | Jurnal Penelitian Hasil Hutan | Forestries |
6. | Jurnal Penelitian Hutan dan Konservasi Alam | Forest Conservation |
7. | E-Jurnal Medika Udayana | Medical Sciences |
8. | Jurnal Simetris | Technology |
9. | Jurnal Teknik ITS | Technology |
10. | Berita Kedokteran Masyarakat | Public Health |
12. | Indonesia Medicus Veterinus | Veterinary |
13. | Matriks Teknik Sipil | Civil Engineering |
Tools.
How to Configure in Local Environment.
After cloning the repository, do the following steps:
-
Create a virtual environment in the cloned dir.
$ python3 -m venv venv
-
Activate the virtual environment/.
$ source venv/bin/activate
-
Install all the dependencies listed in
requirements.txt
.$ pip install -r requirements.txt
-
Setup the flask environment variable in
.env
.SECRET_KEY=your_secret_key ABSTRACT_TOKEN_SAVE_DIR=./data/output/abstract-token-list.json TF_IDF_SAVE_DIR=./data/output/tf-idf.csv FV_TOKENS_OPEN_DIR=./data/fv-tokens JOURNAL_DATA_OPEN_DIR=./static/journal_info
-
Deactivate and reactivate the virtual environment.
$ deactivate $ source venv/bin/activate
How to Run in Local Environment.
After configuring it locally, do the following steps every time you want to run the app:
-
Activate the virtual environment.
$ source venv/bin/activate
-
Export the shell environment variables.
$ export FLASK_APP=server.py $ export FLASK_ENV=development
-
Run the app.
$ flask run
Demo.
-
Input validation
-
Recommendation result