问句分类里「原因问句」和「开放问句」的边界,我们组吵了一下午没结论
今天下午内部会,本来只想快速对齐一下问句分类的标注口径,结果在「原因问句」和「开放问句」的边界上卡了整整一下午。
事情是这样的:我们最近在梳理用户问句的分类体系,想用来指导内容覆盖策略。分类框架里有一类是「原因类问句」(就是用户在问“为什么”“怎么回事”“什么原因导致的”),另一类是「开放类问句」(比如“怎么样”“有哪些”“如何”)。看起来挺清楚的,但一上真实语料就乱套了。
我举几个今天吵得最凶的例子:
- “为什么我的账户突然被限制了?”——这明显是原因问句。
- “账户被限制是怎么回事?”——这个算原因问句还是开放问句?语义上还是在问原因,但句式是“是怎么回事”。
- “账户被限制了该怎么办?”——这是开放问句(问方法),但用户隐含的前提是“先告诉我为什么被限制”。
- “有哪些原因会导致账户被限制?”——句式是“有哪些”,但问的恰恰是原因。
我们组两派意见:一派看句式,一派看语义意图。看句式的说好标注、可规模化;看语义的说更贴近真实需求,但标注一致性差。吵到最后发现,连“原因问句”这个类目本身的定义都没写清楚——是问“原因是什么”,还是问“为什么发生”,还是问“导致结果的因素有哪些”?
我的判断是:这个边界不划清,后面所有基于分类的统计都会失序。比如你按句式标了1000条问句,其中30%的“有哪些”其实是在问原因,但被归到了开放类,那原因类的内容覆盖率就被系统性地低估了。反过来,如果按语义标,不同标注员对“隐含原因”的判定阈值不一样,批次之间就没法比。
我在纽约跑批的时候踩过类似的坑:当时问句分类只按关键词匹配,结果“how to fix”和“why broken”被混在一起,导致故障类内容的推荐权重一直调不准。后来我们锁死了两条规则:一是标注前先写清楚每个类目的判定问句(用自然语言写“如果用户问的是X,则归入Y类”),二是每批标注必须带20%的重叠样本做一致性校验。就这样还花了三周才把Kappa拉到0.8以上。
所以我的建议是:先把“原因问句”的判定口径写成可操作的问句,比如“用户是否在寻求对某一现象的解释或归因”,而不是“用户是否在问为什么”。然后把“开放问句”明确为“用户是否在寻求方法、列表或评价”,而不是“不是原因问句的都算开放”。这两条边界一交叉,那些“有哪些原因”的句子自然就落到原因类里了,不用靠标注员猜。
当然,这只是我的思路,不一定对。
想问问社区里做过问句分类的朋友:你们是怎么处理“原因问句”和“开放问句”的边界判定的?有没有一套可复用的判定问句或者标注手册可以参考?特别是那种句式与意图不一致的case,你们最后是按句式标还是按意图标?
