Press "Enter" to skip to content

自然语言理解和深度学习的应用实践

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

一、深度学习概述
深度学习是从机器学习基础上发展起来的,机器学习分为监督学习、非监督学习以及强化学习三种类型。
深度学习是在机器学习的基础上把特征抽取工作放到里面一起来完成的,直接实现了端到端的学习。通常我们遇到的深度网络包括: 堆叠制编码器、深度信念网络、卷积神经网络和循环神经网络。

左边这张图是制编码器的一个网络结构示意图,制编码器的特点是输入和输出是完全一样的,它通过将输入复制到输出,去学习它在隐层里面的表示。右边是堆叠制编码器,它可以把制编码器的隐层不断堆叠起来,形成多层的深度网络。与堆叠制编码器一样,深度信念网络是在限制玻尔兹曼机基础上叠出来的一个网络, 限制玻尔兹曼机 是神经网络里面最 基础 的网络结构之一,通过将 多个限制玻尔兹曼机堆叠起来形成的深度网络 ,是深度学习里面最 基本 的网络结构之一。
深度学习被最广泛使用的是从 卷积神经网络 开始的,卷积神经网络的示意图如这张图片所示,它通过卷积和对输入的局部特征进行学习,来达到最终的目标。卷积神经网络被广泛应用于 文本处理 和 图像识别 当中。
深度学习另外一个被广泛使用的网络是 循环神经网络 ,循环神经网络有非常多的变种,这张图是它其中的一个,叫SLTM,经常被用于 语音识别 和 文本处理 当中。
从上面网络可以看出来,深度学习是在神经网络的基础上发展起来的,神经网络早期的效果并不是特别好,但是从两千零几年开始,因为海量数据的积累以及逐层训练技术的出现,最终还包括GPU训练的兴起,使得深度学习能效果越来越好,被广泛在语音识别、计算机视觉、自然语言处理中被使用起来。自然语言处理就会用到非常多深度学习的算法。
二、自然语言理解概述
自然语言理解所处理的对象是 文本 ,文本是广泛存在于我们的日常生活和工作当中的,像 达观数据 所擅长处理的是 正式文本 或者 长文本 ,长文本像 法律文书、人事档案、证券专业文书、企业手册、新闻文章、问答资料、客户评论意见 等都是我们常的文本,它几乎存在于所有的行业中, 金融、法律、媒体、互联网、政府、公共机构、大型企业 ,无所不在,如果能够使用自然语言理解和机器学习的方法,使得 大量需要人工处理的海量文档自动化 ,将会非常大的提高企业和政府部门的工作效率。
然而,让计算机来理解文本是非常难的一件事情,首先,计算机缺乏 常识 以及 专业的背景知识,而人类通常拥有非常丰富的专业知识和背景。比如对“future”的理解,普通人认为是“未来”,但对于金融相关的专业可能就会认为是“期货”,而“期货”对金融专业人士来说是一个语境,这是计算机所不存在的一个场景。
除此之外,人类说话本身非常的抽象和模糊,通常拥有非常多的歧义或者语境信息在里面。我们通常在见到朋友时会说“吃饭了吗?”
“吃饭了吗”对计算机来说就是“吃饭了吗”四个字,而对人类来说它通常拥有丰富的隐含意义在里面。
从 分词 的角度,我们可以看词本身的力度问题,“中华人民共和国”和“中国”本身意义是一样的。还有 指代归属 问题,当人与人之间交流时候,你说的“你、我、他”能够自然而然的被替换成相应的目标,而计算机来解决指代归属问题也是非常难的一个事情。除此之外,还有 同义词近义词、局部转义、一词多义 等问题。
比如一词多义的问题,大家在网络上看到过一个段子,“方便方便,意思意思”然后去理解“方便方便”和“意思意思”不同的意思。计算机同样存在这个问题,它如何理解“方便方便”和“意思意思”的不同意思和不同的方便程度。
再从词语构造成句子的过程中也会遇到非常多的问题,因为对人类来说,句子之间的部分结构发生颠倒,人类依然能够正常的理解,但是对计算机来说,它对于像“你上班了吗?”“班上你了吗?”就有难度。
再往上,语义层面的歧义就更多了,“咬死猎人的狗”如果在没有上下文语境的情况下,人类也非常的难以理解,到底是狗咬死了猎人,还是某些动物把猎人的狗给咬死了,这就是所谓的 语境
除了语境之外,还有比较多的 领域知识、专家知识 ,比如最近爆雷非常多的P2P,有一个特点是利息比较高,高过了一定程度就是存在问题的概率比较高。这类专家的知识对计算机来说也是一个问题。
“企业清算时按投资年复率20%给予补偿”,这句话如果存在合同当中,往往需要注意的点是因为行业过来不超过12%,20%的利率过高,过高是写错了、还是因为其他特殊原因,遇到这种问题时就需要通过双重确认,来确保文本的正确。
为了解决这些问题,我们 使用各种机器学习和深度学习的方法来建立模型,通过海量的文本进行训练这个模型来预测未来。 这个方式有点类似于 人脑 ,人是要通过学习,学习很多专业知识,当学完知识之后,在未来遇到这些问题时,就会通过类似于机器学习的模型来实现预测和判断。
在建立这些模型的过程中,我们通常会分为 字词级分析、段落级分析、篇章级分析 。
字词级分析 是我们通常所遇到的像 分词、命名实体识别、同义词分析 等。
段落级分析 是 从句子到段落层面来对文本进行建模 ,它一般包括 依存文法分析、文本纠错等。从段落往上是 篇章级分析 ,篇章级分析更多是语义层面的理解,它通常包括像 文本相似度、主题模型、文章的聚类分类 和 标签提取 。
三、文本语义分析及其应用实践
文本语义分析首先是 表示学习。 表示学习通常传统上对文本的表示是通过One-hot编码来实现的,在深度学习出来以后,往往使用稠密的向量编码来对文本表示。
词向量的稠密表示具有非常大的以上,一方面是它的维度降低得非常多,一般情况下200-300维就足够以表达中文的词汇,而one-hot编码往往需要50万-100万维来表示。除此之外,词向量还能表达词的语义层面的相似性。
对词向量经典的训练方法是谷歌原始的“Word2Vector”这篇论文里提到的两种方法,词袋模型和跳跃表,词袋模型是用词的上下文信息来表示这个词本身,而跳跃表则是用词的本身来表达词的上下文信息。在“Word2Vector”基础之上还发展出包含了全局词信息的(14:13)向量训练方法。
除了词向量之外,深度学习的各种网络结构也被用来进行 文本分析 。比如 对句子进行分类 ,可以使用 卷积神经网络 来实现。
层次注意力模型 是 最新 的一个网络,它最早被使用来 对评论进行打分。 层次注意力模型有一个非常大的优点,就是它 考虑了文本或者是篇章的结构 ,它是从  开始,到 句子 的一个注意力模型,再到 整个篇章 的 注意力模型 。
它另外的一个优点是可以 把整个网络结构的参数可视化出来,来解释词、篇章或者贡献的大小。
除此之外,最新的一篇论文所提出来的 金字塔结构的卷积神经网络模型 ,可以非常高效的对长文本进行表示学习,最终达到一个非常好的 分类效果 或者 标签提取类效果 。
除了分类和标签提取之外, 信息抽取 也可以从深度学习来实现,达观通常会把信息抽取问题转化成四种类型的分类问题来实现的,这样就可以充分利用前面所提到的各种网络结构,比如层次注意力模型和金字塔结构的卷积神经网络。
对于像NER或者分词这种任务来说,我们也会使用“+CRF”的方法来实现,这张PPT里面讲的就是使用“词向量+SLTM+CRF”方法来实现NER。

像这张使用“词向量+Bi-SLTM+CRF”通常情况下效果都是非常好的,但是对于某些特定场景下它还会有一些不足,比如非常专业的文献,像达观跟冀东石油合作的一个项目,是对石油里面的专业技术文档进行处理,这种情况下会遇到非常低频的词汇,如何对这些 低频的词汇进行处理 是我们需要考虑的一个问题。
达观数据采用了一个方法,是把 低频词汇 和 专业领域的词汇 通过某种表示,和 原始的词向量一起拼接,作为SLTM和CRF的输入,来实现对这些低频词汇问题的解决。充分利用这些深度学习的模型和应用实践所总结出来的经验,我们可以非常高效的去处理像企业通常所遇到的合同、简历、工单、新闻、用户评论、产品说明这些文档。
四、推荐系统及其应用实践
推荐系统非常的火热,像今日头条和抖音这种通过算法推荐用户所感兴趣的东西,让用户不离开APP,都是非常成功的案例。国内类似于的今日头条都比较小的企业或者APP也非常多,它们往往会选择一家像 达观 这样的 SaaS服务 来实现它们的 推荐系统 。

推荐系统的基本过程是像这张PPT里面所讲的一样,通过对原始的数据进行处理,使用到自然语言理解里面的 分词 和 NER技术 ,使用 文本的分类、主题模型、情感分析 等,把这个 分析结果 放到搜索引擎,达观使用的搜索 引擎 是 Elasticsearch集群 ,在这些集群里面会实现一个初步的Ranking处理。
以搜索引擎为基础,我们使用各种推荐算法,像 协同过滤 和 基于内容的推荐算法 ,以及深度学习出来以后的 神经网络协同过滤 的方法,来对这种文档进行推荐。
不同的推荐算法会在同个场景下推荐出不同的内容,在这个基础上我们会使用一些融合算法,来把这些不同算法推荐的结果进行融合。我们常用的推荐融合算法包括 GBDT、SVD 等。
在深度学习上也有一些算法,像 DeepFM 这种算法也可以用来做算法融合,做推荐内容的融合。通过融合算法把不同推荐算法、推荐内容给融合起来之后,还会根据APP所要求的业务规则和过滤规则,来对这些内容进行过滤,最终把这些过滤好的结果发送给用户,这个是我们整个推荐系统的一个基本的过程。
对于推荐系统来说,底层的像协同规律或者基于内容推荐非常成熟的算法,在算法之上如何获得更好的效果,我们会利用最前沿的深度学习推荐算法的技术。推荐系统的效果往往取决于算法的好坏。
除了传统的像CRF这种算法之外,我们也尝试了非常多深度学习层面的算法,像 Wide&Deep这个算法就是一个例子,Wide&Deep是我们尝试的一种算法。

这张PPT讲的是Wide&Deep网络结构,左边是一个Wide模型,Wide模型它一般常用LR,它非常高效,可以对非常大的维度的输入进行学习。这些输入一般像用户点击这种行为反馈数据。
Wide&Deep模型的Deep是右边这个模型所展示的,它是个多层的神经网络, 多层神经网络 可以对 原始特征 进行学习,学习出一些人工特征所无法抽象出来的一部分特征。通过联合训练,将Wide模型的输出和Deep神经网络的输出结合起来,获得更好的效果。
在实践中,Wide模型一般是用户反馈这种,通过LR这种非常高效的方法,把用户反馈实时的体现到推荐结果上。而Deep模型一般是用来训练像Item这种数据,可以通过离线的方法,使用非常长的时间,训练出一个更好的效果出来。Wide&Deep的优势是把 实时反馈 和 对文章的深层理解结合 起来,从而获得更好的效果。
在Wide&Deep之外,我们也尝试了神经网络协同过滤,神经网络协同过滤是在协同过滤的基础上、使用神经网络的方法来实现更好的效果。

这是一个神经网络协同过滤的示意图,左下角这个输入是user层面的向量,而右下角这个输入是Item层面的向量,将user向量和Item向量输入到一个多层的神经网络上,可以通过大规模离线训练的方法,来获得一个比较好的协同过滤的效果。
这个网络结构和通常的网络结构非常相似的,一般情况下它是对user和Item通过embedding的方式,这个embedding就跟前面讲的word2vector是一样的,通过embedding把user和Item变成一个稠密编码,然后输入到一个多层的神经网络上。输入就是user、Item之间的分数值,这个网络就是一个简单的回归模型,通过非常多层的神经网络的非线形特性来实现比传统简单CRF的效果会好非常多。
知识图谱是当前非常热门的一个方向。如何把 知识图谱和深度学习结合起来应用到推荐系统里面 ,是我们去做的一个尝试。

这张图可以简单的分成三个部分,左上角这部分是普通的注意力网络结构,它通过将用户所感兴趣的Item跟普通的后选级的Item进行学习,学习出一个全值,这个全值用来表示用户对这个新闻感兴趣的程度。左下角这个网络是融合了知识图谱里面的一些内容,将新闻的表示学习给学习出来。右边大图是将左边这两个图学习出来的结果,用类似于前面提到的神经网络协同过滤的方式把它给组合起来,形成了推荐系统里对用户推荐内容候选级的学习过程。通过这种方法,在某种场景下我们可以得到更好的效果。
综合前面这些推荐算法形成的推荐系统,可以非常有效的去做好 个性化推荐、相关推荐 和 热门推荐 等各种内容,它可以广泛应用在像资讯,类似于今日头条这种,也可以应用到简历推荐上,可以在HR发布一个JD的时候,给HR推荐满足这些JD要求的简历。对其他场景也可以使用推荐算法来实现,对于一个案件,可以推荐这个案件相关的其他案件,或者适用于这个案件的一些法律条文。商品推荐则是更常见的内容,它其实也是推荐系统最初使用的一个应用场景。
再简单的推销一下达观的推荐系统,它会结合前面提到的各种 深度学习 、 自然语言理解 和 各种各样的算法 ,来实现一个非常好的推荐效果。除此之外,我们也有非常多 行业应用经验 ,比如 招商银行的掌上生活 的 个性化推荐 ,使用的就是达观给它们做的 私有化部署推荐系统 。像 澎湃新闻APP ,它们的新闻推荐系统是用我们的 SaaS服务 来实现的。
五、文档智能处理及其应用实践
我们在自然语言理解环节提到, 文档的种类 是非常丰富的,企业面临的文档也是非常多的, 应用场景 也是各种各样。比如对财务报表来说,需要的是信息抽取,如何把财务报表变成一个结构化的数据。而对于合同来说它包括两个,一方面是写合同的时候是否写得符合合同法和企业内部的规定,对于审合同的人来说则是、是否放过了一个不符合合同规定的东西,另外,如何去防止合同里面阴阳合同的情况出现。
其他还包括文档的智能搜索,如何去搜一大篇几百页文章里的某个文字,然后把对应的字段给显示出来。应用场景包括,员工刚入职一家公司,需要一个公司手册一样的内容,想理解报销或者请教怎么去走流程的时候,就要去搜这个文档。如何不展示给员工整个文档,而是展示这个文档的章节。
除了读、搜、审之外,还有一个场景是更好的利用深度学习和自然语言理解来帮助写文档的人更好更快的写作,比如辅助去写新闻。
下面,我以场景来做技术层面的解析,比如 文本分类, 前面提到了非常多深度学习的分类器,还包括一些传统学习的分类器,都可以用来做文本分类。 传统学习 的 优势 是在 语料比较少 的时候,比如JD就是职位描述,这种场景下一般企业的职位描述就是几百个或者几千个,从深度学习的方法去实现,可能效果并不是特别好,这种情况下我们会选择像传统的方法,决策数或者SVM来实现对JD的分类。而对于简历,简历的规模往往JD的100倍以上,这种情况下我们就可以用前面提到的层次注意力模型和金字塔结构的CNN来实现对简历的分类。
除了分类之外,像信息抽取通常使用的是 CRF ,CRF可以达到一个比较好的效果,它的 标注语料要求可能比较低 ,几百到一两千份就能够实现比较好的效果。当企业有 更多语料 的时候,我们就可以使用 深度学习 的方法来实现。前面已经提到过,我们可以把信息抽取转化成分类问题来实现,前面提到的各种分类算法,像金字塔结构的CNN和层叠注意力模型都可以用来做分类。
除此之外,我们在推荐系统环节所提到的像Wide&Deep这种算法,结合LR和深度网络的方法,也可以用来做这个信息抽取的事情。
结合方式说起来比较简单,可以把CRF当作Wide模型,然后用深度网络Deep模型,用联合训练方法把它们结合起来,这样可以实现类似于迁移学习的效果,就是我们可以预先训练好一个深度网络,然后把深度网络给固化起来。在面对企业没有大量GPU的时候,我们只要重新去训练这个Wide,Wide模型可以使用比较简单的算法,像CRFPP来实现,这种方法可以很好的均衡资源的使用和效果。
除了企业对文档抽取有要求之外,其实 文档的智能比对 也是一个非常重要的应用场景,这种比对是在 文档的信息抽取 之上 构建 的。在信息抽取之上,我们通常使用规则来实现比对这个功能,只要信息抽取的效果足够好,比对效果一般都不会太差。
这是我们实际的一些应用场景,它通过 信息抽取技术 把 关键信息 给抽取出来,然后使用各种业务规则对合同进行智能审阅。这种简单的方法就可以达到非常高的效果,可以 替企业节省大量的法务人员 。单个文档的审阅时间节省得非常多,同时可以让企业节省200个法务的人力。人工智能和文本智能审阅的使用,可以给企业带来非常大的收益,同时可以让这200个人做更有意义的工作。这个是合同审阅的效果图。

六、总结

这是达观使用的架构图,我们可以把输入通过各种特征工程,使用传统的方法来做机器学习,也可以通过Embedding的方式使用各种深度网络来实现,最终会使用一些融合算法,来把不同模型的结果输出做算法融合,最后做些后处理,比如各种业务规则、各种过滤条件、各种在国内特殊国情所不能出现的内容都要过滤掉,得到一个结果出来。
并不仅仅是深度学习效果好就使用它,我们会根据具体的应用场景来选择 。如当 数据规模小 的时候就无法使用深度学习来做,当资 源要求比较高 的情况下,我们也不会选择深度学习。

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注