JoshuaZywoo commited on
Commit
0ca9296
·
verified ·
1 Parent(s): 49f0804

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -11
app.py CHANGED
@@ -22,13 +22,33 @@ candidate_tasks = [
22
  "upgrade device"
23
  ]
24
 
25
- # Emotion categories (updated)
26
  urgent_emotions = {"anger", "frustration", "anxiety", "urgency", "afraid", "annoyed"}
27
- moderate_emotions = {"confused", "sad", "tired", "concerned"}
28
 
29
- def get_emotion_label(emotion_result):
 
30
  sorted_emotions = sorted(emotion_result[0], key=lambda x: x['score'], reverse=True)
31
- return sorted_emotions[0]['label']
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
 
33
  def get_emotion_score(emotion):
34
  if emotion.lower() in urgent_emotions:
@@ -50,7 +70,6 @@ def get_content_score(text, top_intents):
50
  return min(score + 0.1, 1.0)
51
 
52
  def generate_reply(input_text, intent):
53
- # Intent-specific suggestion sentences
54
  intent_solutions = {
55
  "top up balance": "Your balance is ¥12. Current promo: recharge ¥100 get ¥5 bonus.",
56
  "reactivate service": "Your service is suspended due to unpaid ¥38. Recharge to restore within 30 mins.",
@@ -61,8 +80,6 @@ def generate_reply(input_text, intent):
61
  "upgrade device": "You're eligible for upgrade. New iPhone plan starts at ¥399/month.",
62
  "report service outage": "We're detecting signal issues in your area (ZIP: XXX). Engineers notified."
63
  }
64
-
65
- # Intent-specific closing question
66
  intent_closings = {
67
  "top up balance": "Would you like to proceed with a recharge now?",
68
  "reactivate service": "Shall I help you restart your service now?",
@@ -77,10 +94,9 @@ def generate_reply(input_text, intent):
77
  solution = intent_solutions.get(intent.lower(), "Here's how we can assist you with this issue.")
78
  closing = intent_closings.get(intent.lower(), "Is there anything else I can help with?")
79
  opening = "Thank you for contacting us. I understand your concern."
80
-
81
  return f"{opening} {solution} {closing}"
82
 
83
- # Streamlit UI
84
  st.set_page_config(page_title="Customer Support Assistant", layout="centered")
85
  st.title("📞 Smart Customer Support Assistant (for Agents Only)")
86
 
@@ -92,9 +108,9 @@ if st.button("Analyze Message"):
92
  else:
93
  with st.spinner("Processing..."):
94
 
95
- # Emotion detection (updated)
96
  emotion_result = emotion_classifier(user_input)
97
- emotion_label = get_emotion_label(emotion_result)
98
  emotion_score = get_emotion_score(emotion_label)
99
 
100
  # Intent detection
 
22
  "upgrade device"
23
  ]
24
 
25
+ # Emotion scoring
26
  urgent_emotions = {"anger", "frustration", "anxiety", "urgency", "afraid", "annoyed"}
27
+ moderate_emotions = {"confused", "sad", "tired", "concerned", "sadness"}
28
 
29
+ # ⬇️ 情绪判断(融合模型输出 + 语言信号)
30
+ def get_emotion_label(emotion_result, text):
31
  sorted_emotions = sorted(emotion_result[0], key=lambda x: x['score'], reverse=True)
32
+ top_emotion = sorted_emotions[0]['label']
33
+ return refine_emotion_label(text, top_emotion)
34
+
35
+ def refine_emotion_label(text, model_emotion):
36
+ text_lower = text.lower()
37
+ urgent_keywords = ["fix", "now", "immediately", "urgent", "can't", "need", "asap"]
38
+ exclamations = text.count("!")
39
+ upper_words = sum(1 for word in text.split() if word.isupper())
40
+
41
+ signal_score = 0
42
+ if any(word in text_lower for word in urgent_keywords):
43
+ signal_score += 1
44
+ if exclamations >= 2:
45
+ signal_score += 1
46
+ if upper_words >= 1:
47
+ signal_score += 1
48
+
49
+ if model_emotion.lower() in {"joy", "neutral", "sadness"} and signal_score >= 2:
50
+ return "urgency"
51
+ return model_emotion
52
 
53
  def get_emotion_score(emotion):
54
  if emotion.lower() in urgent_emotions:
 
70
  return min(score + 0.1, 1.0)
71
 
72
  def generate_reply(input_text, intent):
 
73
  intent_solutions = {
74
  "top up balance": "Your balance is ¥12. Current promo: recharge ¥100 get ¥5 bonus.",
75
  "reactivate service": "Your service is suspended due to unpaid ¥38. Recharge to restore within 30 mins.",
 
80
  "upgrade device": "You're eligible for upgrade. New iPhone plan starts at ¥399/month.",
81
  "report service outage": "We're detecting signal issues in your area (ZIP: XXX). Engineers notified."
82
  }
 
 
83
  intent_closings = {
84
  "top up balance": "Would you like to proceed with a recharge now?",
85
  "reactivate service": "Shall I help you restart your service now?",
 
94
  solution = intent_solutions.get(intent.lower(), "Here's how we can assist you with this issue.")
95
  closing = intent_closings.get(intent.lower(), "Is there anything else I can help with?")
96
  opening = "Thank you for contacting us. I understand your concern."
 
97
  return f"{opening} {solution} {closing}"
98
 
99
+ # UI
100
  st.set_page_config(page_title="Customer Support Assistant", layout="centered")
101
  st.title("📞 Smart Customer Support Assistant (for Agents Only)")
102
 
 
108
  else:
109
  with st.spinner("Processing..."):
110
 
111
+ # Emotion detection (model + rule)
112
  emotion_result = emotion_classifier(user_input)
113
+ emotion_label = get_emotion_label(emotion_result, user_input)
114
  emotion_score = get_emotion_score(emotion_label)
115
 
116
  # Intent detection