一.概述

HAN(Hierarchical Attention Networks for Document Classification),层次化注意力机制等,是Zichao Yang等2016年提出的一种新型文本分类模型。它主要使用词(字)语级别,和句子级别的注意力机制Attention,构建文本特征表示,层次化文本(即字、词、句子),十分符合人类直觉,也是近年来图像、NLP等深度学习迅猛发展的关键点。

2016年,那时候NLP自然语言处理领域是RNN+Attention的天下,我还记得,那时候,Bi-LSTM+CRF横空出世,自此,NLP任务似乎被双向LSTM统治了,至多是BiLSTM和Attention联合使用。但是,仅仅才过了一年,2017推出的Self.Attention,在NLP领域,瞬间将CNN、RNN打落凡尘,虽然那时候我还懵懵懂懂,固执于Bi-LSTM,对于时代的变革毫无察觉。5G就要来啦,但也不知道会发生什么巨变。正如过去的web1.0、web2.0,以及走到下半场的移动互联网时代,不知不觉,或许AI和深度学习也快步入中年,你我也成为了历史。

正如那句话所说,"未来已来,只是尚未流行!",说得那么文艺,无非就是我们抓不住罢了,5G前夜,诸君共勉吧!

回到HAN模型,其实直观上理解起来并不困难。粗看起来,这不就是两层一样的(BiLSTM+Attention)的叠加么,也没什么特别的地方呀。今天再回过头来看,似乎也没有什么更加多的意思。Bi-GRU对文本作序列编码? word-(encode+attention)?sentence-(encode+attnetion)?没什么意思。

不过,以paper中对论文结果的分析来看,似乎证明了一点,Attention的特征效果贼强。当然,还有更高一级的特征组合。

github项目地址:

https://github.com/yongzhuo/Keras-TextClassification/tree/master/keras_textclassification/m12_HAN

二. HAN模型原理等

2.1 HAN模型图(HAN)

三.HAN实战

试验了github上的HAN,效果还不错,但是由于有两个BI-GRU,训练速度还是比较有点慢的。

开始实现的时候遇到了点小问题,就是word-attention和sentence-encode拼接的时候,出了个bug,后来解决了。

github项目地址:

https://github.com/yongzhuo/Keras-TextClassification/blob/master/keras_textclassification/m12_HAN/graph.py

核心代码:

    def create_model(self, hyper_parameters):"""构建神经网络:param hyper_parameters:json,  hyper parameters of network:return: tensor, moedl"""super().create_model(hyper_parameters)# char or wordx_input_word = self.word_embedding.outputx_word = self.word_level()(x_input_word)x_word_to_sen = Dropout(self.dropout)(x_word)# sentence or docx_sen = self.sentence_level()(x_word_to_sen)x_sen = Dropout(self.dropout)(x_sen)x_sen = Flatten()(x_sen)# 最后就是softmaxdense_layer = Dense(self.label, activation=self.activate_classify)(x_sen)output = [dense_layer]self.model = Model(self.word_embedding.input, output)self.model.summary(132)def word_level(self):x_input_word = Input(shape=(self.len_max, self.embed_size))# x = SpatialDropout1D(self.dropout_spatial)(x_input_word)x = Bidirectional(GRU(units=self.rnn_units,return_sequences=True,activation='relu',kernel_regularizer=regularizers.l2(self.l2),recurrent_regularizer=regularizers.l2(self.l2)))(x_input_word)out_sent = AttentionSelf(self.rnn_units*2)(x)model = Model(x_input_word, out_sent)return modeldef sentence_level(self):x_input_sen = Input(shape=(self.len_max, self.rnn_units*2))# x = SpatialDropout1D(self.dropout_spatial)(x_input_sen)output_doc = Bidirectional(GRU(units=self.rnn_units*2,return_sequences=True,activation='relu',kernel_regularizer=regularizers.l2(self.l2),recurrent_regularizer=regularizers.l2(self.l2)))(x_input_sen)output_doc_att = AttentionSelf(self.word_embedding.embed_size)(output_doc)model = Model(x_input_sen, output_doc_att)return model

希望对你有所帮助!

中文短文本分类实例十二-HAN(Hierarchical Attention Networks for Document Classification)相关推荐

  1. Hierarchical Attention Networks for Document Classification(HAN)

    HAN历史意义: 1.基于Attention的文本分类模型得到了很多关注 2.通过层次处理长文档的方式逐渐流行 3.推动了注意力机制在非Seqseq模型上的应用 前人主要忽视的问题: 1.文档中不同句 ...

  2. 中文短文本分类实例十四-LEAM(Joint Embedding of Words and Labels for Text Classification)

    一.概述 LEAM(Joint Embedding of Words and Labels for Text Classification),是Guoyin Wang等提出的一种文本分类新方法,看论文 ...

  3. 《Hierarchical Attention Network for Document Classification》—— 用于文本分类的层次注意力网络

    目录 <Hierarchical Attention Network for Document Classification>-- 用于文本分类的层次注意力网络 1.文本分类 1.1 文本 ...

  4. 新闻上的文本分类:机器学习大乱斗 王岳王院长 王岳王院长 5 个月前 目标 从头开始实践中文短文本分类,记录一下实验流程与遇到的坑 运用多种机器学习(深度学习 + 传统机器学习)方法比较短文本分类处

    新闻上的文本分类:机器学习大乱斗 王岳王院长 5 个月前 目标 从头开始实践中文短文本分类,记录一下实验流程与遇到的坑 运用多种机器学习(深度学习 + 传统机器学习)方法比较短文本分类处理过程与结果差 ...

  5. 第06课:动手实战基于 ML 的中文短文本分类

    文本分类,属于有监督学习中的一部分,在很多场景下都有应用,下面通过小数据的实例,一步步完成中文短文本的分类实现,整个过程尽量做到少理论重实战. 开发环境,我们选择: Windows 系统 Python ...

  6. html标签 对word2vec,基于Word2Vec的中文短文本分类问题研究

    1 引言 移动终端的智能化和互联网技术的高速发展促使人们在移动互联网上交流的越来越频繁, 由此产生了大量的信息数据[, 这些数据多以短文本的形式作为信息传递的载体, 例如微博和即时推送新闻等, 其内容 ...

  7. 【文本分类】Attention-Based Bidirectional Long Short-Term Memory Networks for Relation Classification

    ·摘要:   从模型的角度,本文作者将RNN(Bi-LSTM)和attention mechanism结合使用,提出AttRNN模型,应用到了NLP的关系抽取(Relation Classificat ...

  8. 【NLP】用ML实现中文短文本分类(二分类)

    1.用ML实现外卖评论的分类 步骤 语料加载. 分词. 去停用词. 抽取词向量特征. 分别进行算法建模和模型训练. 评估.计算AUC值. 模型对比 1.进行语料加载. 在此之前,引入python依赖的 ...

  9. 使用Bert/ERNIE进行中文短文本分类(附数据集)

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx 中文文本分类,Bert,ERNIE,基于pytorch,开箱即用. 中文数据集 我从THUCN ...

最新文章

  1. Linux 实时流量监测(iptraf中文图解)
  2. 比特币现金驱动的社交媒体平台备忘录继续蓬勃发展
  3. 连SEO优化师都难以收集的搜索引擎规则,在这里!
  4. Visual Studio 2017开发linux程序使用实例及原理简析
  5. 防火墙软件测试工资,防火墙的性能测试
  6. 分类素材(part4)--大话Python机器学习(上)
  7. struts和struts2-面试题
  8. scala的下载以及环境变量配置(一)
  9. ansys18安装以后打不开_【偷偷告诉你】在微信里直接安装apk.1
  10. LintCode-7-二叉树的序列化和反序列化
  11. Java-虚拟机-堆的内存规划/新生代/老年代/卡表
  12. POJ 1095 Trees Made to Order
  13. 备份整合更需要一体机
  14. java 微信导航栏_微信小程序教程系列之设置标题栏和导航栏
  15. linux 杀掉僵尸进程 (zombie process, defunct)
  16. 1. 制作软盘启动镜像.md
  17. 微信公众号推送文图片什么尺寸最佳?(转)
  18. 微信app支付签名错误
  19. 微信支付指纹要上传到服务器,华为即将支持微信指纹支付,同意上传至腾讯服务器!...
  20. PXIe,PXI,CPCI相互区别和关系,总线之间,几种机箱之间是否兼容?

热门文章

  1. windows与Linux查看端口占用并终止端口占用
  2. 计算机基础:一个字节有多少位?
  3. win7安装小米8驱动
  4. 熵与神经网络的输出值
  5. 无感通行、动态远程管理,Fanslink智慧宿管护航美丽校园
  6. 失去中国市场,三星手机却连续11年居于全球第一
  7. PHP代码猜数字游戏,基于JavaScript实现猜数字游戏代码实例
  8. 数字藏品平台的企业需要准备哪些资质证书?
  9. 万物皆可 Serverless 之使用 SCF+COS 给未来写封信
  10. SCADE介绍—模型检测在航空领域的应用