极端不平衡的中文短文本分类
信管 2401 · 黄程诺 · 2026.10
学校在昌平,去地铁站、机场、高铁站都得打车,一趟一两百。
一个人掏全款不划算,凑上同伴,路费直接砍一半。
求拼车的帖子混在失物招领、约饭、组队里,几分钟就被刷没。
2026 年 4 月,我做了北化专属的拼车小程序「百花同行」,攒下 1,900+ 用户。后来它被下架了。
因类目与合规问题,被微信强制下架,服务一度停摆。
改做网页版和 QQ 机器人,先把服务撑住。
不再等同学自己发帖,主动去论坛把拼车帖捞出来。
人工写的十几个词,带词放行。
剔掉明显不是拼车的。
抽"几点、去哪",填不出作废。
学出来的分类器,给每条帖打分。
不变。
不变。
数据里"是否拼车"那一列,是旧系统自动生成的。它只认填得出"几点、去哪"的帖子,填不出就丢,标成"不是"。
把所有帖子都判成"不是拼车",一行代码,准确率 98.5%。
可它一条拼车也没找到,系统等于没用。
挑出来的帖子里,真正是拼车的占多少。挑得准不准。
所有真拼车里,成功挑出来的占多少。漏没漏。
| 碎片 | 分量 x | 权重 w | 贡献 = x×w |
|---|---|---|---|
| 拼车 | 0.17 | 21.6 | +3.7 |
| 地铁 | 0.20 | 4.6 | +0.9 |
| 左右 | 0.19 | 5.3 | +1.0 |
| 站的 | 0.22 | 3.6 | +0.8 |
| 其余 18 个 | — | — | +5.1 |
| 贡献合计 | +11.5 |
| 净得分 z | 概率 p | 判断 |
|---|---|---|
| −2 | 0.12 | 不是 |
| 0 | 0.50 | 临界 |
| 2 | 0.88 | 是 |
| 6.68 | 0.999 | 是(这条帖) |
一开始对所有碎片一视同仁,每条帖都算不出区别。
每条帖算出 p,和"是不是拼车"的正确答案比,得到误差。
真拼车被算低了,就抬高帖里碎片的 w;被算高了,就压低。
反复 17 遍,w、b 稳定下来:"拼车"的 w 停在 +21.6,b 停在 −4.82。
用 10 月 15 号之后的 5,535 条做盲测,里面有 41 条真拼车。模型从没见过它们。
| 做法 | 判出几条 | 其中真拼车 | 查准率 | 查全率 |
|---|---|---|---|---|
| 全判"不是拼车" | 0 | 0 | — | 0 |
| 关键词规则 | 81 | 41 | 50.6% | 100% |
| 逻辑回归 · 阈值 0.5 | 41 | 37 | 90.2% | 90.2% |
| 逻辑回归 · 阈值 0.4 | 43 | 39 | 90.7% | 95.1% |
| 逻辑回归 · 阈值 0.06 | 108 | 41 | 38.0% | 100% |
我原以为更准的筛子会更省。结果反过来:要一条不漏,模型得吐 108 条,关键词只要 81 条。
模型只在允许漏几条的时候划算。阈值 0.4,43 条候选,抓 95%,噪声还是 4 条。
默认挡位下,模型吐 41 条、其中噪声 4 条;关键词吐 81 条、其中噪声 40 条。
一半是噪声,约饭、吐槽全被捞了进来。
九成是真的,代价是漏掉 4 条极短帖。
四条全是超短帖(23–53 字),只提了一次"拼车",没有地铁、时间这些搭配帮着撑分,总分压不过 0.5。
同一个模型,一个参数都没改,只把那批错误标签修正了,查准率从 51% 跳到 90%。
阈值按后面 JEV、LLM 的容量定。默认 0.5,想少漏就调低。
漏掉的 4 条都是 23–53 字的短帖,只提了一次"拼车"。
只动了含关键词的那批,不含关键词的 1.6 万条没看过。
北化专属的公益拼车平台。「同行雷达」自动聚合全校论坛的拼车帖。
AI 的记忆是纯文本:随时可见、随时可改、可迁移,不藏在别人的云端黑箱里。