Rocky080808 commited on
Commit
a3aeb53
·
verified ·
1 Parent(s): bcd9a8d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -34
app.py CHANGED
@@ -5,23 +5,19 @@ import streamlit as st
5
  from transformers import pipeline
6
  from langdetect import detect
7
 
8
-
9
- # 继续应用的主逻辑
10
- # 加载翻译pipeline、加载情感分析pipeline、定义语言映射
11
- # 然后定义 main() 函数等逻辑...
12
-
13
- # 加载翻译pipeline
14
  @st.cache_resource
15
  def load_translation_pipeline():
16
- return pipeline("translation", model="facebook/m2m100_418M")
17
 
18
- # 加载情感分析pipeline
19
  @st.cache_resource
20
  def load_sentiment_pipeline():
21
- return pipeline("sentiment-analysis", model="Rocky080808/finetuned-roberta-base")
22
 
23
  # 定义语言映射
24
  language_name_map = {
 
25
  'zh-cn': "Chinese (Simplified)",
26
  'zh-tw': "Chinese (Traditional)",
27
  'ja': "Japanese",
@@ -30,63 +26,60 @@ language_name_map = {
30
  'fr': "French"
31
  }
32
 
 
33
  def translate_to_english(text, translation_pipeline):
34
- # 检测语言
35
  detected_language = detect(text)
36
 
37
  # 语言映射
38
  language_map = {
39
- 'zh-cn': "zh",
40
- 'zh-tw': "zh",
41
- 'ja': "ja",
42
- 'de': "de",
43
- 'es': "es",
44
- 'fr': "fr"
 
45
  }
46
-
47
  if detected_language not in language_map:
48
  return None, "Unsupported language"
49
 
50
- # 翻译到英语
51
- translated_text = translation_pipeline(text, src_lang=language_map[detected_language], tgt_lang="en")
 
52
 
 
 
53
  return translated_text[0]['translation_text'], language_name_map.get(detected_language, detected_language)
54
 
55
  # 主程序逻辑
56
  def main():
57
- # 加载模型
58
  translation_pipeline = load_translation_pipeline()
59
  sentiment_pipeline = load_sentiment_pipeline()
60
 
61
- st.title("Global Customer Sentiment Analyzer")
62
  st.write("Analyze customer sentiment in multiple languages including Chinese, Japanese, German, Spanish, and French.")
63
 
64
- st.write("There will be 5 kinds of results. Please take action accordingly when needed.")
65
- st.write("Very dissatisfied, immediate follow-up is required.")
66
- st.write("Dissatisfied, please arrange follow-up.")
67
- st.write("Neutral sentiment, further case analysis is needed.")
68
- st.write("Satisfied, the customer may return for a purchase.")
69
- st.write("Very satisfied, the customer is very likely to return and recommend.")
70
-
71
  user_input = st.text_input("Enter customer comments in supported languages:")
72
 
73
  # 用户点击分析按钮后触发
74
  if st.button("Analyze"):
75
  if user_input:
76
- # 翻译
77
  translated_text, detected_language = translate_to_english(user_input, translation_pipeline)
78
 
79
  if detected_language == "Unsupported language":
80
  st.write("The input language is not supported. Please use Chinese, Japanese, German, Spanish, or French.")
81
  else:
82
- # 显示检测语言和翻译结果
83
- st.write(f"Detected language: {detected_language}")
84
- st.write(f"Translated Text: {translated_text}")
85
 
86
  # 情感分析
87
  result = sentiment_pipeline(translated_text)
88
- label_str = result[0]["label"]
89
- label = int(label_str.split("_")[-1])
90
  confidence = result[0]["score"]
91
 
92
  # 情感结果映射
@@ -107,3 +100,4 @@ if __name__ == "__main__":
107
 
108
 
109
 
 
 
5
  from transformers import pipeline
6
  from langdetect import detect
7
 
8
+ # 加载翻译 pipeline
 
 
 
 
 
9
  @st.cache_resource
10
  def load_translation_pipeline():
11
+ return pipeline("translation", model="facebook/m2m100_418M", max_length=256)
12
 
13
+ # 加载情感分析 pipeline
14
  @st.cache_resource
15
  def load_sentiment_pipeline():
16
+ return pipeline("sentiment-analysis", model="Rocky080808/finetuned-roberta-base", max_length=128)
17
 
18
  # 定义语言映射
19
  language_name_map = {
20
+ 'en': "English",
21
  'zh-cn': "Chinese (Simplified)",
22
  'zh-tw': "Chinese (Traditional)",
23
  'ja': "Japanese",
 
26
  'fr': "French"
27
  }
28
 
29
+ # 翻译到英语的函数
30
  def translate_to_english(text, translation_pipeline):
 
31
  detected_language = detect(text)
32
 
33
  # 语言映射
34
  language_map = {
35
+ 'en': "en", # 英语直接通过
36
+ 'zh-cn': "zh", # Simplified Chinese
37
+ 'zh-tw': "zh", # Traditional Chinese
38
+ 'ja': "ja", # Japanese
39
+ 'de': "de", # German
40
+ 'es': "es", # Spanish
41
+ 'fr': "fr" # French
42
  }
43
+
44
  if detected_language not in language_map:
45
  return None, "Unsupported language"
46
 
47
+ # 如果检测到是英语,直接返回原文本
48
+ if detected_language == 'en':
49
+ return text, "en"
50
 
51
+ # 翻译为英语
52
+ translated_text = translation_pipeline(text, src_lang=language_map[detected_language], tgt_lang="en")
53
  return translated_text[0]['translation_text'], language_name_map.get(detected_language, detected_language)
54
 
55
  # 主程序逻辑
56
  def main():
57
+ # 加载翻译和情感分析模型
58
  translation_pipeline = load_translation_pipeline()
59
  sentiment_pipeline = load_sentiment_pipeline()
60
 
61
+ st.title("Global Customer Reviews Sentiment Analyzer")
62
  st.write("Analyze customer sentiment in multiple languages including Chinese, Japanese, German, Spanish, and French.")
63
 
 
 
 
 
 
 
 
64
  user_input = st.text_input("Enter customer comments in supported languages:")
65
 
66
  # 用户点击分析按钮后触发
67
  if st.button("Analyze"):
68
  if user_input:
69
+ # 翻译或直接处理英语
70
  translated_text, detected_language = translate_to_english(user_input, translation_pipeline)
71
 
72
  if detected_language == "Unsupported language":
73
  st.write("The input language is not supported. Please use Chinese, Japanese, German, Spanish, or French.")
74
  else:
75
+ # 显示检测语言和翻译结果(如果需要翻译)
76
+ st.write(f"Detected language: {language_name_map.get(detected_language, detected_language)}")
77
+ st.write(f"Translated Text: {translated_text}" if detected_language != "English" else f"Original Text: {translated_text}")
78
 
79
  # 情感分析
80
  result = sentiment_pipeline(translated_text)
81
+ label_str = result[0]["label"]
82
+ label = int(label_str.split("_")[-1])
83
  confidence = result[0]["score"]
84
 
85
  # 情感结果映射
 
100
 
101
 
102
 
103
+