9月7日-8日,相约 2023 腾讯全球数字生态大会!聚焦产业未来发展新趋势! 了解详情
写点什么

算法在社区氛围的应用(三): 机器学习在答非所问识别上的运用

  • 2020-03-26
  • 本文字数:2724 字

    阅读完需:约 9 分钟

算法在社区氛围的应用(三): 机器学习在答非所问识别上的运用

跳绳的好处有哪些?可以锻炼哪些肌肉?

A:心肺功能比之前有提高。

B:有助于提高身体的乳酸阈值。

C:有助于提高身体的协调性。

D:谢谢,我去买了跳绳。

请问,以上哪个答案是答非所问?


现在,瓦力可直接识别并处理该题中的答非所问内容。


我们鼓励认真、专业的分享,期待每一次讨论都能碰撞出更多有价值的信息,并希望每一个用心的回答都能够得到好的展示,为他人带来更多帮助。但是,我们也发现在社区中出现了答非所问类的内容,影响知友们获取有价值内容的效率。


为了更好地识别答非所问类内容,我们采用了多种模型,包括传统的机器学习模型和比较新的深度学习模型。通过前期对语料的分析,我们发现语言用词、作者历史行为、知友对内容的反馈信息等都具有比较明显的区分度,因而我们尝试使用特征工程和传统机器学习方法实现了瓦力识别答非所问的第一版模型,并达到了一个相对不错的效果。

Random Forest

随机森林 (Random Forest) 是树模型里两个常用模型之一(另一个是 Gradient Boosting Decision Tree)。顾名思义,就是用随机的机制建立一个森林,森林由多棵分类树构成。当新样本进入时,我们需要将样本输入到每棵树中进行分类。打个形象的比喻,知乎森林召开议会,讨论


@刘看山 到底是狗还是北极狐(看山,我知道你是北极狐的,手动捂脸逃…),森林中的每棵树都独立发表了自己对这个问题的观点,做出了自己的判断。最终刘看山是狗还是北极狐,要依据投票情况来确定,获得票数最多的类别就是这片森林对其的分类结果。如同图一所示意境。



图 1 森林会议


有了树我们就可以分类,那么在答非所问这个场景下,怎么来建立这一个森林呢?


样本


通过训练语料和业务数据,进行特征工程,提取出了以下三类特征:


  • 回答和问题的文本特征:如二者的词向量、词向量相似度、关键词相似度、话题相似度等;

  • 回答的统计特征:如回答的赞同、反对、评论、举报等是用户对其的交互特征;

  • 回答作者的统计特征:正向行为,如关注、回答、提问、评论、举报等,负向行为,如回答被赞同、被反对、被感谢、被举报等。


同时,通过历史积累、用户标注、策略生成产生出了训练样本集,然后用以上特征类别表示出每条样本。


分类树


使用随机有放回抽样选取每棵树的训练样本,随机选取 m 个特征 (m < 总特征数) 进行无限分裂生长,成长为能独立决策的树。


投票决策


通过建好的多棵分类树,对新的样本进行决策投票,获得最终的分类结果。


对于 Random Forest 的实现,有很多优秀开源的实现,在实际中我们封装了 Spark 中的 Random Forest 完成了模型的迭代。最终取得了 Precision 97%,Recall 58% 左右的不错结果。


细心的知友可能注意到了,我们的特征里有一类特征是与时间和回答的暴光有关的,即回答和作者的统计特征。为此我们在现有模型的基础上分析了这类特征的时间累积效果,如图二所示。从图中可以看到,经过一天的统计特征累积,Precision 达到了 90%,但 Recall 只有 40%,可以说这一天时间对于 40% 的答非所问有了比较充分的特征积累以支撑对其的准确判断。而随时间的增加,基本上 Precision 和 Recall 都有提升。但并不是时间越长,提升越多。


最终我们结合产品应用层面和算法阈值,分别选出两个时间点,一方面牺牲 Recall 快速识别处理一部分答非所问的回答,另一方面允许一定的处理延时,保证了大量的 Recall,大大净化了回答区域的无关内容。



图 2 统计特征累积周期(天)对 Precision 和 Recall 的影响

深度学习模型

传统机器学习的一个核心内容就是特征工程,包括特征提取、特征选择等。


  • 特征提取:从原始数据出发构造出特征,通常包括业务和对语料的统计分析。

  • 特征选择:从提取出的候选特征中挑选出有用的特征。


但特征工程总是会耗费比较多的时间,而且在答非所问的识别中一些时间相关的特征,还延长了处理周期,不利于快速处理。而广为流传的深度学习,能自动对输入的低阶特征进行组合、变换,映射到高阶的特征,这也促使我们转向深度学习进行答非所问的识别。


深度学习兴起于图像识别,其过程可以引用图三[1] 大致描绘,输入特征,经隐藏层逐层抽象、组合,最后经输出层得出识别结果。



图 3 深度学习示意


Word Embedding


相较于图片天然的像素表征,可以直接输入到深度神经网络里,文本需要进行向量化后方可作为网络的输入。关于「词向量化」的精彩描述可以参考[2]。此处我们抽取了知乎社区 1000 多万真实的文本信息,包括问题、回答、文章、评论等数据,利用 Facebook 开源的 FastText 训练了 256 维的词向量和字向量。对于 FastText 的原理和用法此处不作详细阐述,感兴趣的朋友可以参考[3]。


CNN 网络 (Convolutional Neural Network)


我们模型的网络结构基本上采用了 Severyn[4] 提出的网络结构,但在一些细节上做了些改动,比如图四中的 CNN-answer/question, 我们结合了 Wide & Deep[5] 的思想,以提取更为丰富的语义信息。



图 4 模型结构


下面简要介绍每一层的含义:


Embedding Layer——该层利用预训练好的 FastText 词向量将原始词序列表达成词向量序列


Convolutional Layer——此层主要通过卷积操作,同时捕获类似于 N-Gram 特征(但同 N-Gram 还是有差异的)。我们的模型选取了 [2, 3, 4, 5, 6] 5 个卷积核宽度,为每个卷积核配置了 64 个 filter


Pooling Layer——池化层,对经过卷积操作提取的特征进行 Sampling。此处我们采用了 K-Max-Average pooling,对卷积层提取的特征,选择出激活程度 top-K 的特征值的平均值作为 pooling 的结果


Feature Join & Fully connected Layer——将前述几层获得的特征,以及额外信息进行融合,作为最终的特征输出,以便于最后的决策判断。实际上,我们在 Fully Connection 后面加了 3 层 Dense Layer,以提高网络的表达能力。


Softmax——将最后的特征转换成二分类决策概率。


最终训练好该模型,在验证集上达到了 Precision 78%, Recall 80% 的效果。Recall 虽有比较大的提升,但 Precision 并没有前文描述的 Random Forest 的方法好。

效果

目前,答非所问几个模型都上线到了知乎产品的诸多场景下,如反对、举报、专项清理等。每天清理约 5000 条新产生的「答非所问」内容,以及此前现存的 115 万条「答非所问」内容。


为了维护良好的讨论氛围,我们还需不断优化和升级。我们还有很长的路要走,后续我们将建立更为精确的语义模型,辅以问题意图识别,知识库等,更加准确地识别出所有内容。瓦力的升级,离不开知友们的帮助。欢迎大家在日常使用中,继续通过「反对」和「举报」向我们提供更多反馈,与我们共同维护知乎健康的讨论氛围。

参考文献:

[1] Breaking it down: A Q&A on machine learning


[2] 词向量和语言模型


[3] FastText


[4] Learning to rank short text pairs with convolutional deep neural networks


[5] Wide & Deep Learning for Recommender Systems


活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2020-03-26 19:00494

评论

发布
暂无评论
发现更多内容

财务或类财务系统数值精度设计

路边水果摊

数字 财务 精度 数值

模块三作业

NewBranSTONE

架构实战营

看完这篇文章,你也可以手写MyBatis部分源码(JDBC)

还在用Jenkins?试试Gitlab的CI/CD功能吧,贼带劲!

Abp太重了?轻量化Abp框架

Patronum

学习 程序员 架构 框架 Abp

来自网络资源资产管理的灵魂拷问

鲸品堂

网络 资源 运营商

哔哩哔哩B站视频下载器推荐(简单又好用)

资源君

工具 分享 哔哩哔哩 b站视频下载 教程分享

电脑里的视频被误删了可以用EasyRecovery恢复吗?

淋雨

EasyRecovery 文件恢复 硬盘数据恢复

【云洲智造】直播间下午4:30准时开播!

浪潮云

工业互联网

不收藏你就后悔吧!费了三天才从GitHub上扒下的阿里Java优化笔记

架构训练营模块三作业

晨晨

架构训练营

如何基于磁盘 KV 实现 Bitmap

Kvrocks

redis BitMap storage KV存储引擎

文档内容结构化在百度文库的技术探索

百度Geek说

百度 大前端

保洁阿姨分享:腾讯架构师JDK源码笔记,13万字,带你飙向实战

聊一聊在阿里做了 8 年研发后,我对打造大型工程研发团队的再思考

尔达Erda

开源 云原生 研发管理 PaaS 研发

科技监管能源运作?智慧能源从光热发电技术开始描述

一只数据鲸鱼

数据可视化 智慧能源 光热发电

Unity ML-agents 参数设置解明

行者AI

EMQ X Cloud 正式支持 Microsoft Azure 平台,助力企业出海业务

EMQ映云科技

azure 云端 云上数据 emq

Lazada首届技术开放日开麦在即 共享技术创新最佳实践

以1敌10不是梦,Spring Boot企业级真实应用案例

博文视点Broadview

秒懂 Java 的三种代理模式

Java虚拟机之CMS垃圾收集器

2021,你还在写“赤裸裸”的API吗?

手把手教你实现Android编译期注解

vivo互联网技术

android 注解 sdk

Cypress 自动化测试

admin

自动化测试 Cypress 测试 单元测试 UI测试

小透明学弟的华为上岸之路

程序员鱼皮

Java c++ Python 大前端 后端

保安小王分享:四面字节跳动,终拿Offer,只有努力,方能成功

基于 Golang 构建高可扩展的云原生 PaaS(附 PPT 下载)

尔达Erda

开源 云原生 数字化转型 PaaS 数字化

带你认识MindSpore量子机器学习库MindQuantum

华为云开发者联盟

mindspore 量子机器 MindQuantum 量子机器学习库

最壕逆天改命:18名Java程序员凭阿里P8笔记,同时斩获一线大厂offer

Java架构师迁哥

东京奥运会与网络安全背后的速度博弈!

郑州埃文科技

  • 扫码添加小助手
    领取最新资料包
算法在社区氛围的应用(三): 机器学习在答非所问识别上的运用_文化 & 方法_孙先_InfoQ精选文章