ML2_HW4_Kalinin / app.py
Alexey Kalinin
no abstarat needed
717ed87
import streamlit as st
import arxiv
from inference import top_95_labels, load_model # Replace with your actual module
@st.cache_resource
def get_model():
return load_model("kalinin-a-i/ml2-hw4", "class2name.joblib")
def get_arxiv_article_info(url):
"""Extracts title and abstract from an arXiv article link."""
paper_id = url.split("/abs/")[-1]
search = arxiv.Search(id_list=[paper_id])
for result in search.results():
return result.title, result.summary
return None, None
# Load model once
pipe, class2name = get_model()
st.title("ArXiv Article Classifier")
# Input method selection
input_method = st.radio("Select input method:", ("ArXiv Link", "Manual Input"))
title, abstract = None, None
if input_method == "ArXiv Link":
arxiv_url = st.text_input("Enter ArXiv article link:")
if st.button("Classify"):
if arxiv_url:
title, abstract = get_arxiv_article_info(arxiv_url)
else:
st.error("Please enter a valid ArXiv link.")
elif input_method == "Manual Input":
title = st.text_input("Enter Article Title:")
abstract = st.text_area("Enter Article Abstract:")
if st.button("Classify"):
if not title:
st.error("Please provide title")
# Classification and output
if title:
categories = top_95_labels(pipe, class2name, title, abstract) # Assuming classify returns a list of labels
st.write(f"### Title: {title}")
st.write("**Predicted Categories:**")
for category in categories:
st.write(f"- {category}")