xxxxxx commited on
Commit
6f39ab6
·
1 Parent(s): ffe88ec
Files changed (1) hide show
  1. app.py +48 -21
app.py CHANGED
@@ -1,19 +1,24 @@
1
  import streamlit as st
2
  from transformers import pipeline
3
  import json
 
 
4
 
5
  # 设置页面配置
6
  st.set_page_config(page_title="中文垃圾信息分类器", page_icon="🚫", layout="wide")
7
 
8
  # 加载中文垃圾信息分类器
9
  @st.cache_resource
10
- def load_classifier():
11
- return pipeline("text-classification", model="app-x/chinese_spam_classifier")
 
 
 
12
 
13
- classifier = load_classifier()
14
 
15
  st.title("🚫 中文垃圾信息分类器")
16
- st.write("使用 app-x/chinese_spam_classifier 模型进行中文文本的垃圾信息分类。")
17
 
18
  # 创建两列布局
19
  col1, col2 = st.columns([2, 1])
@@ -25,28 +30,48 @@ with col1:
25
  if st.button("分类", key="classify_button"):
26
  if text_input:
27
  with st.spinner("正在分析..."):
28
- # 进行分类
29
- result = classifier(text_input)[0]
30
- label = "垃圾信息" if result["label"] == "LABEL_1" else "正常信息"
31
- confidence = result["score"]
 
 
 
 
 
 
32
 
33
  # 创建JSON格式的结果
34
  json_result = {
35
  "input_text": text_input,
36
- "classification": label,
37
- "confidence": confidence,
38
- "raw_output": result
 
 
 
 
 
 
 
39
  }
40
 
41
  # 显示结果
42
- st.subheader("分类结果:")
43
- if label == "垃圾信息":
44
- st.error(f"⚠️ {label}")
45
  else:
46
- st.success(f"✅ {label}")
 
 
47
 
48
- st.write(f"置信度: {confidence:.2f}")
49
- st.progress(confidence)
 
 
 
 
 
50
 
51
  # 显示JSON格式的结果
52
  st.subheader("JSON 格式的详细结果:")
@@ -59,14 +84,16 @@ with col2:
59
  st.write("""
60
  1. 在左侧文本框中输入您想要分类的中文文本。
61
  2. 点击"分类"按钮。
62
- 3. 系统将分析文本并显示结果。
63
- 4. 结果包括分类(垃圾信息或正常信息)、置信度和JSON格式的详细输出。
64
  """)
65
 
66
  st.subheader("关于模型")
67
  st.write("""
68
- 本分类器使用了 app-x/chinese_spam_classifier 模型,
69
- 该模型基于大规模中文数据集训练,能够有效识别各种类型的垃圾信息。
 
 
70
  """)
71
 
72
  st.subheader("免责声明")
 
1
  import streamlit as st
2
  from transformers import pipeline
3
  import json
4
+ from onnxruntime import InferenceSession
5
+ from transformers import AutoTokenizer
6
 
7
  # 设置页面配置
8
  st.set_page_config(page_title="中文垃圾信息分类器", page_icon="🚫", layout="wide")
9
 
10
  # 加载中文垃圾信息分类器
11
  @st.cache_resource
12
+ def load_classifiers():
13
+ hf_classifier = pipeline("text-classification", model="app-x/chinese_spam_classifier")
14
+ onnx_session = InferenceSession("app-x/chinese_spam_classifier_onnx/model_optimized.onnx")
15
+ tokenizer = AutoTokenizer.from_pretrained("app-x/chinese_spam_classifier_onnx")
16
+ return hf_classifier, onnx_session, tokenizer
17
 
18
+ hf_classifier, onnx_session, tokenizer = load_classifiers()
19
 
20
  st.title("🚫 中文垃圾信息分类器")
21
+ st.write("使用两个模型进行中文文本的垃圾信息分类。")
22
 
23
  # 创建两列布局
24
  col1, col2 = st.columns([2, 1])
 
30
  if st.button("分类", key="classify_button"):
31
  if text_input:
32
  with st.spinner("正在分析..."):
33
+ # HuggingFace模型分类
34
+ hf_result = hf_classifier(text_input)[0]
35
+ hf_label = "垃圾信息" if hf_result["label"] == "spam" else "正常信息"
36
+ hf_confidence = hf_result["score"]
37
+
38
+ # ONNX模型分类
39
+ inputs = tokenizer(text_input, return_tensors="np", padding=True, truncation=True)
40
+ onnx_result = onnx_session.run(None, dict(inputs))
41
+ onnx_label = "垃圾信息" if onnx_result[0][0][1] > onnx_result[0][0][0] else "正常信息"
42
+ onnx_confidence = max(onnx_result[0][0])
43
 
44
  # 创建JSON格式的结果
45
  json_result = {
46
  "input_text": text_input,
47
+ "huggingface_model": {
48
+ "classification": hf_label,
49
+ "confidence": hf_confidence,
50
+ "raw_output": hf_result
51
+ },
52
+ "onnx_model": {
53
+ "classification": onnx_label,
54
+ "confidence": float(onnx_confidence),
55
+ "raw_output": onnx_result[0].tolist()
56
+ }
57
  }
58
 
59
  # 显示结果
60
+ st.subheader("HuggingFace模型分类结果:")
61
+ if hf_label == "垃圾信息":
62
+ st.error(f"⚠️ {hf_label}")
63
  else:
64
+ st.success(f"✅ {hf_label}")
65
+ st.write(f"概率: {hf_confidence:.2f}")
66
+ st.progress(hf_confidence)
67
 
68
+ st.subheader("ONNX模型分类结果:")
69
+ if onnx_label == "垃圾信息":
70
+ st.error(f"⚠️ {onnx_label}")
71
+ else:
72
+ st.success(f"✅ {onnx_label}")
73
+ st.write(f"概率: {onnx_confidence:.2f}")
74
+ st.progress(float(onnx_confidence))
75
 
76
  # 显示JSON格式的结果
77
  st.subheader("JSON 格式的详细结果:")
 
84
  st.write("""
85
  1. 在左侧文本框中输入您想要分类的中文文本。
86
  2. 点击"分类"按钮。
87
+ 3. 系统将使用两个模型分析文本并显示结果。
88
+ 4. 结果包括两个模型的分类(垃圾信息或正常信息)、概率和JSON格式的详细输出。
89
  """)
90
 
91
  st.subheader("关于模型")
92
  st.write("""
93
+ 本分类器使用了两个模型:
94
+ 1. app-x/chinese_spam_classifier (HuggingFace模型)
95
+ 2. app-x/chinese_spam_classifier_onnx (ONNX模型)
96
+ 这两个模型都基于大规模中文数据集训练,能够有效识别各种类型的垃圾信息。
97
  """)
98
 
99
  st.subheader("免责声明")