mayf commited on
Commit
acb4766
Β·
verified Β·
1 Parent(s): 91ac9f0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -17
app.py CHANGED
@@ -1,13 +1,21 @@
 
1
  import streamlit as st
 
2
  from transformers import pipeline, AutoTokenizer, AutoModelForSequenceClassification
3
  from keybert import KeyBERT
4
 
5
- # Initialize sentiment analysis pipeline
6
  @st.cache_resource
7
  def load_sentiment_pipeline():
8
  model_name = "mayf/amazon_reviews_bert_ft"
9
- tokenizer = AutoTokenizer.from_pretrained(model_name)
10
- model = AutoModelForSequenceClassification.from_pretrained(model_name)
 
 
 
 
 
 
11
  return pipeline(
12
  "sentiment-analysis",
13
  model=model,
@@ -15,27 +23,28 @@ def load_sentiment_pipeline():
15
  return_all_scores=True
16
  )
17
 
18
- # Initialize KeyBERT model
19
  @st.cache_resource
20
  def load_keybert_model():
21
  return KeyBERT(model="all-MiniLM-L6-v2")
22
 
23
- sentiment_pipeline = load_sentiment_pipeline()
24
- kw_model = load_keybert_model()
 
 
25
 
26
- # Streamlit App
27
- st.set_page_config(page_title="Review Analyzer", layout="wide")
28
- st.title("πŸ“Š Review Sentiment & Keyword Analyzer")
29
 
30
- review = st.text_area("Enter your review:")
 
 
 
 
 
31
 
32
- if st.button("Analyze Review"):
33
- if not review:
34
- st.warning("Please enter a review to analyze.")
35
- else:
36
  # Sentiment Analysis
37
  scores = sentiment_pipeline(review)[0]
38
- # Convert scores to displayable format
39
  sentiment_results = {item['label']: round(item['score'], 4) for item in scores}
40
  st.subheader("Sentiment Scores")
41
  st.json(sentiment_results)
@@ -51,9 +60,12 @@ if st.button("Analyze Review"):
51
  for kw, score in keywords:
52
  st.write(f"- **{kw}** (Score: {score:.4f})")
53
 
54
- # Final Score: example combining sentiment and keywords
55
  avg_sentiment = sum(sentiment_results.values()) / len(sentiment_results)
56
  st.subheader("Composite Score with Keywords")
57
  st.write(f"Average Sentiment Score: {avg_sentiment:.4f}")
58
  st.write("Keywords used for this score:")
59
- st.write(', '.join([kw for kw, _ in keywords]))
 
 
 
 
1
+ import os
2
  import streamlit as st
3
+ from huggingface_hub import login
4
  from transformers import pipeline, AutoTokenizer, AutoModelForSequenceClassification
5
  from keybert import KeyBERT
6
 
7
+ # ─── Cached resource: Sentiment Analysis Pipeline ────────────────────────────
8
  @st.cache_resource
9
  def load_sentiment_pipeline():
10
  model_name = "mayf/amazon_reviews_bert_ft"
11
+ tokenizer = AutoTokenizer.from_pretrained(
12
+ model_name,
13
+ use_auth_token=True
14
+ )
15
+ model = AutoModelForSequenceClassification.from_pretrained(
16
+ model_name,
17
+ use_auth_token=True
18
+ )
19
  return pipeline(
20
  "sentiment-analysis",
21
  model=model,
 
23
  return_all_scores=True
24
  )
25
 
26
+ # ─── Cached resource: KeyBERT Model ─────────────────────────────────────────
27
  @st.cache_resource
28
  def load_keybert_model():
29
  return KeyBERT(model="all-MiniLM-L6-v2")
30
 
31
+ # ─── Main Application ───────────────────────────────────────────────────────
32
+ def main():
33
+ sentiment_pipeline = load_sentiment_pipeline()
34
+ kw_model = load_keybert_model()
35
 
36
+ st.set_page_config(page_title="Review Analyzer", layout="wide")
37
+ st.title("πŸ“Š Review Sentiment & Keyword Analyzer")
 
38
 
39
+ review = st.text_area("Enter your review:")
40
+
41
+ if st.button("Analyze Review"):
42
+ if not review:
43
+ st.warning("Please enter a review to analyze.")
44
+ return
45
 
 
 
 
 
46
  # Sentiment Analysis
47
  scores = sentiment_pipeline(review)[0]
 
48
  sentiment_results = {item['label']: round(item['score'], 4) for item in scores}
49
  st.subheader("Sentiment Scores")
50
  st.json(sentiment_results)
 
60
  for kw, score in keywords:
61
  st.write(f"- **{kw}** (Score: {score:.4f})")
62
 
63
+ # Composite Score
64
  avg_sentiment = sum(sentiment_results.values()) / len(sentiment_results)
65
  st.subheader("Composite Score with Keywords")
66
  st.write(f"Average Sentiment Score: {avg_sentiment:.4f}")
67
  st.write("Keywords used for this score:")
68
+ st.write(', '.join([kw for kw, _ in keywords]))
69
+
70
+ if __name__ == "__main__":
71
+ main()