Spaces:
Sleeping
Sleeping
File size: 3,866 Bytes
b190df6 eb36871 ffe88ec 6f39ab6 eb36871 73ef696 2cdac3e ffe88ec b190df6 6f39ab6 73ef696 6f39ab6 eb36871 73ef696 eb36871 2cdac3e eb36871 2cdac3e ffe88ec 6f39ab6 2cdac3e ffe88ec eb36871 583a758 eb36871 583a758 eb36871 ffe88ec 32f9de4 ffe88ec eb36871 8bb6322 eb36871 32f9de4 eb36871 8bb6322 ffe88ec 6f39ab6 ffe88ec 6f39ab6 ffe88ec eb36871 |
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 |
import streamlit as st
from transformers import pipeline, AutoTokenizer
import json
from onnxruntime import InferenceSession
import numpy as np
from huggingface_hub import hf_hub_download
# 设置页面配置
st.set_page_config(page_title="中文垃圾信息分类器", page_icon="🚫", layout="wide")
# 加载中文垃圾信息分类器
@st.cache_resource
def load_classifiers():
hf_classifier = pipeline("text-classification", model="app-x/chinese_spam_classifier")
# 从Hugging Face Hub下载ONNX模型
onnx_path = hf_hub_download("app-x/chinese_spam_classifier_onnx", "model_optimized.onnx")
onnx_session = InferenceSession(onnx_path)
tokenizer = AutoTokenizer.from_pretrained("app-x/chinese_spam_classifier_onnx")
# 加载配置文件
config_path = hf_hub_download("app-x/chinese_spam_classifier_onnx", "config.json")
with open(config_path, "r") as f:
config = json.load(f)
id2label = config["id2label"]
return hf_classifier, onnx_session, tokenizer, id2label
hf_classifier, onnx_session, tokenizer, id2label = load_classifiers()
st.title("🚫 中文垃圾信息分类器")
st.write("使用两个模型进行中文文本的垃圾信息分类。")
# 创建两列布局
col1, col2 = st.columns([2, 1])
def classify_text(text):
# HuggingFace模型分类
hf_result = hf_classifier(text)[0]
hf_label = hf_result["label"]
hf_confidence = hf_result["score"]
# ONNX模型分类
inputs = tokenizer(text, return_tensors="np", padding=True, truncation=True)
onnx_result = onnx_session.run(None, dict(inputs))
onnx_probs = onnx_result[0][0]
onnx_label = "spam" if onnx_probs[1] > onnx_probs[0] else "normal"
onnx_confidence = np.max(onnx_probs)
return {
"hf": {"label": hf_label, "confidence": hf_confidence},
"onnx": {"label": onnx_label, "confidence": float(onnx_confidence)}
}
with col1:
# 创建文本输入框
text_input = st.text_area("请输入中文文本:", height=200)
if st.button("分析", key="classify_button"):
if text_input:
with st.spinner("正在分析..."):
results = classify_text(text_input)
for model, result in results.items():
st.subheader(f"{model.upper()} 模型分类结果:")
label = "垃圾信息" if result["label"] == "spam" else "正常信息"
if label == "垃圾信息":
st.error(f"⚠️ {label}")
else:
st.success(f"✅ {label}")
st.write(f"概率: {result['confidence']:.2f}")
st.write(f"详细输出: {json.dumps(result, ensure_ascii=False)}")
st.markdown("---")
else:
st.warning("请输入文本后再进行分类。")
with col2:
st.subheader("使用说明")
st.write("""
1. 在左侧文本框中输入您想要分类的中文文本。
2. 点击"分类"按钮。
3. 系统将使用两个模型分析文本并显示结果。
4. 结果包括两个模型的分类(垃圾信息或正常信息)、概率和JSON格式的详细输出。
""")
st.subheader("关于模型")
st.write("""
本分类器使用了两个模型:
1. app-x/chinese_spam_classifier (HuggingFace模型)
2. app-x/chinese_spam_classifier_onnx (ONNX模型)
这两个模型都基于大规模中文数据集训练,能够有效识别各种类型的垃圾信息。
""")
st.subheader("免责声明")
st.info("""
此分类器仅作为辅助工具,不应完全依赖其结果。
请始终保持警惕,谨慎处理可疑信息。
""")
# 添加页脚
st.markdown("---")
st.markdown("由 Streamlit 和 Hugging Face 提供支持 | 作者:[app-x]")
|