当前位置: 首页 > news >正文

用 NLP + Streamlit,把问卷变成能说话的反馈

在这里插入图片描述

网罗开发 (小红书、快手、视频号同名)

  大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。

图书作者:《ESP32-C3 物联网工程开发实战》
图书作者:《SwiftUI 入门,进阶与实战》
超级个体:COC上海社区主理人
特约讲师:大学讲师,谷歌亚马逊分享嘉宾
科技博主:华为HDE/HDG

我的博客内容涵盖广泛,主要分享技术教程、Bug解决方案、开发工具使用、前沿科技资讯、产品评测与使用体验。我特别关注云服务产品评测、AI 产品对比、开发板性能测试以及技术报告,同时也会提供产品优缺点分析、横向对比,并分享技术沙龙与行业大会的参会体验。我的目标是为读者提供有深度、有实用价值的技术洞察与分析。

展菲:您的前沿技术领航员
👋 大家好,我是展菲!
📱 全网搜索“展菲”,即可纵览我在各大平台的知识足迹。
📣 公众号“Swift社区”,每周定时推送干货满满的技术长文,从新兴框架的剖析到运维实战的复盘,助您技术进阶之路畅通无阻。
💬 微信端添加好友“fzhanfei”,与我直接交流,不管是项目瓶颈的求助,还是行业趋势的探讨,随时畅所欲言。
📅 最新动态:2025 年 3 月 17 日
快来加入技术社区,一起挖掘技术的无限潜能,携手迈向数字化新征程!


文章目录

    • 摘要
    • 引言
    • 从问卷到数据:先整理内容
    • 用 NLP 模型做情感分析
      • 安装依赖:
      • 加载模型做情感分析:
    • Streamlit 可视化展示结果
    • 进阶玩法:关键词提取 + 群体画像
    • QA 环节
    • 总结

摘要

传统的问卷分析往往只关注选择题的统计结果,容易忽略填空题背后的真实想法和情绪。本文分享如何用自然语言处理(NLP)技术对志愿者满意度问卷进行语义理解和情感分析,结合 Streamlit 实现可视化展示,让问卷不再只是数字的堆砌,而是情绪和反馈的“放大镜”。

引言

每次做完公益活动,我们都习惯发个问卷来听听大家的声音。但最后看到的,往往是一堆单选题比例和开放题里“看起来都挺满意”的句子。这其实很难帮助组织者真正优化服务体验。

有没有可能让 AI 来“读懂”这些问卷?比如它能告诉我们:“大部分人对组织效率满意,但有人对时间安排表达了负面情绪”?有了情感分析、语义提取这些 NLP 工具,答案是肯定的。

从问卷到数据:先整理内容

在开始处理之前,我们先准备好一份包含以下字段的问卷数据(可用 Excel 或 CSV):

问卷编号满意度打分(1-5)主观评价文本
15很棒的体验,组织很周到!
23志愿者太多,感觉没安排好任务
34整体还不错,就是有点赶

我们重点处理的是“主观评价文本”字段。

用 NLP 模型做情感分析

我们这里使用 transformers 里的 distilbert-base-uncased-finetuned-sst-2-english 模型(也可以替换成 DeepSeek 或 OpenAI 的 API 模型):

安装依赖:

pip install transformers torch pandas streamlit

加载模型做情感分析:

from transformers import pipeline
import pandas as pd# 读取问卷数据
df = pd.read_csv("questionnaire.csv")# 加载情感分析模型
classifier = pipeline("sentiment-analysis")# 对每条文本进行分析
df["情绪判断"] = df["主观评价文本"].apply(lambda x: classifier(x)[0]['label'])

这样我们就拿到了每条文本的情绪标签,是正面(POSITIVE)还是负面(NEGATIVE)。

Streamlit 可视化展示结果

我们用 Streamlit 做一个小前端页面,让大家能方便地看到整体结果分布。

import streamlit as st
import matplotlib.pyplot as pltst.title("志愿者满意度问卷分析")# 加载情绪统计
emotion_counts = df["情绪判断"].value_counts()
st.subheader("情绪分布图")
st.bar_chart(emotion_counts)# 展示正负面例句
st.subheader("正面反馈示例")
st.write(df[df["情绪判断"] == "POSITIVE"]["主观评价文本"].head(5).tolist())st.subheader("负面反馈示例")
st.write(df[df["情绪判断"] == "NEGATIVE"]["主观评价文本"].head(5).tolist())

运行:

streamlit run app.py

就可以打开可视化页面啦。

进阶玩法:关键词提取 + 群体画像

我们可以接着做关键词提取,比如用 keyBERT,也可以把满意度得分和情绪标签一起结合,做个简单的聚类分析。

如果愿意连接 OpenAI / DeepSeek 等大模型,还能做更复杂的总结,比如:

  • 自动生成问卷摘要

  • 提出优化建议(基于负面情绪聚类)

QA 环节

Q: 文本比较短,模型能分析准确吗?
A: 情绪分析在短文本里反而更容易表现出倾向性,只要模型训练得好,还是比较靠谱的。但也建议人工抽样验证结果。

Q: 可以支持中文吗?
A: 当然可以!你只需要加载支持中文的模型,例如 uer/roberta-base-finetuned-jd-binary-chinese,并保证问卷字段是中文内容。

Q: 处理速度慢怎么办?
A: 本地部署可以开多线程,或者考虑批量处理。大模型可以替换为轻量级版本如 FastText、TextBlob 等。

总结

一份问卷真正的价值,在于“听懂人话”。通过情感分析和 NLP 技术,我们能更真实地理解志愿者的体验,用数据驱动服务优化。而 Streamlit 这样的轻量级前端工具,也让分析结果更易于分享和解读。

后续可以引入知识图谱、多轮对话系统,让志愿者填写问卷时也能感受到智能陪伴,或者在问卷分析中加入跨时间趋势分析,更好地为公益项目服务。

相关文章:

  • PyCharm入门导览
  • 深度学习-全连接神经网络-1
  • 解析:深度优先搜索、广度优先搜索和回溯搜索
  • 通信算法之269 : OFDM信号的循环自相关特性用于无人机图传信号识别
  • 第 3 期:逆过程建模与神经网络的作用(Reverse Process)
  • 【MySQL数据库入门到精通】
  • Harmony5.0 设置应用全屏模式,隐藏导航栏和状态栏
  • Houdini python code:参数指定文件路径
  • TVM计算图分割--Collage
  • transient关键字深度解析
  • Linux 网络接口 /sys/class/net/eth0 文件详解
  • AI的出现,是否能替代IT从业者?
  • webgl入门实例-10正交投影基本概念
  • C++ AVL树
  • 自学C语言——指针详解(一)
  • 网站制作公司哪家好?如何选择靠谱的网站设计公司
  • 卷积神经网络(CNN)与VGG16在图像识别中的实验设计与思路
  • 工商业光伏发电自发自用余电不上网?“防逆流装置”怎么选?
  • 在msys2里面编译antlr4的过程记录
  • 《软件设计师》复习笔记(12.1)——范围管理、进度管理
  • 竹子砍了地却种不上,贵州赤水被指“整改复耕”存形式主义
  • 美国防部查信息外泄,防长四名亲信被解职
  • 体坛联播|巴萨三球逆转塞尔塔,CBA季后赛山西横扫广东
  • 西藏艺术来到黄浦江畔,“隐秘之门”艺术展外滩三号开幕
  • 老总们带着产品直奔对接会,外贸拓内销找到更多“新路子”
  • 寺庙餐饮,被年轻人追捧成新顶流