Rocky080808 commited on
Commit
cb51f0d
·
verified ·
1 Parent(s): 0de5d23

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +98 -0
app.py CHANGED
@@ -49,6 +49,7 @@ if __name__ == "__main__":
49
 
50
  # New codes to be tested
51
 
 
52
  import streamlit as st
53
  from transformers import pipeline
54
  from langdetect import detect
@@ -132,6 +133,103 @@ def main():
132
 
133
  if __name__ == "__main__":
134
  main()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
135
 
136
 
137
 
 
49
 
50
  # New codes to be tested
51
 
52
+ '''
53
  import streamlit as st
54
  from transformers import pipeline
55
  from langdetect import detect
 
133
 
134
  if __name__ == "__main__":
135
  main()
136
+ '''
137
+
138
+
139
+ # V3
140
+ # Improve speed and user experience
141
+
142
+ import streamlit as st
143
+ from transformers import pipeline
144
+ from langdetect import detect
145
+
146
+ # 加载翻译pipeline
147
+ @st.cache_resource
148
+ def load_translation_pipeline():
149
+ return pipeline("translation", model="facebook/m2m100_418M")
150
+
151
+ # 加载情感分析pipeline
152
+ @st.cache_resource
153
+ def load_sentiment_pipeline():
154
+ return pipeline("sentiment-analysis", model="Rocky080808/finetuned-roberta-base")
155
+
156
+ # 定义语言映射
157
+ language_name_map = {
158
+ 'zh-cn': "Chinese (Simplified)",
159
+ 'zh-tw': "Chinese (Traditional)",
160
+ 'ja': "Japanese",
161
+ 'de': "German",
162
+ 'es': "Spanish",
163
+ 'fr': "French"
164
+ }
165
+
166
+ def translate_to_english(text, translation_pipeline):
167
+ # 检测语言
168
+ detected_language = detect(text)
169
+
170
+ # 语言映射
171
+ language_map = {
172
+ 'zh-cn': "zh",
173
+ 'zh-tw': "zh",
174
+ 'ja': "ja",
175
+ 'de': "de",
176
+ 'es': "es",
177
+ 'fr': "fr"
178
+ }
179
+
180
+ if detected_language not in language_map:
181
+ return None, "Unsupported language"
182
+
183
+ # 翻译到英语
184
+ translated_text = translation_pipeline(text, src_lang=language_map[detected_language], tgt_lang="en")
185
+
186
+ return translated_text[0]['translation_text'], language_name_map.get(detected_language, detected_language)
187
+
188
+ # 主程序逻辑
189
+ def main():
190
+ # 加载模型
191
+ translation_pipeline = load_translation_pipeline()
192
+ sentiment_pipeline = load_sentiment_pipeline()
193
+
194
+ st.title("Global Customer Sentiment Analyzer")
195
+ st.write("Analyze customer sentiment in multiple languages including Chinese, Japanese, German, Spanish, and French.")
196
+
197
+ user_input = st.text_input("Enter customer comments in supported languages:")
198
+
199
+ # 用户点击分析按钮后触发
200
+ if st.button("Analyze"):
201
+ if user_input:
202
+ # 翻译
203
+ translated_text, detected_language = translate_to_english(user_input, translation_pipeline)
204
+
205
+ if detected_language == "Unsupported language":
206
+ st.write("The input language is not supported. Please use Chinese, Japanese, German, Spanish, or French.")
207
+ else:
208
+ # 显示检测语言和翻译结果
209
+ st.write(f"Detected language: {detected_language}")
210
+ st.write(f"Translated Text: {translated_text}")
211
+
212
+ # 情感分析
213
+ result = sentiment_pipeline(translated_text)
214
+ label_str = result[0]["label"]
215
+ label = int(label_str.split("_")[-1])
216
+ confidence = result[0]["score"]
217
+
218
+ # 情感结果映射
219
+ label_to_text = {
220
+ 0: "Very dissatisfied, immediate follow-up is required.",
221
+ 1: "Dissatisfied, please arrange follow-up.",
222
+ 2: "Neutral sentiment, further case analysis is needed.",
223
+ 3: "Satisfied, the customer may return for a purchase.",
224
+ 4: "Very satisfied, the customer is very likely to return and recommend."
225
+ }
226
+ sentiment_text = label_to_text.get(label, "Unrecognized sentiment")
227
+
228
+ st.write(f"Sentiment Analysis Result: {sentiment_text}")
229
+ st.write(f"Confidence Score: {confidence:.2f}")
230
+
231
+ if __name__ == "__main__":
232
+ main()
233
 
234
 
235