admin管理员组

文章数量:1029907

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

摘要

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

引言

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

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

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

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

问卷编号

满意度打分(1-5)

主观评价文本

1

5

很棒的体验,组织很周到!

2

3

志愿者太多,感觉没安排好任务

3

4

整体还不错,就是有点赶

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

用 NLP 模型做情感分析

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

安装依赖:

代码语言:bash复制
pip install transformers torch pandas streamlit

加载模型做情感分析:

代码语言:python代码运行次数:0运行复制
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 做一个小前端页面,让大家能方便地看到整体结果分布。

代码语言:python代码运行次数:0运行复制
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())

运行:

代码语言:bash复制
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,把问卷变成能说话的反馈

摘要

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

引言

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

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

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

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

问卷编号

满意度打分(1-5)

主观评价文本

1

5

很棒的体验,组织很周到!

2

3

志愿者太多,感觉没安排好任务

3

4

整体还不错,就是有点赶

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

用 NLP 模型做情感分析

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

安装依赖:

代码语言:bash复制
pip install transformers torch pandas streamlit

加载模型做情感分析:

代码语言:python代码运行次数:0运行复制
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 做一个小前端页面,让大家能方便地看到整体结果分布。

代码语言:python代码运行次数:0运行复制
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())

运行:

代码语言:bash复制
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 这样的轻量级前端工具,也让分析结果更易于分享和解读。

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

本文标签: 用 NLPStreamlit,把问卷变成能说话的反馈