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

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

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

相关文章:

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

网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…...

TCP/IP和UDP协议的发展历程

TCP/IP和UDP协议的发展历程 引言 互联网的发展史是人类技术创新的辉煌篇章,而在这一发展过程中,通信协议发挥了奠基性的作用。TCP/IP(传输控制协议/互联网协议)和UDP(用户数据报协议)作为互联网通信的基础…...

Function Calling的时序图(含示例)

🧍 用户: 发起请求,输入 prompt(比如:“请告诉我北京的天气”)。 🟪 应用: 将用户输入的 prompt 和函数定义(包括函数名、参数结构等)一起发给 OpenAI。 …...

DICOM通讯(ACSE->DIMSE->Worklist)

DICOM 通讯协议中的 ACSE → DIMSE → Worklist 这条通讯链路。DICOM 通讯栈本身是一个多层的协议结构,就像 OSI 模型一样,逐层封装功能。 一、DICOM 通讯协议栈总体架构 DICOM 通讯使用 TCP/IP 建立连接,其上面封装了多个协议层次&#xf…...

若依框架修改左侧菜单栏默认选中颜色

1.variables.sacc中修改为想要的颜色 2.给目标设置使用的颜色...

搜广推校招面经七十八

字节推荐算法 一、实习项目:多任务模型中的每个任务都是做什么?怎么确定每个loss的权重 这个根据实际情况来吧。如果实习时候用了moe,就可能被问到。 loss权重的话,直接根据任务的重要性吧。。。 二、特征重要性怎么判断的&…...

广搜bfs-P1443 马的遍历

P1443 马的遍历 题目来源-洛谷 题意 要求马到达棋盘上任意一个点最少要走几步 思路 国际棋盘规则是马的走法是-日字形,也称走马日,即x,y一个是走两步,一个是一步 要求最小步数,所以考虑第一次遍历到的点即为最小步数&#xff…...

强化学习算法系列(六):应用最广泛的算法——PPO算法

强化学习算法 (一)动态规划方法——策略迭代算法(PI)和值迭代算法(VI) (二)Model-Free类方法——蒙特卡洛算法(MC)和时序差分算法(TD) (三)基于动作值的算法——Sarsa算法与Q-Learning算法 (四…...

Vue3 + TypeScript中provide和inject的用法示例

基础写法&#xff08;类型安全&#xff09; typescript // parent.component.vue import { provide, ref } from vue import type { InjectionKey } from vue// 1. 定义类型化的 InjectionKey const COUNTER_KEY Symbol() as InjectionKey<number> const USER_KEY Sy…...

AI Agents系列之AI代理架构体系

1. 引言 智能体架构是定义智能体组件如何组织和交互的蓝图,使智能体能够感知其环境、推理并采取行动。本质上,它就像是智能体的数字大脑——集成了“眼睛”(传感器)、“大脑”(决策逻辑)和“手”(执行器),用于处理信息并采取行动。 选择正确的架构对于构建有效的智能…...

3个实用的脚本

1. Linux 系统清理临时文件脚本 该脚本用于清理系统中 /tmp 目录下超过 7 天的临时文件。 #!/bin/bash# 清理 /tmp 目录下超过 7 天的文件 find /tmp -type f -atime 7 -exec rm -f {} \;# 清理 /var/tmp 目录下超过 7 天的文件 find /var/tmp -type f -atime 7 -exec rm -f {…...

2025海外代理IP测评:Bright Data,ipfoxy,smartproxy,ipipgo,kookeey,ipidea哪个值得推荐?

近年来&#xff0c;随着全球化和跨境业务需求的不断扩大“海外代理IP”逐渐成为企业和个人在多样化场景中的重要工具。无论是进行数据采集、广告验证、社交媒体管理&#xff0c;还是跨境电商平台运营&#xff0c;选择合适的代理IP服务商都显得尤为重要。然而&#xff0c;市场上…...

条款13:以对象管理资源

什么是资源&#xff1f;内存&#xff1f;没错但是内存只是我们需要管理众多资源的一种&#xff0c;资源还包括数据的连接&#xff0c;文件描述符&#xff0c;互斥锁&#xff0c;网络套接字&#xff0c;不管哪种资源他都是从系统中获取的&#xff0c;当你不在需要他的时候是要还…...

Android守护进程——Vold (Volume Daemon)

简介 介绍&#xff1a;Vold 是用来管理 android 系统的存储设备&#xff0c;如U盘、SD卡、磁盘等移动设备的热插拔、挂载、卸载、格式化 框架结构&#xff1a;Vold 在系统中以守护进程存在&#xff0c;是一个单独的进程。处于Kernel和Framework之间&#xff0c;是两个层级连接…...

vue3+vite 实现.env全局配置

首先创建.env文件 VUE_APP_BASE_APIhttp://127.0.0.1/dev-api 然后引入依赖&#xff1a; pnpm install dotenv --save-dev 引入完成后&#xff0c;在vite.config.js配置文件内加入以下内容&#xff1a; const env dotenv.config({ path: ./.env }).parsed define: { // 将…...

AI 组件库是什么?如何影响UI的开发?

AI组件库是基于人工智能技术构建的、面向用户界面&#xff08;UI&#xff09;开发的预制模块集合。它们结合了传统UI组件&#xff08;如按钮、表单、图表&#xff09;与AI能力&#xff08;如机器学习、自然语言处理、计算机视觉&#xff09;&#xff0c;旨在简化开发流程并增强…...

【AI模型学习】关于写论文——论文的审美

文章目录 一、“补丁法”&#xff08;Patching&#xff09;1.1 介绍1.2 方法论1.3 实例 二、判断工作的价值2.1 介绍2.2 详细思路2.3 科研性vs工程性 三、novelty以及误区3.1 介绍3.2 举例 看了李沐老师的读论文系列后&#xff0c;总结三个老师提到的有关课题研究和论文写作的三…...

OpenCV day6

函数内容接上文&#xff1a;OpenCV day4-CSDN博客 , OpenCV day5-CSDN博客 目录 平滑&#xff08;模糊&#xff09; 25.cv2.blur()&#xff1a; 26.cv2.boxFilter(): 27.cv2.GaussianBlur()&#xff1a; 28.cv2.medianBlur(): 29.cv2.bilateralFilter()&#xff1a; 锐…...

AI的出现,是否能替代IT从业者?

一、技术能力的边界&#xff1a;AI 能做什么&#xff1f; 自动化基础任务 代码生成&#xff1a;GitHub Copilot、天工 AI 等工具可自动生成 80% 以上的重复性代码&#xff0c;例如根据自然语言描述生成完整的网站前端代码。测试与运维&#xff1a;AI 驱动的测试工具能自动生成测…...

【AI飞】AutoIT入门七(实战):python操控autoit解决csf视频批量转换(有点难,AI都不会)

背景&#xff1a; 终极目标&#xff1a;通过python调用大模型&#xff0c;获得结果&#xff0c;然后根据返回信息&#xff0c;控制AutoIT操作电脑软件&#xff0c;执行具体工作。让AI更具有执行力。 已完成部分&#xff1a; 关于python调用大模型的&#xff0c;可以参考之前的…...

MARA/MARC表 PSTAT字段

最近要开发一个维护物料视图的功能。其中PSTAT字段是来记录已经维护的视图的。这里记录一下视图和其对应的字母。 MARA还有个VPSTA&#xff08;完整状态&#xff09;字段&#xff0c;不过在我试的时候每次PSTAT出现一个它就增加一个&#xff0c;不知道具体是为什么。 最近一直…...

《探秘鸿蒙分布式软总线:开启无感发现与零等待传输新时代》

在数字化浪潮中&#xff0c;设备之间的互联互通成为构建智能生态的关键。鸿蒙系统中的分布式软总线技术&#xff0c;宛如一座桥梁&#xff0c;让各种智能设备紧密相连。尤其是其实现的设备间无感发现和零等待传输功能&#xff0c;更是为用户带来了前所未有的便捷体验&#xff0…...

学习型组织与系统思考

真正的学习型组织不是只关注个人的学习&#xff0c;而是关注整个系统的学习。—彼得圣吉 在这两年里&#xff0c;越来越多的企业开始询问是否可以将系统思考的内容内化给自己的内训师&#xff0c;进而在公司内部进行教学。我非常理解企业这样做的动机&#xff0c;毕竟内部讲师…...

支持mingw g++14.2 的c++23 功能print的vscode tasks.json生成调试

在mingw14.2版本中, print库的功能默认没有开启, 生成可执行文件的tasks.json里要显式加-lstdcexp, 注意放置顺序. tasks.json (支持mingw g14.2 c23的print ) {"version": "2.0.0","tasks": [{"type": "cppbuild","…...

守护者进程小练习

守护者进程含义 定义&#xff1a;守护进程&#xff08;Daemon&#xff09;是运行在后台的特殊进程&#xff0c;独立于控制终端&#xff0c;周期性执行任务或等待事件触发。它通常以 root 权限运行&#xff0c;名称常以 d 结尾&#xff08;如 sshd, crond&#xff09;。 特性&a…...

opencv函数展示3

一、图像平滑&#xff08;模糊&#xff09; 线性滤波&#xff08;速度快&#xff09;&#xff1a; 1.cv2.blur() 2.cv2.boxFilter() 3.cv2.GaussianBlur() 非线性滤波&#xff08;速度慢但效果好&#xff09;&#xff1a; 4.cv2.medianBlur() 5.cv2.bilateralFilter() 二、锐…...

环境搭建与入门:Flutter SDK安装与配置

环境搭建与入门&#xff1a;Flutter SDK安装与配置 一、Flutter开发环境概述 1.1 Flutter开发环境组成 Flutter开发环境主要包含以下几个关键组件&#xff1a; Flutter SDK&#xff1a;Flutter的核心开发工具包Dart SDK&#xff1a;Flutter使用的编程语言环境IDE/编辑器&am…...

linux驱动之poll

驱动中 poll 实现 在用户空间实现事件操作的一个主要实现是调用 select/poll/epoll 函数。那么在驱动中怎么来实现 poll 的底层呢&#xff1f; 其实在内核的 struct file_operations 结构体中有一个 poll 成员&#xff0c;其就是底层实现的接口函数。 驱动中 poll 函数实现原…...

遥感技术赋能电力设施监控:应用案例篇

目前主流的电力巡检手段利用无人机能够通过设定灵活航线进行低空飞行、搭载不同的采集设备&#xff0c;能够从不同角度对输电线进行贴近拍摄&#xff0c;但缺陷是偏远山区无人机飞行技术要求高&#xff0c;成本高&#xff0c;且飞行的无人机也可能会对输电线产生破坏。 星图云开…...

SpringAI+DeepSeek大模型应用开发——5 ChatPDF

ChatPDF 知识库 RAG检索增强 由于训练大模型非常耗时&#xff0c;再加上训练语料本身比较滞后&#xff0c;所以大模型存在知识限制问题&#xff1a; 知识数据比较落后&#xff0c;往往是几个月之前的&#xff1b;不包含太过专业领域或者企业私有的数据&#xff1b; 为了解决…...