恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

用 Streamlit 给文本分类模型做一个演示页面

  • 首页
  • 资讯中心
  • /
  • 用 Streamlit 给文本分类模型做一个演示页面

相关资讯

TI Jacinto 6 Plus ISP6P5 SYS3与NSF3V寄存器配置实战指南 2026/8/2 19:20:53
保存与加载文本分类模型:让预测可以复用 2026/8/2 19:20:54
Go协程优化Claude API高并发调用的实战指南 2026/8/2 19:20:54

最新资讯

展讯平台Camera驱动移植实战:从裸机点亮到量产调优
GPIB仪器控制必备:NI-488.2 C++开发与常见避坑指南
attrs 比较机制完全指南:默认相等性、排序生成与自定义比较(Comparison)
InterviewGuide 操作系统面试高频题 41-60 详解:内存分布、页面置换算法与死锁处理全解析
搜索二叉树C++实现:从插入删除到拷贝析构的完整指南
通讯录管理系统数据库课程设计:从建表到Java增删改查完整落地

今日推荐

Debian新手入门:从部署到日常操作的完整指南
MongoDB复制集扩缩容实战:从rs.add到选主事故复盘
条形码目标检测数据集实战:从YOLOv8训练到部署

本周热门

UE动画修改实战:从资产编辑到重定向与蒙太奇驱动
统计随机数生成器攻击下的KLJN安全密钥交换协议Matlab仿真
政务API安全治理:资产测绘、低代码编排与行标对标实践

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

用 Streamlit 给文本分类模型做一个演示页面

发布时间:2026/10/12 3:23:18
用 Streamlit 给文本分类模型做一个演示页面 文本分类模型训练好以后如果只能在 notebook 里运行就很难给别人演示。这一课不做正式部署只做一个本地交互页面输入一段中文文本点击按钮页面显示模型预测结果。我们用 Streamlit是因为它适合快速把 Python 脚本变成演示页面不需要写 HTML/CSS/JavaScript。本课目标假设你已经有一个保存好的 Pipelinemodels/text_classifier_pipeline.joblib它包含TF-IDF 向量化器分类模型训练阶段的特征处理流程。这节课要做的是加载模型 - 输入文本 - 分词或清洗 - 调用 predict - 在页面展示结果安装 Streamlit先安装pipinstallstreamlit joblib jieba scikit-learn如果你的模型训练时用到了别的库也要在当前环境里安装同样依赖。推荐目录结构可以先用这个最小结构text-classifier-demo/ app.py models/ text_classifier_pipeline.joblibapp.py是页面入口models目录放模型文件。写一个最小页面先创建app.pyimportstreamlitasst st.set_page_config(page_title中文文本分类演示)st.title(中文文本分类演示)st.write(输入一段文本查看模型预测类别。)textst.text_area(请输入文本,height160)ifst.button(开始预测):ifnottext.strip():st.warning(请先输入文本)else:st.success(这里显示预测结果)运行streamlit run app.py如果页面能打开说明 Streamlit 基础环境没问题。加载模型接着加载模型frompathlibimportPathimportjoblibimportstreamlitasst MODEL_PATHPath(models/text_classifier_pipeline.joblib)st.cache_resourcedefload_model():returnjoblib.load(MODEL_PATH)modelload_model()这里用了st.cache_resource作用是让模型只加载一次。否则页面每次刷新或交互都重新加载会变慢。加入文本预处理如果你的 Pipeline 输入的是原始文本可以直接传入原句。如果你的 Pipeline 输入的是分词后的文本就要保持和训练阶段一致importjiebadefcut_text(text):return .join(jieba.lcut(str(text)))预测时input_textcut_text(text)predmodel.predict([input_text])[0]训练和预测的预处理必须一致。否则模型看到的特征空间会变。完整预测代码把页面和模型合起来frompathlibimportPathimportjiebaimportjoblibimportstreamlitasst MODEL_PATHPath(models/text_classifier_pipeline.joblib)st.set_page_config(page_title中文文本分类演示)st.title(中文文本分类演示)st.caption(输入中文文本查看模型预测类别。)st.cache_resourcedefload_model():returnjoblib.load(MODEL_PATH)defcut_text(text):return .join(jieba.lcut(str(text)))modelload_model()textst.text_area(请输入文本,height180)ifst.button(开始预测):ifnottext.strip():st.warning(请先输入文本)else:input_textcut_text(text)labelmodel.predict([input_text])[0]st.success(f预测类别{label})这就是一个最小可运行版本。如果模型支持置信度有些模型支持predict_proba()ifhasattr(model,predict_proba):probamodel.predict_proba([input_text])[0]classesmodel.classes_ scoresdict(zip(classes,proba))st.write(scores)可以用表格展示按概率从高到低排序importpandasaspd score_dfpd.DataFrame({类别:classes,概率:proba,}).sort_values(概率,ascendingFalse)st.dataframe(score_df,use_container_widthTrue)注意概率不一定等于真实可信度。它只是模型的输出分布仍然要结合测试集评估。增加错误提示模型文件不存在时不要让页面直接崩掉ifnotMODEL_PATH.exists():st.error(没有找到模型文件请先训练并保存模型。)st.stop()这样别人打开页面时也能知道问题出在哪里。批量预测上传 CSV 一次分类多条单条输入演示够用以后可以加一个文件上传组件批量预测一个 CSV。核心是用st.file_uploader读文件预测完用st.dataframe展示、st.download_button导出importpandasaspd st.title(批量文本分类)uploaded_filest.file_uploader(上传 CSV至少包含 text 列,type[csv])ifuploaded_fileisnotNone:dfpd.read_csv(uploaded_file)st.write(f共{len(df)}条待分类文本)ifst.button(开始批量分类):# 训练时如果分过词这里也要走同样的分词cut_texts[cut_text(t)fortindf[text].values]df[预测类别]model.predict(cut_texts)st.dataframe(df.head(50))st.write(分类分布)st.bar_chart(df[预测类别].value_counts())csvdf.to_csv(indexFalse).encode(utf-8-sig)st.download_button(下载结果 CSV,csv,result.csv)utf-8-sig带 BOMExcel 打开中文不会乱码。Streamlit 的常用组件可以归成几类组件作用st.title / write / success页面元素标题、文本、提示st.text_area / file_uploader输入多行文本、文件上传st.button触发动作st.dataframe / bar_chart展示表格、图表st.download_button导出 CSV核心思想是你写 PythonStreamlit 负责生成页面。Streamlit 演示不是正式部署这一课只把模型做成演示页面不等于正式线上服务。正式部署还要考虑依赖文件如何管理模型文件如何上传多用户同时访问日志和异常处理输入长度限制敏感内容过滤API 鉴权和安全。本地运行用streamlit run app.py浏览器会打开http://localhost:8501。如果想上线给别人用可以把app.py加模型加requirements.txt推到 GitHub用 Streamlit Cloud 或 Hugging Face Spaces 自动部署。但前面那些工程化问题仍然要单独处理。常见错误模型路径写错本地运行时相对路径以命令执行目录为准。建议用Path管理路径。预测前忘记分词如果训练时使用的是分词后的文本页面输入也要走同样分词。模型和依赖版本不一致joblib加载模型依赖 Python 对象结构。训练环境和演示环境里的 scikit-learn 版本差异太大可能加载失败。页面显示概率但不解释含义概率只是模型估计不代表一定正确。不要在页面上写成“准确率”。小结Streamlit 的价值是快速演示输入文本 - 加载模型 - 复用训练时的预处理 - predict - 展示结果它适合教学、验证和内部演示。正式部署还需要 API、日志、安全和环境管理。下一阶段我们回到 PyTorch先补 Tensor 进阶操作再理解自动微分和计算图。在线阅读点击这里阅读博客原文原文地址https://bestsdz.xyz/posts/streamlit-text-classification-demo/

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号