logo资料库

TextCNN在文本分类的应用.pptx

第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
资料共9页,剩余部分请下载后查看
TextCNN在文本分类的应用 郭同
任务定义-文本分类 • 输入:一句话[W_1, W_2, W_3, …, W_n] • 输出:这句话的类别 比如, 我想听歌  音乐类, 今天天气? 天气类, 打开电灯  控制类,
文本分类整体模型: 1,将句子的每个词初始化成一个向量,一般100-300维,即: W_1 = [0.1, 0.2, 0.9, 0.4, 0.5, …] W_2 = [0.3, 0.4, 0.2, 0.1, 0.8, …] W_3 = [0.7, 0.3, 0.5, 0.6, 0.2, …] … W_n = [0.8, 0.9, 0.9, 0.5, 0.5, …] 2,过TextCNN进行特征提取。 3,过MLP然后输出label。
一层CNN,多个filter:宽度有2,3,4,5,6…每个高度为embedding_dim W_1, W_2, W_3, … W_n W_1, W_2, W_3, … W_n W_1, W_2, W_3, … W_n W_1, W_2, W_3, … W_n W_1, W_2, W_3, … W_n W_1, W_2, W_3, … W_n
• CNN_input: [batch, in_height, in_width, in_channel] • Text_input: [32, 20, 100, 1] • CNN_filter: [filter_height, filter_width, in_channel, out_channel] • Text_filter_1: [3, 100, 1, 200] • Text_filter_2: [4, 100, 1, 200] • Text_filter_3: [5, 100, 1, 200] • CNN_output: [batch, out_height, out_width, out_channel] • Text_output: [32, 20, 1, 200] * 3 • Pooling output:[32, 1, 1, 200] * 3
整体的输入输出 • 输入:[32, 20, 100, 1] [batch_size, sequence_len, embedding_dim] • 输出:[32, 1, 1, 200*3] [batch_size, feature_dim * filter_num] 之后可以过MLP做分类
其他经典文本分类模型 1,RNN: 输入[batch_size, sequence_len, embedding_dim] 然后取RNN的最后一个state: [batch_size, hidden_dim] 最后过MLP输出。 2,TextCNN优势: 就是卷积的优势,对整个句子进行特征提取。 比RNN在大多数据集准确率要高,可以说在文本分类任务基本淘汰了 RNN。
CNN在NLP其他应用 1,Pooling之前:[32, 20, 1, 200 * 3] 可以看作句子过CNN之后的表示。 2,将char-level过CNN(with pooling)卷成word-level: 输入[batch_size, sequence_len, word_len, char_emb_dim] 输出[batch_size, sequence_len, word_hidden_dim] 认为这过CNN之后的word包含它所有char的信息。 3,在transformer结构中,在self-attention之前和embedding层之后加入,作为MLP补充,提升了速度和 效果。 4,纯CNN做机器翻译: Convolutional Sequence to Sequence Learning A Convolutional Encoder Model for Neural Machine Translation
分享到:
收藏