中文短文本分类实例九-CRNN(A C-LSTM Neural Network for Text Classification)_Macropodus的博客-程序员秘密

技术标签: CRNN  text-classification  中文短文本分类  text-classify  自然语言处理  短文本分类  深度学习与tensorflow  分类  

一.概述

        CRNN(A C-LSTM Neural Network for Text Classification),是Chunting Zhou等提出的一种联合CNN和RNN的优点的混合神经网络,可称之为"卷积-递归"神经网络。

        不同于RCNN先对文本句子上下文本信息、以及word-embedding本身特征的提取,CRNN中的CNN可以看成另外一种形式的句子信息的Embedding(char、word and n-gram),它具有实际意义上的解释性;也可以看成是对局部短语特征的提取,用于文本表达和文本分类。而LSTM便很善于捕捉文本的全局特征,在它接入CNN后,可以有效缓解CNN对于长文本句子信息捕获不足的缺点。

        其实现在看来,CRN算是比较古老的版本的了,也没什么特别多可说的,不就是把CNN和RNN堆砌起来么,没什么那么多值得大惊小怪的。

        github项目地址:

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

 

二. CRNN模型原理等

2.1  CRNN模型图

                                                       

2.2  tricks等

       初始化: 词向量dim=100, OOV词=随机初始化为均匀分布(uniform distribution [-0.25, 0.25])

       规范化(Regularization): dropout 和 L2

               似乎就没有了

 

三. CRNN代码实现

3.1   很简单的一个模型,就是把CNN和LSTM连在一起,似乎就好了

         github项目地址:

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

3.2 核心代码

    def create_model(self, hyper_parameters):
        """
            构建神经网络
        :param hyper_parameters:json,  hyper parameters of network
        :return: tensor, moedl
        """
        super().create_model(hyper_parameters)
        x = self.word_embedding.output
        embedding_output_spatial = SpatialDropout1D(self.dropout_spatial)(x)

        if self.rnn_units=="LSTM":
                layer_cell = LSTM
        elif self.rnn_units=="GRU":
                layer_cell = GRU
        elif self.rnn_units=="CuDNNLSTM":
                layer_cell = CuDNNLSTM
        elif self.rnn_units=="CuDNNGRU":
                layer_cell = CuDNNGRU
        else:
            layer_cell = GRU
        # CNN
        convs = []
        for kernel_size in self.filters:
            conv = Conv1D(self.filters_num,
                            kernel_size=kernel_size,
                            strides=1,
                            padding='SAME',
                            kernel_regularizer=regularizers.l2(self.l2),
                            bias_regularizer=regularizers.l2(self.l2),
                            )(embedding_output_spatial)
            convs.append(conv)
        x = Concatenate(axis=1)(convs)
        # Bi-LSTM, 论文中使用的是LSTM
        x = Bidirectional(layer_cell(units=self.rnn_units,
                                     return_sequences=True,
                                     activation='relu',
                                     kernel_regularizer=regularizers.l2(self.l2),
                                     recurrent_regularizer=regularizers.l2(self.l2)
                                     ))(x)
        x = Dropout(self.dropout)(x)
        x = Flatten()(x)
        # 最后就是softmax
        dense_layer = Dense(self.label, activation=self.activate_classify)(x)
        output = [dense_layer]
        self.model = Model(self.word_embedding.input, output)
        self.model.summary(120)

 

希望对你有所帮助!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/rensihui/article/details/93327702

智能推荐

Servlet-学习笔记_LvManBa的博客-程序员秘密

Servlet-授课一、 Servlet1.1 Servlet概述Servlet是SUN公司提供的一套规范,名称就叫Servlet规范,它也是JavaEE规范之一。我们可以像学习Java基础一样,通过API来学习Servlet。这里需要注意的是,在我们之前JDK的API中是没有Servlet规范的相关内容,需要使用JavaEE的API。目前在Oracle官网中的最新版本是JavaEE8,该网址中介绍了JavaEE8的一些新特性。当然,我们可以通过访问官方API,学习和查阅里面的内容。打开官方API网

IIS安装SSL证书,谷歌浏览器无法访问,err_connection_closed,err_connection_reset_err_connection_closed谷歌_追风筝的摆渡人的博客-程序员秘密

1.问题描述1.阿里云服务器,根据官网教程,IIS上安装SSL证书,输入https://XXX域名,结果谷歌浏览器出现如下错误,然而IE浏览器却能正常访问。2.我用Nginx发布,谷歌浏览器却可以访问,问题应该出在IIS。2.解决添加链接描述借助该文档成功解决!...

OpenCV第十四讲: Fast特征点与ORB特征点原理详解_opencv特征点检测原理_爱发呆de白菜头的博客-程序员秘密

一般特征说的意思是关键点+描述子;一. Fast特征点检测原理: FAST是一种角点, 主要检测局部像素灰度变换明显的地方。核心思想: 如果一个像素与邻域的像素差别较大,那么它更可能是角点。优势: 由于只需要比较像素的亮度大小,所以速度十分快捷。检测过程1.在图像中选取一点像素p,假设它的亮度为Ip;2.设置一个亮度阈值T;3.以像素p为中心,选取半径为3的圆上的上16个像...

汇编语言虚拟机dosbox0.74使用教程_Anastasiayang的博客-程序员秘密

1、打开dosbox输入(这里我是新建了一个虚拟的e盘,原电脑没有,然后把虚拟的e盘指向我MASM所在的文件夹,我把MASM存在了D盘,所以就写D:\MASM)2、输入(根据我第一步新建的是虚拟e盘,如果你新建虚拟g盘就写g:)3、在masm所在文件夹下新建一个格式为asm的文档,用记事本编译保存就行。masm文件下载链接:https://pan.baidu.com/s/1DO8C...

matplotlib之pyplot模块——在特定网格位置中添加一个子图(subplot2grid)_gridspec._check_gridspec_exists(_mighty13的博客-程序员秘密

当前有效matplotlib版本为:3.4.1。函数概述subplot2grid函数的功能是在特定网格位置中添加一个子图。函数的定义签名为:matplotlib.pyplot.subplot2grid(shape, loc, rowspan=1, colspan=1, fig=None, **kwargs)。函数的调用签名为:ax = subplot2grid((nrows, ncols), (row, col), rowspan, colspan)函数的参数为:shape:定义子图网格的行

Leecode 101刷题笔记之第四章:和你一起你轻松刷题(Python)_ZZY_dl的博客-程序员秘密

居合斩!二分查找69. Sqrt(x) (Easy)34. Find First and Last Position of Element in Sorted Array (Medium)81. Search in Rotated Sorted Array II (Medium)练习-基础难度154. Find Minimum in Rotated Sorted Array II (Medium)540. Single Element in a Sorted Array (Medium)69. Sqrt(

随便推点

java.io.file修改名称_关于apache的commons-io源码包中FilenameUtils文件名称工具类对文件名称标准化、系统路径转换等操作源码说明..._偃鼠的博客-程序员秘密

一、前言关于apache的commons-io源码包org.apache.commons.io.FilenameUtils文件名称操作工具类,进行操作系统判断isSystemWindows、文件名称标准化normalize处理、不同操作系统unix路径转换separatorsToUnix、通过文件名判断相当equals/equalsOnSystem/equalsNormalized/equalsN...

ios的内购功能_ios 内购测试证书_nslog1234554321的博客-程序员秘密

iOS开发内购详细版本说明 优雅地小男子 关注2017.02.23 11:08* 字数 877 阅读 8023评论 46喜欢 26一、最近公司很多的项目用到了内购,抽空整理下内购的详细内容吧。1、先从内购的iTunesConnect里配置说起吧,我们先进入苹果的iTunesConnect链接https://itunesconnect.appl

求各入度(邻接表)_邻接表计算入度_haibianyoushark的博客-程序员秘密

Problem Description设有一有向图,其顶点值为字符型并假设各值互不相等,采用邻接表表示法存储表示。设计一个算法,求该图中所有顶点的入度值(要求按顶点的存储顺序输出)。 Input有多组测试数据,每组数据的第一行表示图的顶点数n和图的边数e(0<n<30);第二行表示各顶点的值,按输入顺序进行存储;接下来有e行,每一行表示每条边所依附的顶点的存储下标i和j,两...

2021雷军年度演讲 - 我的梦想,我的选择_bisal(Chen Liu)的博客-程序员秘密

早上了,想必很多读者,都是在路上,或者已经做到办公室了,都吃了么?今天送各位一碗鸡汤,让我们充满斗志地迎接今天的挑战。这几天朋友圈到处是雷军2021年度演讲的宣传,国民梦想家雷军这次的演讲...

thingsboard成功下载完美启动_thingsboard下载_w.pan的博客-程序员秘密

tb的启动 -- 如这篇文章看完之后,还是不能解答你心中的疑惑;关注我 后续文章肯定会为你解答

推荐文章

热门文章

相关标签