Spaces:
Runtime error
Runtime error
import json | |
import streamlit as st | |
from transformers import AutoTokenizer, RobertaForSequenceClassification, pipeline | |
with open("config.json") as f: | |
cfg = json.loads(f.read()) | |
def load_model(input_text, model_name_or_path): | |
tokenizer = AutoTokenizer.from_pretrained(model_name_or_path) | |
model = RobertaForSequenceClassification.from_pretrained(model_name_or_path) | |
nlp = pipeline("text-classification", model=model, tokenizer=tokenizer) | |
result = nlp(input_text) | |
return result | |
def app(): | |
st.title("मराठी Marathi News Classifier") | |
st.markdown( | |
"This demo uses the below fine-tuned models for marathi news classification:\n" | |
"- [IndicNLP Marathi News Classifier](https://huggingface.co/flax-community/mr-indicnlp-classifier) fine-tuned on " | |
"[IndicNLP Marathi News Dataset](https://github.com/ai4bharat/indicnlp_corpus#indicnlp-news-article-classification-dataset)\n" | |
"> `IndicNLP` model predicts one of these 3 classes - `['lifestyle', 'entertainment', 'sports']`\n" | |
"- [iNLTK Marathi News Classifier](https://huggingface.co/flax-community/mr-inltk-classifier) fine-tuned on " | |
"[Marathi News Dataset](https://www.kaggle.com/disisbig/marathi-news-dataset)\n" | |
"> `iNLTK` model predicts one of these 3 classes - `['state', 'entertainment', 'sports']`" | |
) | |
classifier = st.sidebar.selectbox("Select a Model", index=0, options=["IndicNLP", "iNLTK"]) | |
st.sidebar.markdown( | |
"**IndicNLP Classes**\n" | |
"- lifestyle\n" | |
"- entertainment\n" | |
"- sports\n" | |
"\n" | |
"**iNLTK Classes**\n" | |
"- state\n" | |
"- entertainment\n" | |
"- sports" | |
) | |
sample_texts = [ | |
"रोहित शर्माने सरावाला सुरुवात करण्यापूर्वी भारतीय खेळाडूला दिला कानमंत्र, म्हणाला...", | |
"जॉनी लीवर यांनी नम्रता संभेरावला दिलं खास गिफ्ट, अभिनेत्रीने व्यक्त केल्या भावना", | |
"Custom", | |
] | |
model_name_or_path = cfg["models"][classifier] | |
text_to_classify = st.selectbox("Select a Text", options=sample_texts, index=len(sample_texts) - 1) | |
if text_to_classify == "Custom": | |
text_to_classify = st.text_input("Enter custom text:") | |
predict_button = st.button("Predict") | |
if predict_button: | |
with st.spinner("Generating prediction..."): | |
result = load_model(text_to_classify, model_name_or_path) | |
st.markdown("## Predicted Label: `{}`".format(result[0]["label"])) | |
st.markdown("## Confidence: `{}`%".format(round(result[0]["score"], 3) * 100)) | |
st.markdown("- - -") | |
st.markdown( | |
"❓ Can't figure out where to get a sample text other than the predefined ones? ❓\n" | |
"\n" | |
"We have provided Marathi newspaper links (section wise) below. Head over to any section of your choice, " | |
"copy any headline and paste below to see if the model is predicting the respective class correctly or not?\n" | |
"- [entertainment](https://maharashtratimes.com/entertainment/articlelist/19359255.cms)\n" | |
"- [sports](https://maharashtratimes.com/sports/articlelist/2429056.cms)\n" | |
"- [lifestyle](https://maharashtratimes.com/lifestyle-news/articlelist/2429025.cms)\n" | |
"- [state](https://maharashtratimes.com/maharashtra/articlelist/2429066.cms)\n" | |
"> 📒 NOTE: Both models are not trained on above headlines! Feel free to use any headline from any newspaper" | |
) | |