Spaces:
Build error
Build error
| 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() |