Discourse AI - 情感分析

:bookmark: 本指南介绍如何在 Discourse AI 中配置情感和情绪分类,并使用报告来探索社区帖子中的模式。

:person_raising_hand: 所需用户等级:配置需要管理员权限;查看报告需要管理员或版主权限。

情感和情绪分类有助于你探索社区讨论中的模式:

  • 情感 将帖子分类为正面、中性或负面。
  • 情绪 在 28 个标签上分配分数,包括感激、好奇、愤怒和悲伤。

这是两种独立的功能。你可以启用其中一种或两种都启用,并为每种功能选择不同的分类后端。报告统计的是已分类的帖子数量,而不是独立的人或个性类型。使用它们来查找值得阅读的讨论,而不是作为理解上下文内容的替代品。

开始前

你需要通过 discourse_ai_enabled 启用 Discourse AI,并配置分类后端。

由 Discourse 托管? 你的站点可能已经预置了专用的分类端点。在更改之前,请检查现有配置。如果你需要关于可用性、端点配置或回填限制的帮助,请联系 team@discourse.org。

自托管? 配置兼容的专用端点、配备语言模型的 AI 代理或决策模型。仅启用该功能并不提供推理服务。

在启用自动处理之前,请查看提供商的隐私政策、保留规则和费用。分类会将帖子文本发送到所选后端。下面的截图使用测试站点上的虚构帖子和决策模型;它们并不推荐该提供商用于私密社区内容。

配置情感和情绪

  1. 打开 管理员 → 插件 → AI → 功能。
  2. 打开“情感和情绪”。
  3. 在“情感”下,如果你想要正面、中性及负面分类,请选择“已启用”。这控制 ai_sentiment_enabled。
  4. 选择其“后端”,并按照下文所述配置相应的端点、代理或模型。
  5. 在“情绪”下,如果你想要情绪分类,请选择“已启用”。这控制 ai_sentiment_emotion_enabled。
  6. 选择其后端并独立配置它。
  7. 设置下一部分中描述的后台处理限制。
  8. 点击“提交”并检查所选内容是否已保存。

此示例对两种功能都使用决策模型。“每小时帖子数”故意设置为 0,以便在测试期间暂停自动扫描。使用正值以自动处理新帖子和历史帖子。

使用专用分类端点

对于每个你想使用专用模型运行的功能,选择“专用分类端点”。按照“配置专用分类端点”进入 ai_sentiment_model_configs 设置。

参考专用模型如下:

功能 模型
情感 cardiffnlp/twitter-roberta-base-sentiment-latest
情绪 SamLowe/roberta-base-go_emotions

每个配置条目识别其 classification_type(sentiment 或 emotion)、model_name、endpoint 和 api_key。为你使用的每个专用分类器提供一个单独的条目。保持凭据私密;不要将其包含在支持帖子或截图中。

有关推理服务器部署,请参阅 为 Discourse AI 自托管情感和情绪。使用上述控件单独启用并选择每个功能。

专用后端期望一个兼容的分类 API。将 Anthropic、OpenAI 聊天或 Azure 语言端点复制到此设置中并不能使其兼容。在其他地方对语言模型成功的连接测试并不能测试专用情感端点。

使用 AI 代理或决策模型

对于“LLM 代理”,选择一个配备已配置语言模型的适当分类代理。Discourse 包含情感和情绪分类代理。通用的对话代理不能替代配置为返回预期标签分数的代理。

对于“决策模型”,首先 配置并测试兼容的决策模型,然后为每个已启用的功能选择它。决策模型不需要单独的对话语言模型进行此分类。

代理和决策模型请求可能会产生提供商费用或消耗积分。在将其分配给自动处理的功能之前,请查看所选模型的数据处理规则。

控制处理和历史覆盖范围

计划任务每 五分钟 检查一次缺少分类的帖子。新帖子和历史帖子共享此扫描;结果不一定在发布后立即提供。数据出现前没有帖子数量或天数的最低限制:一个成功分类的帖子就可以贡献数据。

控制 站点设置 默认值 效果
每小时帖子数 ai_sentiment_backfill_maximum_posts_per_hour 240 每小时处理的大致帖子数量。0 停止计划扫描,包括新帖子。
帖子年龄限制(天数) ai_sentiment_backfill_post_max_age_days 60 扫描在此年龄窗口内创建的帖子。0 意味着今天,而不是无限历史。

增加年龄限制以包含更旧的帖子。计划任务随时间处理缺失的结果;选择较旧的报告日期范围本身不会对该历史进行分类。

速率是近似值,不是精确的请求或支出上限。启用两个分类器可能会导致每个帖子发出两次请求。失败的请求或拒绝可以被重试。编辑后的帖子会单独检查,不受计划扫描的速率或年龄限制的控制。

私人消息、已删除的帖子、已删除的话题和非普通帖子类型会被排除在计划的回填扫描之外。扫描器和报告中的 PM 排除并不能保证所有分类路径都如此:编辑后帖子的作业不应用相同的 PM 过滤器。在配置外部提供商之前请考虑到这一点。

按类别或标签探索情感

  1. 打开 管理员 → 报告 → 情感分析,或在你的站点上访问 /admin/reports/sentiment_analysis。
  2. 选择开始和结束日期。
  3. 选择“类别”或“标签”以对结果进行分组。
  4. 使用相应的类别或标签过滤器来缩小结果范围。类别过滤还提供了一个包含子类别的选项。
  5. 阅读每组的总数及其正面、负面和中性的细分。
  6. 点击某组的行以检查其图表和底层帖子。

该示例包含九个已分类的帖子:三个正面,三个负面和三个中性。中性帖子包含在此报告中。

在详细视图中:

  • 选择“全部”、“正面”、“中性”或“负面”以过滤已加载的帖子。
  • 打开帖子的主题以阅读周围的讨论。
  • 使用图表旁边的链接图标复制该报告视图的 URL。收件人仍需要工作人员访问权限。
  • 点击“返回”以回到分组结果。

报告日期指的是帖子创建的时间,而不是分类运行的时间。如果主题有多个标签,一个帖子可以贡献给多个标签组,因此添加标签总数可能会多次计算同一个帖子。

阅读整体情感趋势

从 管理员 → 报告 打开“整体情感”报告,或访问 /admin/reports/overall_sentiment。

分数计算方式为:

正面帖子数量 − 负面帖子数量

要使帖子计入该组,正面或负面分数必须 大于 0.6。如果均未超过阈值,分组报告将把该帖子视为中性。阈值是固定的;没有站点设置可以更改它。

整体情感是净帖子计数,不是平均概率或快乐百分比。三个正面帖子和三个负面帖子产生 0 的整体分数,无论有多少中性帖子。在将平坦趋势解释为缺乏强烈观点之前,请检查分组细分和底层讨论。

探索情绪

每种情绪在 管理员 → 报告 下都有一个报告。例如,访问 /admin/reports/emotion_anger 查看“愤怒”或访问 /admin/reports/emotion_curiosity 查看“好奇”。选择日期范围和每日、每周或每月的分组来探索趋势。

情绪报告统计那些该标签分数 大于 0.1 的帖子。此阈值也是固定的。同一个帖子可以有多种符合条件的情绪,因此情绪总数不是互斥的。

你还可以按情绪过滤主题。访问 /filter?q=order:emotion_anger 查找匹配的主题,排名依据是符合条件的愤怒分类帖子数量,而不是平均情绪分数。使用 order:emotion_anger-asc 来反向排序。如果没有 activity-after: 过滤器,此排序统计的是过去一年中符合条件的帖子。常规主题列表访问权限仍然适用。

可用情绪标签

钦佩、娱乐、愤怒、恼怒、批准、关怀、困惑、好奇、渴望、失望、不赞成、厌恶、尴尬、兴奋、恐惧、感激、悲伤、喜悦、爱、紧张、中性、乐观、自豪、领悟、解脱、悔恨、悲伤和惊讶。

了解局限性

  • 分类依赖于模型。 讽刺、引用材料、专业术语和多语言讨论可能会被误解。语言覆盖范围和准确性取决于你选择的模型。不同后端的分数不一定经过相同校准。
  • 报告仅涵盖存储的结果。 已启用的功能如果没有工作的后端、暂停处理或历史覆盖不足,可能会产生空或不完整的报告。
  • 重用现有分类。 编辑已分类的帖子不会自动替换其结果。在同一后端内更改所选代理或决策模型也不会重新分类现有结果。
  • 更改后端会更改报告的结果来源。 旧结果不会转换为所选后端。在缺失分类处理期间,报告可能显示为空。
  • 报告排除私人消息。 此报告排除项与上述数据处理限制是分开的。

排查缺失或意外的结果

问题 检查内容
启用后无结果 确认相关功能已启用,其后端已配置,“每小时帖子数”为正值,并且后台作业正在运行。允许时间为五分钟扫描和处理队列。
情感有效但情绪为空 单独启用并配置“情绪”。仅限情感的专用端点不提供情绪分类。
较旧日期无结果 增加帖子年龄限制,允许处理时间,并检查报告范围是否包含帖子的创建日期。
专用端点返回错误 检查其 URL、凭据、模型和响应格式。适配器期望一个标签和分数的扁平数组,情感标签如 positive、neutral 和 negative,而不是任意聊天响应或 LABEL_0 风格的标签。
无法访问私有网络端点 检查连接,并在需要时,仅将受信任的推理端点主机名或 IP 添加到 allowed_internal_hosts。不要广泛禁用服务器端请求伪造保护。
编辑或模型选择后结果未变化 重用现有结果。不要假设编辑内容或保存另一个模型会安排完整重新分类。
过滤器显示的帖子少于计数 计数描述整个组,而情感标签页过滤已加载的帖子。检查是否有更多结果可加载,并在调查差异时打开原始主题。

管理员可以在 管理员 → 插件 → AI → 日志 中查看代理和决策模型请求记录。检查 /logs 以查找后台分类错误,包括专用端点故障。将日志内容视为敏感信息:它们可能包含帖子文本和模型响应。在共享诊断信息之前删除凭据和私密内容。

附加资源

10 个赞