用蓝耘MaaS+Excel插件:5分钟完成千条用户反馈的情感分析

AI2天前发布 beixibaobao
2 0 0

一、引言:当情感分析遇上行业痛点

众所周知,在这个数字化时代,企业每天都会收到大量的用户反馈——从电商平台的商品评价、社交媒体的品牌提及,到客服系统的对话记录,这些非结构化文本中蕴含着用户对产品/服务的真实态度。但是传统人工分析寻在这下列三个痛点:效率低下(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编辑器,依次执行以下操作:

用蓝耘MaaS+Excel插件:5分钟完成千条用户反馈的情感分析


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

用蓝耘MaaS+Excel插件:5分钟完成千条用户反馈的情感分析


在这里插入图片描述


在这里插入图片描述


插入模块:右键工程资源管理器→【插入】→【模块】,在这个模板块里粘贴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应用的企业而言,这或许是最具性价比的切入点。

© 版权声明

相关文章