Spaces:
Sleeping
Sleeping
import gradio as gr | |
import torch | |
from paper_rec import recommender, etl | |
from gradio.inputs import Textbox | |
def recommend(txt): | |
if len(txt.strip()) <= 0: | |
return {"msg": "no recommendations available for the input text."} | |
top_n = 10 | |
# model user preferences: | |
cleaned_txt = etl.clean_text(txt) | |
sentences = etl.get_sentences_from_txt(txt) | |
rec = recommender.Recommender() | |
# loading data and model from HF | |
rec.load_data() | |
rec.load_model() | |
# compute user embedding | |
user_embedding = torch.from_numpy(rec.embedding(sentences)) | |
# get recommendations based on user preferences | |
recs = rec.recommend(user_embedding, top_k=100) | |
# deduplicate | |
recs_output = [] | |
seen_paper = set() | |
for p in recs: | |
if p["id"] not in seen_paper: | |
recs_output.append({"id": p["id"], | |
"title": p["title"], | |
"abstract": p["authors"], | |
"abstract": p["abstract"] | |
}) | |
seen_paper.add(p["id"]) | |
if len(recs_output) >= top_n: | |
break | |
# report top-n | |
return recs_output | |
title = "Interactive demo: paper-rec" | |
description = """What paper in ML/AI should I read next? It is difficult to choose from all great research publications | |
published daily. This demo gives you a personalized selection of papers from the latest scientific contributions | |
available in arXiv β https://arxiv.org/. | |
You just input the title or abstract (or both) of paper(s) you liked in the past or you can also use keywords of topics | |
of interest and get the top-10 article recommendations tailored to your taste. | |
Enjoy!""" | |
examples = ["""Attention Is All You Need β The dominant sequence transduction models are based on complex recurrent or | |
convolutional neural networks in an encoder-decoder configuration. The best performing models also connect the encoder | |
and decoder through an attention mechanism. We propose a new simple network architecture, the Transformer, based solely | |
on attention mechanisms, dispensing with recurrence and convolutions entirely. Experiments on two machine translation | |
tasks show these models to be superior in quality while being more parallelizable and requiring significantly less time | |
to train. Our model achieves 28.4 BLEU on the WMT 2014 English-to-German translation task, improving over the existing | |
best results, including ensembles by over 2 BLEU. On the WMT 2014 English-to-French translation task, our model | |
establishes a new single-model state-of-the-art BLEU score of 41.8 after training for 3.5 days on eight GPUs, a small | |
fraction of the training costs of the best models from the literature. We show that the Transformer generalizes well to | |
other tasks by applying it successfully to English constituency parsing both with large and limited training data.""", | |
"GANs, Diffusion Models, Art"] | |
iface = gr.Interface(fn=recommend, | |
inputs=[Textbox(lines=10, placeholder="Titles and abstracts from papers you like", default="", | |
label="""Sample of what I like: title(s) or abstract(s) of papers you love or a set | |
of keywords about your interests (e.g., Transformers, GANs, Recommender Systems): | |
""")], | |
outputs="json", | |
layout='vertical', | |
title=title, | |
description=description, | |
examples=examples | |
) | |
iface.launch() |