File size: 3,546 Bytes
5cb07ef
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5b553bb
 
 
 
5cb07ef
5b553bb
 
5cb07ef
5b553bb
 
 
 
 
 
 
 
 
 
 
 
 
5cb07ef
 
5b553bb
 
 
 
5cb07ef
5b553bb
 
 
 
5cb07ef
b4a2d50
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
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()