🔥 如题,本文将要介绍三种模型:
- Convolutional Neural Network (CNN)
- Recurrent Neural Network (RNN)
- Hierarchical Attention Network (HAN)
介绍
文本分类是自然语言处理和监督学习领域一个非常热门的子任务,很多新手的学习也都是从文本分来开始的。那么文本分类是啥?🙈
类似于判定一则新闻是否是垃圾新闻,通常此类数据只需两个字段,比如:review
,label
等。我们需要做的就是根据带标签的文本数据,训练出一个判别器,用于识别其类型的正负。常见的文本分类任务有:
- 文本情感分类(喜怒哀乐)
- 垃圾邮件判别
- 用户话语标签(某米音响中的:放歌,闭嘴,关灯等话语)
- 新闻类别分类(历史,娱乐,政治等)
当然应用领域肯定不止这些,分类属于一个非常基础且重要的功能,学好不易,且学且努力。
安利一波文本分类代码:
- Text-Classification
- brightmart-text-classification
- cnn-text-classification-tf
- … (👩💻 自己上gayhub上找)
说明
一个健全的文本分类任务是需要准备以下素材的:
-
训练语料 :没有这个都是*淡
-
WordEmbedding:可以使用预训练好的词向量,也可以自己训练词向量
预训练好的词向量:
-
标签:这个一般是和训练语料放在一起的,由标签种类的数量可以将文本分类认为二分类和多分类任务
-
模型:用来训练语料生成最终的判别器
好了,该介绍的废话都说完了,接下来就开始介绍其中多种模型了。有研究背景的同学,一定要看论文,一定要看论文,一定要看论文,地址在最底下自己找,本文中的图也大多数来自于原论文。
CNN
首先我假设各位大佬们都了解CNN的基本原理,那如何将CNN应用在文本上呢?在此我通过TextCNN来讲解,参考了 What Does a TextCNN Learn? 论文来给大家讲解,希望大家能够吸收消化20%就已经很不错了。
首先来看看其整体架构图:
左边是由两个 static vectors
和 non-static vectors
组成,两者的区别在于词向量能否学习(微调)。这个特性能够让网络拥有一定的基础文字关系 的 记忆和学习能力。
词向量一般基于大量的语料库学习而来,里面包含语法和语义的相关信息,这些信息可以使用相似度来进行描述,通过统计方法得来。而这些仅仅只是通过一定的统计方法得来的特征,到底能不能经得起验证(loss函数的验证)就不得而知了,所以此处的学习能力是非常重要的。
另外,如果对词向量的学习可以看看这篇论文或者