其实最近挺纠结的,有一点点焦虑,因为自己一直都期望往自然语言处理的方向发展,梦想成为一名NLP算法工程师,也正是我喜欢的事,而不是为了生存而工作。我觉得这也是我这辈子为数不多的剩下的可以自己去追求自己喜欢的东西的机会了。然而现实很残酷,大部分的公司算法工程师一般都是名牌大学,硕士起招,如同一个跨不过的门槛,让人望而却步,即使我觉得可能这个方向以后的路并不如其他的唾手可得的路轻松,但我的心中却一直有一股信念让我义无反顾,不管怎样,梦还是要有的,万一实现了呢~
扯得有点远了hhh,回到文章,因为目前有在做涉及到文本分析(情感分析)的项目,也想为以后的相关项目做下知识储备,最近开始入坑Tensorflow的一些深度学习的NLP相关实践,同时学习了文本分类领域中基于深度学习的模型的一些应用知识(然而还是个菜鸟,半懂不懂的哈哈哈)。这里对相关知识进行了总结,巩固个人知识体系,同时分享给大家~
(提前声明:菜鸡观点,非大佬观点,欢迎纠正,也会不断修正的)
持续更新........
文本分类领域,目前主要可分为:
五大领域(当然也有一些其他细分领域,这里不进行讨论)。近几年随着深度学习在自然语言处理领域的应用,文本分类也进入了由深度学习模型所导引的第三个阶段,逐渐超越了基于传统机器学习的方法。
目前,学术界针对文本分类所提出的深度学习模型大致有150多种,根据结构可分为11大类:
阿巴阿巴,如果看不太懂也没关系,我也只认识比较经典的几个hhh,但是可以了解下做储备嘛,也许哪一天就接触到了呢~下面这张图是2013年至2020年发布的一些很经典的深度学习文本嵌入和分类模型。我们可以看到入门的word2vec在2013年就已经提出来了,还有当下比较热门的Tree-LSTM、BERT也是前几年提出来的,的确是更新很快啊emmmm...
我们在针对文本分类任务选择最佳的神经网络结构时,常常会很迷茫,像我这种菜鸟就是百度下哪个模型社区比较火就用大佬们的代码来复现hhh(当然使用比较多也说明这个模型的性能和适用性不会太差)。老师常说,其实要多试,采用精度最高的。呜呜呜,然而现实是前期用来做精度验证的数据集的标注就是一个很大的工程量了,然后每一个模型的实现也.....很!复!杂!啊!超级烧脑,毕竟神经网络的构建可不是传统机器学习算法那样调一两个参数就好了~
当然,多试肯定是要多试的,但是我们应该有选择性的试,那么,初步的筛选、确定模型的类别就很重要了,这一点其实很靠经验,我这个菜鸡就不教坏大家了,我们来看下大佬的官方思路:
神经网络结构的选择取决于目标任务和领域,领域内标签的可用性,应用程序的延迟和容量限制等,这些导致选择差异会很大。尽管毫无疑问,开发一个文本分类器是反复试错的过程,但通过在公共基准(例如GLUE )上分析最近的结果,我们提出了以下方法来简化该过程,该过程包括五个步骤:
是不是看不懂了,我摊牌了,第一遍读完我整个人都是懵的,然后又仔细读了两遍,好像懂了一点点,又百度了一些专业名词,又懂了一丢丢了,但还是懂一半啊哈哈哈哈。估计要真正走一遍流程之后采用完全解读吧!等之后有时间实践一遍我再重新更新解读一下!
当下常用的用于评估文本分类模型性能的指标,以下介绍4种:
相关的定义百度很多hhh,这里有几个点是我在学习过程中注意到的:
当然深度学习模型性能分析除了使用常用的评估文本分类模型性能的指标进行评估外,还可以与传统的机器学习算法或其他非深度学习模型指标进行一个对比,进一步来凸显性能的提升。
深度学习其实是一个很早前提出来的东西,却在近几年火得一塌糊涂,不仅源于相关理论、硬件条件的发展,当然也源于其强大的应用成效。借助深度学习模型,CV和NLP的相关领域也取得了很大的进步。前沿、先进的新颖思路也层出不穷,如神经嵌入,注意力机制,自我注意力,Transformer,BERT和XLNet,这些思想导致了过去十年的快速发展。在这方面,国内其实做的还不够完善,相比于国外大量成熟的落地项目和开源工具。然而,由于中文语言的特殊性,我们也看到中文自然语言处理,中文文本分析还具有很大的发展改善空间。很多公司也开拓了中文文本分析的一站式业务,并致力于 提升其适用性和精确度。
缺少大规模的中文领域数据集,这是我在中文自然语言探索时所发现的一个国内学术的重大缺失,这在一定程度上也抑制了一些相关领域的发展,同时也难以形成一个微细分通用领域的模型评测度量,这也导致了很多小型团队的研究成果也难以推广。在这个基础上,针对更具挑战性的文本分类任务构建新的数据集,例如具有多步推理的QA,针对多语言文档的文本分类,用于极长的文档的文本分类也将成为下一个中文文本分析领域飞速发展的突破口。(仅代表个人观点hhh)
除此之外,因为目前大多数的深度学习模型是受监督类型,所以需要大量的领域标注文本,需要大量人力和时间成本的投入,虽然目前已经有了少量学习和零学习Few-Shot and Zero-Shot Learning概念的提出,但仍不够成熟,如何更好地、较为平衡地降低模型的输入成本是一个下一个待解决的问题。
增加对常识知识进行建模的探索。在这一点上,领域知识图谱的构建是一个重要的分支。结合知识图谱进行深度学习,进而提高模型性能的能力,在提高解释性的同时,无疑也增加了机器对语义的理解,这和人的思维是很接近的,而不只是一个不可预测的黑箱模型。在此基础上,实现以人们类似的思维方式基于对未知数的“默认”假设进行推理,而不只是依赖于数字模型。目前,知识图谱构建的研究在国内已经有了大量的探索,趋向一个较为成熟的阶段,而结合知识图谱进行深度学习的研究却鲜有团队进行探索,或者说在萌芽阶段(如果没记错大部分是基于图数据库的深度学习),至少还没有较为著名的开源项目(可能是我没发现哈哈哈)。
黑箱模型的深层探索。虽然深度学习模型在具有挑战性的基准上取得了可喜的性能,但是其中大多数模型都是无法解释的。例如,为什么一个模型在一个数据集上胜过另一个模型,而在其他数据集上却表现不佳?深度学习模型究竟学到了什么?能在给定的数据集上达到一定精度的最小神经网络架构是什么?尽管注意力和自我注意力机制为回答这些问题提供了一些见识,但仍缺乏对这些模型的基本行为和动力学的详细研究。更好地了解这些模型的理论方面可以帮助开发针对各种文本分析场景的更好的模型。