Spaces:
Sleeping
Sleeping
File size: 4,130 Bytes
cb51f0d a3aeb53 cb51f0d a3aeb53 cb51f0d a3aeb53 cb51f0d d232501 cb51f0d a3aeb53 cb51f0d a3aeb53 cb51f0d a3aeb53 cb51f0d a3aeb53 cb51f0d a3aeb53 cb51f0d a3aeb53 cb51f0d a3aeb53 cb51f0d a3aeb53 38a75f1 cb51f0d 38a75f1 cb51f0d a3aeb53 cb51f0d a3aeb53 cb51f0d a3aeb53 cb51f0d 6843859 cb51f0d cc50bcf a3aeb53 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# V3
# Improve speed and user experience
import streamlit as st
from transformers import pipeline
from langdetect import detect
# 加载翻译 pipeline
@st.cache_resource
def load_translation_pipeline():
return pipeline("translation", model="facebook/m2m100_418M", max_length=256)
# 加载情感分析 pipeline
@st.cache_resource
def load_sentiment_pipeline():
return pipeline("sentiment-analysis", model="Rocky080808/finetuned-distilbert-base-uncased-finetuned-sst-2-english", max_length=256)
# 定义语言映射
language_name_map = {
'en': "English",
'zh-cn': "Chinese (Simplified)",
'zh-tw': "Chinese (Traditional)",
'ja': "Japanese",
'de': "German",
'es': "Spanish",
'fr': "French"
}
# 翻译到英语的函数
def translate_to_english(text, translation_pipeline):
detected_language = detect(text)
# 语言映射
language_map = {
'en': "en", # 英语直接通过
'zh-cn': "zh", # Simplified Chinese
'zh-tw': "zh", # Traditional Chinese
'ja': "ja", # Japanese
'de': "de", # German
'es': "es", # Spanish
'fr': "fr" # French
}
if detected_language not in language_map:
return None, "Unsupported language"
# 如果检测到是英语,直接返回原文本
if detected_language == 'en':
return text, "en"
# 翻译为英语
translated_text = translation_pipeline(text, src_lang=language_map[detected_language], tgt_lang="en")
return translated_text[0]['translation_text'], language_name_map.get(detected_language, detected_language)
# 主程序逻辑
def main():
# 加载翻译和情感分析模型
translation_pipeline = load_translation_pipeline()
sentiment_pipeline = load_sentiment_pipeline()
st.title("Global Customer Reviews Sentiment Analyzer")
st.write("Analyze customer sentiment by their reviews. Please input the customer reviews to get the sentiment analysis result.")
st.write("Support 6 languages: English, Chinese, Japanese, German, Spanish and French.")
st.write("For example, by inputting: I like the product very much!")
st.write("The application will tell you: Very satisfied, the customer is very likely to return and recommend.")
user_input = st.text_input("Enter customer reviews here and press Analyze:")
# 用户点击分析按钮后触发
if st.button("Analyze"):
if user_input:
# 翻译或直接处理英语
translated_text, detected_language = translate_to_english(user_input, translation_pipeline)
if detected_language == "Unsupported language":
st.write("The input language is not supported. Please use Chinese, Japanese, German, Spanish, or French.")
else:
# 显示检测语言和翻译结果(如果需要翻译)
st.write(f"Detected language: {language_name_map.get(detected_language, detected_language)}")
st.write(f"Translated Text: {translated_text}" if detected_language != "English" else f"Original Text: {translated_text}")
# 情感分析
result = sentiment_pipeline(translated_text)
label_str = result[0]["label"]
label = int(label_str.split("_")[-1])
confidence = result[0]["score"]
# 情感结果映射
label_to_text = {
0: "Very dissatisfied, immediate follow-up is required.",
1: "Dissatisfied, please arrange follow-up.",
2: "Neutral sentiment, further case analysis is needed.",
3: "Satisfied, the customer may return for a purchase.",
4: "Very satisfied, the customer is very likely to return and recommend."
}
sentiment_text = label_to_text.get(label, "Unrecognized sentiment")
st.write(f"Sentiment Analysis Result: {sentiment_text}")
# st.write(f"Confidence Score: {confidence:.2f}")
if __name__ == "__main__":
main()
|