知乎李大海:如何用AI技术打造智能社区( 三 )


下面我从技术的角度简单去讲讲我们的瓦力机器人怎么做的 。 这边以答非所问作为例子来简单的讲一讲 。 我们最早解决这个问题的时候采用的是随机森林的模型 。 什么是随机森林呢?简单的来讲 , 随机森林就是用随机的机制去产生很多分类数组成的森林 。 它的分类数就是把这个样本放到每个数里去分类 。 举个例子 , 就是知乎来讨论一个问题 , 知乎的宠物是狗还是狐 。 这样就让每个树自己投票 。 在完成这个模型以后 , 我们取得了还不错的一个效果 , 它的准确率能够达到97% , 是一个非常高的准确率 。 但是有两个问题 , 第一个 , 它的召回率不高 , 只有58% , 不到60% 。 这个召回率意味着什么呢 , 意味着我们会错过坏人 , 就把一些答非所问的回答放到线上去了 。 这样的话这样的回答给用户带来不好的体验 , 所以召回率是我们很在意的东西 。 另外 , 这个模型会用到用户的行为统计特征 , 也就是说 , 就是需要去看有多少用户对这个进行了点击回答或者点击举报的特征 。 这个特征有什么问题 , 用了这个特征 , 如果对一个新的回答做分类判断是不是答非所问的时候必须放到线上观察一段时间 , 看看线上对它的点击量反对或者举报 。 这就出问题了 , 因为它上线了 。 如果真的是一个答非所问的话 , 看到这个回答的用户他的体验其实就已经受到了伤害 , 这个时间差是存在的 。 我们就开发了一个模型 , 这个模型是基于卵生模型的思路 , 这个思路是去提升网络结构的表达能力 。 同时对特征进行选取的时候也做了很多仔细的考虑 , 去避免使用前面所说的用户行为的统计特征 。 最后的结果是这样 , 我们在召回率上有了一个非常大的提升 , 从60%提升到80% 。 同时任何一个回答只要发出来 , 很快就能够被分类 。 是还是不是一个答非所问 。 当然它也有缺点 , 它的准确率下降了 , 但是在这个场景我们可以结合其他的业务策略来弥补这个差距 。 所以最后我们就把新的模型上线了 , 去替代了老的模型 。
我们算法团队在这个月发表了三篇文章 , 在知乎专栏上比较详细的阐述了知乎在瓦力机器人的工作 , 其中包括了这部分的工作 。 大家感兴趣的话可以上知乎专栏看一看 。
我这里还想再跟大家同步一下 , 知乎在阴阳怪气这个领域的识别的一些实践 。 这个工作还没有做完 , 但是我特别想跟大家同步 , 因为这是一个非常难的问题 , 也非常有意思 。 阴阳怪气就是反讽 。 我们处理的思路 , 首先还是要基于深层语义理解 , 也就是语义分析这个工作 。 但是这个是不够的 。 因为从我们的实践来看 , 往往一句话 , 同一句话如果是两个好朋友之间发生的话 , 它有可能是插科打诨 , 打情骂俏 。 但是如果是两个陌生人之间一定是有敌意或者不友善的 。 所以基于这样的思考我们会从两个方向去综合判断 。 反讽这个问题之所以要跟大家分享 , 是因为它是情感分析领域的前沿问题 , 它很难 。 因为反讽是一种完全正面的词语去表达负面的意思 , 是一个很高级的修辞手法 , 机器人很难明白的 。 像谢尔顿作为物理学家 , 他的智商在全人类排名前10 , 他也常常听不懂别人对他的讽刺 。
在训练中我们会把内容本身的特征尽可能的feed到模型中去 , 包括像文本特征 , 一些数值特征 , 还有像反讽词表 , 以及一些表现符特征等等 。 但是不会把用户统计特征放进去 , 这个理由和前面是一样的 。 我们使用的网络拓扑模型使用的CNN和LSTL的结合 。 最关键的其实是最后一部分 , 我们在分类层是用知乎层大量一致的语料产生标准数据 , 这就是我前面讲的用户行为 。 举个例子 , 简单的说 , 如果一个评论有很多好的用户 , 他们都进行了反对 , 可能我们认为这就是一个负向的 。 如果另外一个评论有很多用户点了赞同 , 它可能就是正向的 。 基于这个我们可以构建大量的一个标注数据 。 这样一个方案我们现在还在开发过程中 , 有结果后我们会发布到知乎专栏上 , 大家也可以关注一下 。 当然这个问题比较难 , 可能我们还要解决很多细节问题 , 时间可能会比较久 。 但是没有关系 , 我们相信知乎通过这种庞大的高质量用户行为的学习和分析 , 一定在语义和用户关系这两个层面上一个更深的建模和理解 。 能够像在反讽前沿领域的突破 , 任何一个突破对中文互联网 , 甚至全球互联网讨论环境中都应该有非常正面的作用 。

推荐阅读