feat(classify): tighten scoring with reaction co-occurrence and date negatives
强正向 reaction 需标题同时含 require_title;移除听/看等宽泛词,新增弱正向组;charge 命中>=2 记+3、==1 记+1;负向补充录播/录像并新增标题带日期强负向;时长仅在已命中 reaction/charge 时加权;discover 关键词改为单个咻咻满、pages=3、window_days=7,notify.min_score=4;同步示例配置、project.md/README 与相关测试。
This commit is contained in:
1 parent
e04908ccad
commit
742c67a1c3
9 files changed
+210
-107
No files matched your search
+24
-14
@@ -118,12 +118,16 @@ Telegram 私聊发链接/BV 号 ───┘
|
||||
],
|
||||
"schedule": { "discover_minutes": 60,
|
||||
"snapshot_at": "00:01", "candidate_ttl_days": 7 },
|
||||
"notify": { "min_score": 2, "max_items_per_message": 10 },
|
||||
"discover": { "keywords": ["咻咻满"], "pages": 3, "window_days": 7 },
|
||||
"notify": { "min_score": 4, "max_items_per_message": 10 },
|
||||
"classify": {
|
||||
"require_title": "咻咻满",
|
||||
"positive": ["reaction", "re", "反应", "看", "听", "初听", "首次", "点评", "锐评", "路人", "震惊", "双人"],
|
||||
"charge": ["充电", "加急", "专场"],
|
||||
"negative": ["歌切", "切片", "纯享", "搬运", "完整版"],
|
||||
"self_mid": 37754047,
|
||||
"reaction": ["reaction", "反应"],
|
||||
"charge": ["加急", "特急", "充电", "专场", "转场"],
|
||||
"weak_positive": ["双人", "路人", "第一次", "首次"],
|
||||
"negative": ["歌切", "切片", "纯享", "搬运", "完整版", "录播", "录像"],
|
||||
"date_negative": true,
|
||||
"duration_boost": { "gt_30min": 1, "gt_60min": 2 }
|
||||
},
|
||||
"heat_weights": { "view": 0.30, "like": 0.20, "coin": 0.20,
|
||||
@@ -257,24 +261,30 @@ title 含 "咻咻满"(全半角/大小写归一化后),否则直接丢弃
|
||||
up_mid 命中黑名单 → 直接排除(永不通知,连候选池都不进)
|
||||
|
||||
score = 0
|
||||
+2 标题含 reaction|re|反应|看|听|初听|首次|点评|锐评|路人|震惊|双人
|
||||
+2 标题含 充电|加急|专场
|
||||
+2 时长 > 60 分钟
|
||||
+1 时长 > 30 分钟(与上一条不叠加,取大)
|
||||
-5 标题含 歌切|切片|纯享|搬运|完整版
|
||||
+3 标题同时含 "咻咻满" 与 reaction|反应(强正向;只含 reaction 不成立)
|
||||
+3 标题含 加急|特急|充电|专场|转场 中任意 >=2 个
|
||||
+1 标题含其中恰好 1 个
|
||||
+1 标题含 双人|路人|第一次|首次(弱正向)
|
||||
+2 时长 > 60 分钟(仅当已命中 reaction 或 charge 时计入)
|
||||
+1 时长 > 30 分钟(同上,与上一条不叠加,取大)
|
||||
-6 标题含 歌切|切片|纯享|搬运|完整版|录播|录像
|
||||
-6 标题带日期(2026-10-28 / 2026/10/25 / 2026.10.26 / 2024年11月24日 / 10月25日)
|
||||
-3 UP 为 咻咻满本人(mid=37754047)
|
||||
|
||||
通知阈值 = 2
|
||||
0 <= score < 2 且含"咻咻满" → 进看板"候选池"(7 天后删除),不通知
|
||||
通知阈值 = 4
|
||||
0 <= score < 4 且含"咻咻满" → 进看板"候选池"(7 天后删除),不通知
|
||||
score < 0 → 丢弃
|
||||
```
|
||||
|
||||
**几条设计依据**:
|
||||
|
||||
- 对现有 664 条收藏回测,**92.6% 的标题含 reaction 类词**,规则召回足够;误判代价只是"多发/少发一条通知",最终由人点击决定;
|
||||
- **"直播回放"不再算负向词**:确实有人先直播看、再发直播回放,这类仍是 reaction;改由"UP 黑名单"处理专发回放/切片的号;
|
||||
- **时长是强正向信号**:实测这批 reaction 视频时长普遍 100~336 分钟(`105:05`、`158:24`、`336:31`),30/60 分钟阈值能把大多数切片(十几分钟)区分开;
|
||||
- **强正向必须"咻咻满 + reaction"同现**:B 站搜索会命中标题根本不含关键词的结果(简介/标签/相似内容),所以"标题含 reaction"本身不足以判定为高置信,必须与 `require_title` 同时成立;
|
||||
- **"听/看"等宽泛词已移除**:几乎所有 reaction 标题都含,无区分度;
|
||||
- **时长只在已命中 reaction/charge 时加权**:避免"完整录播/直播录像"这类既无 reaction 也无 charge 的长视频仅靠时长进池;
|
||||
- **带日期的标题按强负向处理**:`2026-10-28`、`10月25日` 这类通常对应某场直播的录播/回放/录像/自用收藏;实测对真 reaction 标题零误伤,代价是极少数"真 reaction 恰好写日期"会被漏掉;
|
||||
- **`录播`/`录像` 计负向**:`完整版` 覆盖不到 `完整录播`;`录像` 覆盖 `直播录像`。裸 `回放` 不列入,因为 `【回放/咻咻满reaction】` 之类确为 reaction;
|
||||
- 时长直接取**搜索结果自带的 `duration` 字段**(格式是 `分钟:秒`,超过 60 分钟写作 `105:5`),**不需要额外请求**;
|
||||
- 关键词用单个 `咻咻满`(`discover.pages=3` 覆盖 7 天窗口),因此 `require_title` 是过滤非相关结果的关键兜底;
|
||||
- UP 黑名单在配置文件里维护,可热加载,后续从"误通知"记录里一键加入。
|
||||
|
||||
### 3.4 通知内容
|
||||
|
||||
Reference in new issue
Block a user