用蓝耘MaaS+Excel插件:5分钟完成千条用户反馈的情感分析
一、引言:当情感分析遇上行业痛点
众所周知,在这个数字化时代,企业每天都会收到大量的用户反馈——从电商平台的商品评价、社交媒体的品牌提及,到客服系统的对话记录,这些非结构化文本中蕴含着用户对产品/服务的真实态度。但是传统人工分析寻在这下列三个痛点:效率低下(1000条评论需2-3人/天)、主观偏差(不同分析员对"还行"的判定可能不同)、无法实时化(周报级分析滞后于业务需求)。
而随着大模型技术的成熟,MaaS为这一场景提供了新的解法。通过调用预训练大模型的API,企业可以快速实现文本情感分类、关键词提取等NLP任务。本文将结合蓝耘MaaS平台与Excel VBA插件,演示如何1分钟内完成千条用户反馈的情感分析,并生成可视化结果。
二、技术准备:工具链与核心逻辑
1. 蓝耘MaaS平台
蓝耘MaaS是国内领先的AI模型服务平台,提供多种大模型的API接口,包括GPT-3.5、LLaMA-2、文心一言等,支持按量计费(0.01元/千token)、多轮对话、自定义提示词等功能。
其优势主要有以下几点:
- 低延迟:单条文本分析耗时<200ms;
- 高准确率:针对中文情感分析优化,F1值达92%以上;
- 易集成:提供RESTful API,支持Python/Java/VBA等多语言调用。
2. Excel VBA插件:轻量化数据管道
Excel作为企业最熟悉的数据处理工具,通过VBA(Visual Basic for Applications)可以实现与MaaS API的无缝对接。
核心逻辑就是:读取Excel中的用户反馈列表→调用蓝耘MaaS API获取情感标签→将结果写回Excel指定列。
这里的用户反馈列表我会在下面提供如何获取的操作步骤,大家可以稍微帆帆。
首先我们需要访问官网UCI数据集官网获取你自己所想要的数据,里边几乎都有。
然后我们在搜索框输入:sentiment analysis或 product reviews;
在这里搜索数据集会出现对应的相关数据(已脱敏可以直接套用拿来测试)

将该数据集下载到你的电脑中(通常为TXT/CSV格式,可直接导入Excel),保存至桌面。

3. 整体流程设计
整个操作步骤分为四步,总耗时<5分钟(以2049条数据为例):
1.数据准备:
首先我们需要获得各自企业产品的用户评价,将这些数据反馈至Exce并单列存储,方便后续操作。
2.环境配置:
注册蓝耘MaaS账号(注册过程可以点击主页,上一个文章里边有教程),获取API Key;
3.VBA开发:
编写好代码后将其导入Excel表,实现API调用与结果写入;这之前需要把数据导入Excel表格,然后进行分析,
4.结果分析:
生成情感分布饼图
三、实操:从0到1实现自动化分析
1.数据准备与平台注册
首先我们需要准备一些数据,这边我用从UCI数据集光网拿来的数据进行举例


然后我们访问蓝耘Maas平台,我们直接在API管理里面创建一个API Key,不搞那么麻烦的,直接硬刚。
2.VBA环境配置
打开Excel,按Alt+F11进入VBA编辑器,依次执行以下操作:

击【工具】→【引用】,勾选Microsoft XML, v6.0(用于HTTP请求)和Microsoft Scripting Runtime(用于JSON解析);



插入模块:右键工程资源管理器→【插入】→【模块】,在这个模板块里粘贴VBA检测代码,看看是不是已经与蓝耘API接口连接。
这里文件夹里有多个TXT/CSV文件,所以我们需要将这些文件全部进行合并并加载到Excel中。
首先我们打开Excel,点击【数据】—【获取数据】—【来自文件】—【从文件夹】
在弹出的窗口里,找到你存TXT文件的文件夹,点击【打开】,统会列出文件夹里所有文件,点击底部的【合并】—【合并并加载】;在弹出的“合并文件”窗口,选择【示例文件】为任意一个TXT文件,然后点击【确定】

我给大家分享一个检测代码,大家可以直接粘贴进去进行API接口是否连接的检测。
完整VBA代码(最简请求测试)
' ================================================================
' 宏名称: TestOneRequest
' 功能: 向蓝耘MaaS发送最简请求,测试API连通性和密钥有效性
' 使用方法:
' 1. 在Excel按 Alt+F11 进入VBA编辑器
' 2. 插入模块,粘贴此代码
' 3. 按 Alt+F8 运行 TestOneRequest
' ================================================================
Sub TestOneRequest()
Dim http As Object
Dim url As String, apiKey As String
Dim requestBody As String, resp As String
' ==================== 配置区(请确认)====================
' 1. API地址(蓝耘官方示例,请核对最新文档)
url = "https://maas-api.lanyun.net/v1/chat/completions"
' 2. 你的API Key(确保是 sk- 开头的一整串,不要有多余空格)
apiKey = "sk-ps2nu4cu6gaxpde2jp4l6vsoc5yit5laqpggfnj54t5rz522"
' ==========================================================
' 3. 构造最简请求体(调用 DeepSeek-R1 模型,只返回少量内容)
requestBody = "{""model"":""/maas/deepseek-ai/DeepSeek-R1""," & _
"""messages"":[{""role"":""user"",""content"":""你好""}]," & _
"""max_tokens"":5}"
' 4. 创建HTTP对象并发送请求
Set http = CreateObject("MSXML2.XMLHTTP")
With http
.Open "POST", url, False ' False=同步等待
.setRequestHeader "Content-Type", "application/json"
.setRequestHeader "Authorization", "Bearer " & apiKey
.send requestBody
End With
' 5. 根据HTTP状态码判断结果,并弹窗显示
If http.Status = 200 Then
MsgBox "✅ API连接成功!" & vbCrLf & _
"状态码:200" & vbCrLf & _
"返回内容:" & http.responseText, vbInformation, "测试结果"
Else
MsgBox "❌ API请求失败!" & vbCrLf & _
"状态码:" & http.Status & vbCrLf & _
"返回内容:" & http.responseText, vbCritical, "测试结果"
End If
' 6. 清理对象
Set http = Nothing
End Sub
在VBA里新建这个宏,只发一条最简请求到蓝耘,看看最终结果返回什么,一般错误分为四大类,我分别展开进行解决:
-
状态码:200, 连接成功,说明问题出在批量宏的其他地方。
-
状态码:401,API Key 无效
1.登录蓝耘控制台 —API密钥管理 —重新复制你的密匙,以sk-开头的完整Key。
2.替换代码中的 API_KEY常量,确保完全一致。(有的时候是因为你多了空格或者其他原因,仔细查查看)
3.有些平台Key有有效期或IP白名单限制,确认Key状态正常。 -
状态码:404,API 地址 (URL) 错误
1.在蓝耘平台的【模型广场】找到蓝耘最新版本的Deepseek-V3.2,复制其od:/maas/deepseek-ai/DeepSeek-V3.2。
然后点开示例,划到最底部找到cul == https://maas-api.lanyun.net/v1/chat/completions

把你自己的Key和模型的id以及cul全部换成正确的才能够正常运行。

-
状态码:429,请求过于频繁
-
状态码:0,网络连接问题
说明Excel发请求时被拦截或连不上服务器,可以试试下面几种方法找一下原因:
1.换网络:
关掉连接的wifi用手机热点试试,排除公司防火墙限制。
2.关代理/VPN:
代理会导致Bearer认证失效。
3.加系统代理例外(如有):
Windows:设置 → 网络和Internet → 代理 → 确保Excel走直连。
4.防火墙/杀毒软件:
将 EXCEL.EXE加入白名单。
5.DNS问题:
尝试 ping api.lanyunai.com看是否通
然后下边就是接入成功之后在VBA编辑器里面设置的模块代码:
' 蓝耘MaaS情感分析VBA宏
' 功能:批量分析Excel中的用户评论情感倾向
Sub BatchSentimentAnalysis()
Dim ws As Worksheet
Dim lastRow As Long, i As Long
Dim http As Object
Dim comment As String, prompt As String
Dim requestBody As String, resp As String
Dim sentiment As String, note As String
' ================== 配置区域 ==================
Const API_KEY As String = "sk-ps2nu4cu6gaxpde2jp4l6vsoc5yit5laqpggfnj54t5rz522"
Const ENDPOINT_URL As String = "https://api.lanyunai.com/v1/chat/completions"
Const INPUT_COL As String = "B" ' 评论所在列
Const OUTPUT_COL1 As String = "C" ' 情感结果列
Const OUTPUT_COL2 As String = "D" ' 备注列
Const START_ROW As Long = 2 ' 从第2行开始(第1行为标题)
' ===============================================
' 性能优化设置
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
Set ws = ThisWorkbook.ActiveSheet
lastRow = ws.Cells(ws.Rows.Count, INPUT_COL).End(xlUp).Row
' 数据验证
If lastRow < START_ROW Then
MsgBox "没有找到需要分析的评论数据。请检查B列是否有数据。", vbExclamation
GoTo CleanExit
End If
' 创建HTTP对象
Set http = CreateObject("MSXML2.XMLHTTP")
' 主循环:逐行处理评论
For i = START_ROW To lastRow
comment = Trim(ws.Cells(i, ColumnLetterToNumber(INPUT_COL)).Value)
' 跳过空行
If Len(comment) = 0 Then
ws.Cells(i, ColumnLetterToNumber(OUTPUT_COL1)).Value = "无内容"
ws.Cells(i, ColumnLetterToNumber(OUTPUT_COL2)).Value = ""
GoTo ContinueNext
End If
' 更新状态栏
Application.StatusBar = "正在分析第 " & i - START_ROW + 1 & " / " & lastRow - START_ROW + 1 & " 条评论..."
' 构造分析请求
prompt = "请判断下面这句话的情感倾向,只回答"积极"、"消极"或"中性"中的一个词,不要解释理由,不要加标点符号:" & vbCrLf & comment
requestBody = "{""model"": ""gpt-3.5-turbo"", " & _
"""messages"": [" & _
"{""role"": ""system"", ""content"": ""你是一个专业的情感分析助手,擅长分析用户评论的情感倾向。""}, " & _
"{""role"": ""user"", ""content"": """ & EscapeJsonString(prompt) & """}" & _
"], " & _
"""temperature"": 0.1, " & _
"""max_tokens"": 10" & _
"}"
' 发送API请求
With http
.Open "POST", ENDPOINT_URL, False
.setRequestHeader "Content-Type", "application/json"
.setRequestHeader "Authorization", "Bearer " & API_KEY
.send requestBody
End With
' 处理响应
If http.Status = 200 Then
resp = http.responseText
sentiment = ParseSentimentResponse(resp)
note = "成功"
Else
sentiment = "请求失败"
note = "错误 " & http.Status & ": " & GetHttpErrorMessage(http.Status)
End If
' 写入结果
ws.Cells(i, ColumnLetterToNumber(OUTPUT_COL1)).Value = sentiment
ws.Cells(i, ColumnLetterToNumber(OUTPUT_COL2)).Value = note
' 每处理10条保存一次,防止数据丢失
If (i - START_ROW) Mod 10 = 0 Then
ThisWorkbook.Save
End If
ContinueNext:
Next i
' 最终保存
ThisWorkbook.Save
' 完成提示
Application.StatusBar = "分析完成!"
MsgBox "情感分析完成!" & vbCrLf & _
"共处理 " & lastRow - START_ROW + 1 & " 条评论。" & vbCrLf & _
"结果已保存到C列(情感)和D列(状态)。", vbInformation
CleanExit:
' 恢复Excel设置
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Application.StatusBar = False
' 清理对象
If Not http Is Nothing Then
Set http = Nothing
End If
End Sub
' 辅助函数:将列字母转换为列号
Function ColumnLetterToNumber(columnLetter As String) As Integer
ColumnLetterToNumber = Range(columnLetter & "1").Column
End Function
' 辅助函数:转义JSON字符串中的特殊字符
Function EscapeJsonString(str As String) As String
Dim result As String
result = Replace(str, "", "\")
result = Replace(result, """", """")
result = Replace(result, vbCr, "r")
result = Replace(result, vbLf, "n")
result = Replace(result, vbTab, "t")
EscapeJsonString = result
End Function
' 辅助函数:解析API响应中的情感结果
Function ParseSentimentResponse(responseText As String) As String
Dim sentiment As String
' 尝试从不同格式的响应中提取情感
If InStr(responseText, """content"":""") > 0 Then
' OpenAI格式响应
Dim contentStart As Integer
contentStart = InStr(responseText, """content"":""") + 11
Dim contentEnd As Integer
contentEnd = InStr(contentStart, responseText, """")
If contentEnd > contentStart Then
sentiment = Mid(responseText, contentStart, contentEnd - contentStart)
End If
ElseIf InStr(responseText, "积极") > 0 Then
sentiment = "积极"
ElseIf InStr(responseText, "消极") > 0 Then
sentiment = "消极"
ElseIf InStr(responseText, "中性") > 0 Then
sentiment = "中性"
Else
sentiment = "解析失败"
End If
' 清理结果
sentiment = Trim(sentiment)
sentiment = Replace(sentiment, """", "")
sentiment = Replace(sentiment, ",", "")
sentiment = Replace(sentiment, ".", "")
sentiment = Replace(sentiment, "!", "")
sentiment = Replace(sentiment, "?", "")
ParseSentimentResponse = sentiment
End Function
' 辅助函数:获取HTTP错误消息
Function GetHttpErrorMessage(statusCode As Integer) As String
Select Case statusCode
Case 400
GetHttpErrorMessage = "请求格式错误"
Case 401
GetHttpErrorMessage = "API密钥无效"
Case 403
GetHttpErrorMessage = "权限不足"
Case 404
GetHttpErrorMessage = "API端点不存在"
Case 429
GetHttpErrorMessage = "请求过于频繁"
Case 500
GetHttpErrorMessage = "服务器内部错误"
Case 502
GetHttpErrorMessage = "网关错误"
Case 503
GetHttpErrorMessage = "服务不可用"
Case Else
GetHttpErrorMessage = "未知错误"
End Select
End Function
' 测试函数:验证API连接
Sub TestApiConnection()
Dim http As Object
Dim requestBody As String
Dim resp As String
Set http = CreateObject("MSXML2.XMLHTTP")
requestBody = "{""model"": ""gpt-3.5-turbo"", " & _
"""messages"": [{""role"": ""user"", ""content"": ""测试""}], " & _
"""max_tokens"": 5" & _
"}"
With http
.Open "POST", "https://api.lanyunai.com/v1/chat/completions", False
.setRequestHeader "Content-Type", "application/json"
.setRequestHeader "Authorization", "Bearer sk-ps2nu4cu6gaxpde2jp4l6vsoc5yit5laqpggfnj54t5rz522"
.send requestBody
End With
If http.Status = 200 Then
MsgBox "API连接测试成功!状态码:" & http.Status, vbInformation
Else
MsgBox "API连接测试失败!状态码:" & http.Status & vbCrLf & "错误信息:" & http.responseText, vbCritical
End If
Set http = Nothing
End Sub
这个代码有点长,复制粘贴即可,也是记住将deepseek的版本改一下以及id、url、密匙改一下
导入后界面如下:

4.运行分析与结果验证
- 在Excel中按F5运行宏,等待约30秒;
- 分析完成后,C列会显示情感标签,D列显示成功或者失败

这里就是典型的url地址错了,这个URL地址你要改一下,加上这个API Key地址

去复制模型的IDS /maas/deepseek-ai/DeepSeek-V3.2,记得在上述图中代码找到正确的模型版本(最新版本),上述是deepseek-R1,但是现在已经是V3.2了,所以我们需要把模型地址也改了。
运行成功之后就会跳出状态码:200,这表明蓝耘平台已经接受了我们的API接口申请,就可以继续完成操作了。
我们在Excel界面,按“Alt+F8”跳出以下宏界面,我们选择BatchSentimentAnalysisi,点击【执行】,Excel就开始逐步分析每一个评论的情感倾向了。

等个差不多五分钟,2049条评论就分析成功了,具体时间大家可以根据这两千条评论所需要的时间去推算一下。

四、结果可视化:从数据到洞察
完成情感分类后,我们可以通过Excel自带的图表功能生成直观的分析报告。
情感分布饼图
选中C列(情感标签)数据,插入【饼图】,设置颜色(积极-绿色,消极-红色,中性-灰色),添加数据标签显示百分比。从数据中能发现,该商品的用户满意度较低(积极占比低于10%),大多数是消极和中性,说明该商品的质量与口碑皆是出现了问题,需要加以改正。
五、方案优势与适用场景
1. 该表格分析的核心优势
- 效率提升100倍:2000条数据人工分析需3-4天,本方案仅需5分钟,并且较为精确不带有主观想法。
- 成本可控:蓝耘MaaS按实际使用量计费,1000条分析成本约0.1元(远低于人工成本);
- 灵活扩展:支持调整模型(如切换为更细粒度的"五级情感分类")、增加分析维度(如提取具体槽位信息)。
2. 适用场景
- 电商行业:商品评价分析、竞品对比;
- 金融行业:客户投诉分类、风险预警;
- 教育行业:课程评价分析、教学改进;
- 政务领域:民意调查、政策反馈。
六、总结与展望
通过蓝耘MaaS+Excel插件的组合,我们成功将用户反馈情感分析的门槛从"专业数据团队"降低至"业务人员自助操作"。这种"低代码+大模型"的模式,不仅解决了传统分析的效率问题,更让企业能够快速从非结构化文本中提取业务洞察,实现"数据驱动决策"。
未来,随着多模态大模型的发展,我们还可以扩展分析维度(比如结合用户评论中的图片/视频进行情感判断),进一步提升分析的深度与广度。对于希望快速落地AI应用的企业而言,这或许是最具性价比的切入点。

