NLP-使用CNN进行文本分类

  • CNN最初用于处理图像问题,但是在自然语言处理中,使用CNN进行文本分类也可以取得不错的效果。
  • 在文本中,每个词都可以用一个行向量表示,一句话就可以用一个矩阵来表示,那么处理文本就与处理图像是类似的了。

目录


一、卷积神经网络CNN

这里写图片描述
图片来源:Convolutional Neural Networks for Sentence Classification

1.模型说明

  • 在图像处理中使用不同的滤镜可以使图像凸显出不同的特征,我们把新的图像称为卷积后的特征图(第二层)。
  • 将特征图通过pooling层(第三层),这与人眼在看东西的时候会首先看到耀眼的内容一样,通常选取最大值或使用平均值来得到更小的特征图,这有助于计算。
  • 加上任意分类器,如SVM,LSTM等。

2.卷积核

  • 上述所说的滤镜(filter)就是我们的CNN模型中的卷积核,通过使用卷积核可以将我们的原始矩阵(CNN的第一层)变成CNN的第二层。
  • 卷积核是通过学习得到的,不能人工设置,这是很重要的一点,而刚开始的时候卷积核的设置是随机的。

3.CNN4Text

上述模型中是将每个单词作为一个特征向量,使用了二维和三维的卷积核进行Filter,我们也可以使用一整个句子作为特征向量,用一维的Filter进行扫描(1xN),如下图所示:
这里写图片描述
图片来源:七月在线视频课件(包括下图,原始来源我母鸡的了)

4.两种参数调整问题

  • 边界处理:Narrow 和Wide

这里写图片描述

  • Stride size:步伐大小
    这里写图片描述

二、使用实例:word2vec+CNN进行文本分类

1.题目

用每日新闻预测金融市场变化

题目来源:Kaggle竞赛
代码作者:加号


2.数据说明

  • Combined_News_DJIA.csv: 作者将数据combine成27列,第一列是日期,第二列是标签,其他25列是每日的前25条新闻,通过热门程度进行排序得来。
  • 这是一个二分类问题,‘1’表示这一天的股票值上升或保持不变;‘0’表示下降。
  • 训练集和测试集的比例是8:2

3.数据预处理

①导入所需要的库

import pandas as pd
import numpy as np
from sklearn.metrics import roc_auc_score
from datetime import date

②读入数据

data = pd.read_csv('./Combined_News_DJIA.csv')

可以通过data.head()查看数据的长相
③分割数据集

train = data[data['Date'] < '2015-01-01']
test = data[data['Date'] > '2014-12-31']

④处理数据集

  • 17
    点赞
  • 125
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值