| import streamlit as st |
| import pickle |
| import string |
| from nltk.corpus import stopwords |
| from nltk.stem import WordNetLemmatizer |
| from nltk.tokenize import word_tokenize |
| import nltk |
| from huggingface_hub import hf_hub_download |
|
|
| |
| try: |
| nltk.data.find('tokenizers/punkt_tab') |
| except LookupError: |
| nltk.download('punkt_tab') |
|
|
| try: |
| nltk.data.find('corpora/stopwords') |
| except LookupError: |
| nltk.download('stopwords') |
|
|
| try: |
| nltk.data.find('corpora/wordnet') |
| except LookupError: |
| nltk.download('wordnet') |
|
|
| stop_words = set(stopwords.words('english')) |
| lemmatizer = WordNetLemmatizer() |
|
|
| |
| def preprocess_text(text): |
| text = text.lower() |
| text = text.translate(str.maketrans('', '', string.punctuation)) |
| tokens = word_tokenize(text) |
| tokens = [lemmatizer.lemmatize(word) for word in tokens if word not in stop_words] |
| return " ".join(tokens) |
|
|
| |
| @st.cache_resource |
| def load_models(): |
| HF_MODEL_REPO = "Redfire-1234/Sentiment-analysis" |
| |
| goboult_model_file = hf_hub_download(HF_MODEL_REPO, "rf_goboult_model.pkl") |
| goboult_tfidf_file = hf_hub_download(HF_MODEL_REPO, "tfidf_goboult.pkl") |
| flipflop_model_file = hf_hub_download(HF_MODEL_REPO, "rf_flipflop_model.pkl") |
| flipflop_tfidf_file = hf_hub_download(HF_MODEL_REPO, "tfidf_flipflop.pkl") |
| |
| with open(goboult_model_file, 'rb') as f: |
| goboult_model = pickle.load(f) |
| with open(goboult_tfidf_file, 'rb') as f: |
| goboult_tfidf = pickle.load(f) |
| with open(flipflop_model_file, 'rb') as f: |
| flipflop_model = pickle.load(f) |
| with open(flipflop_tfidf_file, 'rb') as f: |
| flipflop_tfidf = pickle.load(f) |
| |
| return goboult_model, goboult_tfidf, flipflop_model, flipflop_tfidf |
|
|
| goboult_model, goboult_tfidf, flipflop_model, flipflop_tfidf = load_models() |
|
|
| |
| st.title("Sentiment Analysis for Goboult & Flipflop") |
|
|
| dataset = st.selectbox("Select Dataset", ["Goboult", "Flipflop"]) |
| review = st.text_area("Enter your review here:") |
|
|
| if st.button("Predict Sentiment"): |
| if review.strip() == "": |
| st.warning("Please enter a review!") |
| else: |
| cleaned = preprocess_text(review) |
| |
| if dataset.lower() == "goboult": |
| vectorized = goboult_tfidf.transform([cleaned]) |
| pred = goboult_model.predict(vectorized)[0] |
| else: |
| vectorized = flipflop_tfidf.transform([cleaned]) |
| pred = flipflop_model.predict(vectorized)[0] |
| |
| st.success(f"Predicted Sentiment: {pred}") |