Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from transformers import pipeline, AutoModelForSequenceClassification, AutoTokenizer | |
| def top_proba(preds, p=.95): | |
| preds.sort(key=lambda pr: pr["score"]) | |
| top_preds = [] | |
| proba = 0. | |
| for pr in reversed(preds): | |
| proba += pr["score"] | |
| top_preds.append(pr) | |
| if proba >= p: | |
| return top_preds | |
| def load_model(): | |
| model = AutoModelForSequenceClassification.from_pretrained("Smomitya/distilbert-paper-classifier") | |
| tokenizer = AutoTokenizer.from_pretrained("distilbert/distilbert-base-cased") | |
| return pipeline("text-classification", model=model, tokenizer=tokenizer, top_k=None) | |
| model = load_model() | |
| st.title("Topic Classification") | |
| title = st.text_input("Enter the title of the article:") | |
| title_only = st.checkbox("Use only title for classification") | |
| if not title_only: | |
| abstract = st.text_input("Add the abstract or description of the article:") | |
| st.header("Results") | |
| show_scores = st.checkbox("Show scores") | |
| if title and (title_only or abstract): | |
| query = title if title_only else title + " " + abstract | |
| preds = top_proba(model(query)[0]) | |
| for pr in preds: | |
| label = pr["label"] | |
| score = pr["score"] | |
| st.markdown(f"`{label}` " + (f"{score:.3f}" if show_scores else "")) | |