Files
mindfulness/设计说明文档/个性化推荐算法架构.md
2026-01-29 23:31:12 +08:00

368 lines
8.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 情绪句子个性化推荐系统0 → 1
> 本文档用于 **个人 + AI 协作** 场景,作为产品、内容、推荐决策的统一对齐说明。
>
> 核心目标:
> **在任何一个时刻,为用户选出「最可能被接住的一句话」。**
---
## 一、句子标签体系Sentence Tagging System
### 1. 设计原则
* 标签不是为了分类句子,而是为了 **让推荐系统理解用户的情绪需求**
* 所有标签必须:
* 可被用户行为验证(会被喜欢 / 讨厌)
* 可直接影响推荐决策
* 数量克制、定义稳定
---
### 2. 主情绪标签Emotion Tags6 个)
> 主情绪标签 = 一句话 **解决的核心情绪需求**
>
> **每一句话只能有 1 个主情绪标签**
1. **安抚Calm**
* 用于情绪过载、焦虑、疲惫
* 目标:先稳定情绪
2. **被理解Understood**
* 用于孤独、自我怀疑
* 目标:建立共感
3. **接纳Acceptance**
* 用于自责、内疚、不够好感
* 目标:缓解自我攻击
4. **鼓励Encourage**
* 用于低落但尚可前行
* 目标:提供继续的力量(非口号)
5. **行动启动Activation**
* 用于卡住、拖延
* 目标:启动,而非成功
6. **希望感Hope**
* 用于低谷、无出口感
* 目标:保留可能性
---
### 3. 语气标签Tone Tags4 个)
> 语气标签 = **“这句话是怎么说的”**
>
> 用户对语气的“讨厌”比“喜欢”更重要
* **温柔Gentle**:安全、低压、共感
* **中性Neutral**:陈述型、兜底使用
* **直接Direct**:清晰、有方向
* **诗性Poetic可选**:隐喻、画面感
---
### 4. 场景标签Scene Tags5 个,可空)
> 场景标签是 **加分项,不是必填项**
* 早晨Morning
* 工作 / 学习中Focus
* 情绪低谷时Low
* 睡前Night
* 随时Anytime默认
---
### 5. 标签纪律(强规则)
1. 每句话只能有 1 个主情绪标签
2. 90% 句子可以没有场景标签
3. 行动启动 ≠ 鼓励
4. 安抚 ≠ 接纳
5. 不确定时,优先选择「被理解」
---
## 二、用户画像体系User Profile Indicators
### 1. 设计原则
* 用户画像不是“这个人是谁”
* 而是 **“这个人最近更容易接住什么样的话”**
* 所有指标默认 **可变、会衰减、以近期为主**
---
### 2. 用户画像的最小结构4 大类)
#### ① 主情绪偏好(核心)
* 对 6 个主情绪标签的近期偏好强度
* 决定「今天主要推哪一类句子」
---
#### ② 语气接受度
* 用户对不同说话方式的耐受程度
* 主要用于 **过滤用户讨厌的语气**
---
#### ③ 场景有效性(轻量)
* 哪些时间 / 状态更容易被接受
* 仅作为推荐修正项
---
#### ④ 情绪稳定度(隐性指标)
* 根据近期反馈判断:稳定 / 波动 / 不稳定
* 决定:
* 探索比例
* 是否使用保守推荐
* Push / Widget 是否降强度
---
### 3. 不纳入的画像指标(刻意避免)
* 人格类型MBTI 等)
* 情绪诊断标签(焦虑 / 抑郁)
* 长期性格、身份属性
原因:
* 医疗与伦理风险高
* 对「选一句话」帮助极低
---
## 三、个性化推荐架构Personalized Recommendation Framework0 → 1 详细版)
> 本章节完整说明:
> **个性化推荐系统在 0 → 1 阶段的设计方式、核心算法思想,以及整体运行流程。**
>
> 设计目标不是“最聪明”,而是:
> **可解释、可控制、一个人 + AI 可以长期维护。**
---
### 3.1 个性化推荐系统的大框架流程
一次完整的推荐决策,按照固定顺序经过以下 6 个阶段:
1. **用户画像读取Profile Reading**
2. **候选生成Candidate Generation / Recall**
3. **排序判断Ranking**
4. **安全与多样性重排Safety & Diversity Re-ranking**
5. **出句到触点Serving**
6. **行为反馈 → 画像更新Online Learning**
> 推荐系统的本质是:
> **在信息不完全的情况下,持续做出“不容易出错”的选择。**
---
### 3.2 0 → 1 阶段采用的核心算法思想(先给名字)
在 0 → 1 阶段,不引入复杂模型,而采用 **规则 + 轻策略算法组合**
1. **Questionnaire Prior问卷先验**:用于冷启动画像方向
2. **Tag-based Recall基于标签的候选召回**:缩小搜索空间
3. **Adjacent-tag Exploration相邻情绪探索**:避免情绪回音室
4. **Weighted Tag Matching加权标签匹配**:核心排序逻辑
5. **Time-decayed Preference时间衰减偏好**:画像始终代表“近期状态”
6. **Cooldown & Blacklist冷却与黑名单**:避免重复与强厌恶
7. **MMR-style Diversity Re-ranking多样性重排**:控制情绪与语气分布
8. **Safety Gating情绪安全闸门**:用户不稳定时强制保守
9. **Epsilon-greedy Exploration探索 / 利用平衡)**Feed 中允许试探
10. **Rule-based Online Update规则型在线学习**:行为驱动画像更新
---
### 3.3 Step 1用户画像读取Profile Reading
**涉及算法思想:**
* Questionnaire Prior
* Time-decayed Preference
**这一阶段做什么:**
* 读取用户当前的主情绪偏好排序
* 判断是否存在近期被频繁讨厌的语气
* 判断情绪稳定度(稳定 / 波动 / 不稳定)
**输出一个“当下推荐策略”:**
* 主方向情绪12 个
* 探索情绪1 个(相邻情绪)
* 探索比例Feed 高Push / Widget 极低
* 是否开启安全模式
---
### 3.4 Step 2候选生成Candidate Generation / Recall
**涉及算法思想:**
* Tag-based Recall
* Adjacent-tag Exploration
**核心目标:**
> **不要从整个句子库中选,而是先圈出“可能对的范围”。**
**候选生成逻辑:**
* 从主方向情绪中召回大部分句子
* 从探索情绪中召回少量句子
* 从新内容池中固定比例补充
**这一阶段不做的事情:**
* 不做精细排序
* 不处理语气偏好
* 不考虑场景冲突
---
### 3.5 Step 3排序判断Ranking
**涉及算法思想:**
* Weighted Tag Matching
* Time-decayed Preference
**排序时的四个核心判断维度:**
1. **主情绪匹配度**
* 是否符合用户近期最需要的情绪支持类型
2. **语气可接受度**
* 是否属于用户近期反感的表达方式
3. **场景是否冲突**
* 当前时间 / 状态下是否明显不合适
4. **新鲜感与重复度**
* 是否近期已看过或高度相似
**关键原则:**
* 主情绪是排序主权重
* 语气更像“过滤器”而非加分器
* 场景只在明显冲突时生效
---
### 3.6 Step 4安全与多样性重排Safety & Diversity Re-ranking
**涉及算法思想:**
* Cooldown & Blacklist
* MMR-style Diversity Re-ranking
* Safety Gating
**这一层的目标:**
> **即使排序不准,也不能伤害用户体验。**
**三类必须存在的保护机制:**
1. **去重与冷却保护**
* 同一句短期不重复
* 高相似句子不连续出现
2. **多样性保护**
* 同一主情绪不连续轰炸
* 同一语气不连续出现
3. **情绪安全保护**
* 用户情绪不稳定时,强制回退到:
* 安抚 / 接纳
* 温柔 / 中性语气
---
### 3.7 Step 5出句到不同触点Serving
**Feed可滑动**
* 允许探索与试错
* 多样性优先
* 行动启动 / 鼓励可出现
**每日一句 / Push**
* 高确定性
* 强去重
* 安全优先
**Widget被动看到**
* 不探索、不试错
* 只选最低风险组合
* 默认:安抚 / 接纳 + 温柔 / 中性
---
### 3.8 Step 6行为反馈 → 画像更新Online Learning
**涉及算法思想:**
* Rule-based Online Update
0 → 1 阶段,仅关注三类行为信号:
* **喜欢**:当前“情绪 × 语气 × 场景”组合有效
* **讨厌**:该组合需要短期退让与冷却
* **无反馈 / 快速滑走**:信号弱,提高探索或降低强度
> 系统学习的不是“哪句话好”,而是:
> **什么时候,用什么方式,说什么样的话,更容易被接住。**
---
### 3.9 0 → 1 阶段的成功判断标准
个性化推荐在 0 → 1 阶段 **不需要做到**
* 非常精准
* 非常智能
* 深度理解用户心理
它只需要做到三点:
1. 明显减少「被讨厌」的句子
2. 每日一句不让用户反感
3. 用户愿意继续看下一句
> 如果做到以上三点,
> 这就是一个 **成功的 0 → 1 个性化推荐系统**。
---
**本章节适用于 0 → 1 阶段,建议冻结 3 个月后再评估是否引入复杂模型。**