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

在这里插入图片描述

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

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

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

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

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


摘要

传统的问卷分析往往只关注选择题的统计结果,容易忽略填空题背后的真实想法和情绪。本文分享如何用自然语言处理(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 plt

st.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 这样的轻量级前端工具,也让分析结果更易于分享和解读。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网罗开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值