Spaces:
Sleeping
Sleeping
import gradio as gr | |
import arxiv | |
from transformers import pipeline | |
# Load summarization model | |
summarizer = pipeline("summarization", model="sshleifer/distilbart-cnn-12-6") | |
# Search and summarize papers | |
def search_and_summarize(topic, sort_by_option): | |
try: | |
num_papers = 3 # fixed value | |
sort_mapping = { | |
"Relevance": arxiv.SortCriterion.Relevance, | |
"Most Recent": arxiv.SortCriterion.SubmittedDate | |
} | |
search = arxiv.Search( | |
query=topic, | |
max_results=num_papers, | |
sort_by=sort_mapping.get(sort_by_option, arxiv.SortCriterion.Relevance) | |
) | |
results = [] | |
for result in search.results(): | |
summary = summarizer(result.summary[:1000], max_length=120, min_length=30, do_sample=False)[0]['summary_text'] | |
authors = ", ".join([author.name for author in result.authors]) | |
published_date = result.published.date().strftime("%Y-%m-%d") | |
result_block = ( | |
f"📘 *{result.title}*\n\n" | |
f"👩🔬 Authors: {authors}\n" | |
f"📅 Published: {published_date}\n\n" | |
f"📝 Summary: {summary}\n\n" | |
f"🔗 [Read More]({result.pdf_url})" | |
) | |
results.append(result_block) | |
return "\n\n---\n\n".join(results) if results else "No results found." | |
except Exception as e: | |
return f"⚠️ An error occurred: {e}" | |
# Gradio UI | |
with gr.Blocks(theme=gr.themes.Base()) as demo: | |
gr.Markdown("# 🤖 AI Research Assistant\nSummarize academic research papers using Hugging Face models + Arxiv!") | |
with gr.Row(): | |
topic = gr.Textbox(label="🔍 Enter your research topic", placeholder="e.g. diffusion models in AI") | |
sort_by = gr.Dropdown(choices=["Relevance", "Most Recent"], value="Relevance", label="Sort by") | |
search_btn = gr.Button("Search 🔎") | |
output = gr.Markdown() | |
# Show loading message | |
def show_loading(): | |
return "⏳ Loading, please wait..." | |
search_btn.click(fn=show_loading, inputs=[], outputs=output, queue=False) | |
search_btn.click(fn=search_and_summarize, inputs=[topic, sort_by], outputs=output) | |
demo.launch() |