| """ |
| This script contains the logic for streamlit to generate inferences. |
| Example: |
| python3 ./src/models/paperRecommender.py --modelsize GrammarGuru |
| """ |
| import argparse |
| from random import choice |
| from utils.constants import user_requests_tests, TEST_INPUTS |
| from utils.mlutilities import get_recomendations_metadata,load_arxiv_parquet, load_model, load_dict, load_sparse_matrix |
| import time |
|
|
| args = parser.parse_args() |
|
|
|
|
| query = args.query |
| model_name = args.modelname |
| n = args.n |
|
|
| if args.query is None: |
| query = choice(TEST_INPUTS) |
| |
| if model_name is None: |
| raise Exception('Please Select a model name to use: ["SemanticSherlock", "LanguageLiberator", "TextualTango", "GrammarGuru"]') |
| |
| start = time.time() |
| parent_folder = f"/Users/luis.morales/Desktop/arxiv-paper-recommender/models/{model_name}" |
|
|
| parquet_file = f"{parent_folder}/data/{model_name}.parquet.gzip" |
| dictionary = f"{parent_folder}/dictionaries/{model_name}.dict" |
| model = f"{parent_folder}/tdidf/{model_name}.model" |
| sparse_matrix = f"{parent_folder}/similarities_matrix/{model_name}" |
|
|
|
|
| df = load_arxiv_parquet(parquet_file) |
| dict_corpus = load_dict(dictionary) |
| similarities = load_sparse_matrix(sparse_matrix) |
| tfidf_model = load_model(model) |
|
|
|
|
| results_df = get_recomendations_metadata(query=query, df=df, n=n, dictionary=dict_corpus, index=similarities, tfidf_model=tfidf_model) |
|
|
| results = list(zip( |
| results_df['title'].to_list(), |
| results_df['authors'].to_list(), |
| results_df['categories'].to_list(), |
| results_df['abstract'].to_list() |
| ) |
| ) |
|
|
| for abstract in results: |
| print(f"User Request ---- : \n {query}") |
| time.sleep(0.3) |
| print(f"--------------------------") |
| print(f"Title: {abstract[0]}") |
| time.sleep(0.3) |
| print(f"Author: {abstract[1]}") |
| time.sleep(0.3) |
| print(f"Categories: {abstract[2]}\n") |
| time.sleep(0.3) |
| print(f"Abstract: {abstract[3]}\n") |
| print(f"--------------------------") |
| time.sleep(1) |
|
|
| end = time.time() |
| total_time = end - start |
| print(f"-------------- Execution Time: {total_time}") |