使用Keras进行深度学习:(三)使用text-CNN处理自然语言(上)

本文涉及的产品
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_基础版,每接口每天50万次
NLP自然语言处理_高级版,每接口累计50万次
简介: 欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习、深度学习的知识!上一篇文章中一直围绕着CNN处理图像数据进行讲解,而CNN除了处理图像数据之外,还适用于文本分类。

欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习、深度学习的知识!

上一篇文章中一直围绕着CNN处理图像数据进行讲解,而CNN除了处理图像数据之外,还适用于文本分类。CNN模型首次使用在文本分类,是Yoon Kim发表的“Convolutional Neural Networks for Sentence Classification”论文中。在讲解text-CNN之前,先介绍自然语言处理和Keras对自然语言的预处理。

自然语言处理就是通过对文本进行分析,从文本中提取关键词来让计算机处理或理解自然语言,完成一些有用的应用,如:情感分析,问答系统等。比如在情感分析中,其本质就是根据已知的文字和情感符号(如评论等)推测这段文字是正面还是负面的。想象一下,如果我们能够更加精确地进行情感分析,可以大大提升人们对于事物的理解效率。比如不少基金公司利用人们对于某家公司的看法态度来预测未来股票的涨跌。

接下来将使用imdb影评数据集简单介绍Keras如何预处理文本数据。该数据集在这里下载。由于下载得的是tar.gz压缩文件,可以使用python的tarfile模块解压。解压后的目录为:

1.读取imdb数据集

我们通过以下函数分别读取train和test中的所有影评

 

得到的影评如下图,每条影评用双引号包住。

 

2.使用Tokenizer将影评文字转换成数字特征

在上文中已经得到了每条影评文字了,但是text-CNN的输入应该是数字矩阵。可以使用Keras的Tokenizer模块实现转换。

简单讲解Tokenizer如何实现转换。当我们创建了一个Tokenizer对象后,使用该对象的fit_on_texts()函数,可以将输入的文本中的每个词编号,编号是根据词频的,词频越大,编号越小。可能这时会有疑问:Tokenizer是如何判断文本的一个词呢?其实它是以空格去识别每个词。因为英文的词与词之间是以空格分隔,所以我们可以直接将文本作为函数的参数,但是当我们处理中文文本时,我们需要使用分词工具将词与词分开,并且词间使用空格分开。具体实现如下:

 

使用word_index属性可以看到每次词对应的编码,可以发现类似”the”、”a”等词的词频很高,但是这些词并不能表达文本的主题,我们称之为停用词。对文本预处理的过程中,我们希望能够尽可能提取到更多关键词去表达这句话或文本的中心思想,因此我们可以将这些停用词去掉后再编码。网上有许多归纳好的停用词,大家可以下载了之后,去除该文本中的停用词。

 

对每个词编码之后,每句影评中的每个词就可以用对应的编码表示,即每条影评已经转变成一个向量了:

3.让每句数字影评长度相同

对每个词编码之后,每句影评中的每个词就可以用对应的编码表示,即每条影评已经转变成一个向量。但是,由于影评的长度不唯一,需要将每条影评的长度设置一个固定值。

 

每个句子的长度都固定为150,如果长度大于150,则将超过的部分截掉;如果小于150,则在最前面用0填充。每个句子如下:

4.使用Embedding层将每个词编码转换为词向量

通过以上操作,已经将每个句子变成一个向量,但上文已经提及text-CNN的输入是一个数字矩阵,即每个影评样本应该是以一个矩阵,每一行代表一个词,因此,需要将词编码转换成词向量。使用Keras的Embedding层可以实现转换。Embedding层基于上文所得的词编码,对每个词进行one-hot编码,每个词都会以一个vocabulary_size(如上文的2000)维的向量;然后通过神经网络的训练迭代更新得到一个合适的权重矩阵(具体实现过程可以参考skip-gram模型),行大小为vocabulary_size,列大小为词向量的维度,将本来以one-hot编码的词向量映射到低维空间,得到低维词向量。比如the的编号为1,则对应的词向量为权重矩阵的第一行向量。如下图,蓝色线对应权重值组成了该词的词向量。需要声明一点的是Embedding层是作为模型的第一层,在训练模型的同时,得到该语料库的词向量。当然,也可以使用已经预训练好的词向量表示现有语料库中的词。

至此已经将文本数据预处理完毕,将每个影评样本转换为一个数字矩阵,矩阵的每一行表示一个词向量。下图梳理了处理文本数据的一般步骤。在此基础上,可以针对相应数据集的特点对数据集进行特定的处理。比如:在该数据集中影评可能含有一些html标签,我们可以使用正则表达式将这些标签去除。

下一篇文章,我们将介绍text-CNN模型,利用该模型对imdb数据集进行情感分析,并在文末给出整个项目的完整代码链接。欢迎持续关注!

本篇文章出自http://www.tensorflownews.com,对深度学习感兴趣,热爱Tensorflow的小伙伴,欢迎关注我们的网站!

目录
相关文章
|
1月前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【10月更文挑战第7天】本文将深入探讨卷积神经网络(CNN)的基本原理,以及它如何在图像识别领域中大放异彩。我们将从CNN的核心组件出发,逐步解析其工作原理,并通过一个实际的代码示例,展示如何利用Python和深度学习框架实现一个简单的图像分类模型。文章旨在为初学者提供一个清晰的入门路径,同时为有经验的开发者提供一些深入理解的视角。
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
探索人工智能的深度学习与自然语言处理前沿
【10月更文挑战第10天】探索人工智能的深度学习与自然语言处理前沿
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
探索深度学习在自然语言处理中的最新进展
【10月更文挑战第10天】探索深度学习在自然语言处理中的最新进展
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
探索深度学习在自然语言处理中的最新进展
【10月更文挑战第10天】探索深度学习在自然语言处理中的最新进展
50 0
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
探索深度学习在自然语言处理中的最新进展
【10月更文挑战第10天】探索深度学习在自然语言处理中的最新进展
38 0
|
6天前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)入门
【10月更文挑战第41天】在人工智能的璀璨星空下,卷积神经网络(CNN)如一颗耀眼的新星,照亮了图像处理和视觉识别的路径。本文将深入浅出地介绍CNN的基本概念、核心结构和工作原理,同时提供代码示例,带领初学者轻松步入这一神秘而又充满无限可能的领域。
|
11天前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【10月更文挑战第36天】探索卷积神经网络(CNN)的神秘面纱,揭示其在图像识别领域的威力。本文将带你了解CNN的核心概念,并通过实际代码示例,展示如何构建和训练一个简单的CNN模型。无论你是深度学习的初学者还是希望深化理解,这篇文章都将为你提供有价值的见解。
|
9天前
|
机器学习/深度学习 自然语言处理 监控
探索深度学习在自然语言处理中的应用与挑战
本文深入分析了深度学习技术在自然语言处理(NLP)领域的应用,并探讨了当前面临的主要挑战。通过案例研究,展示了如何利用神经网络模型解决文本分类、情感分析、机器翻译等任务。同时,文章也指出了数据稀疏性、模型泛化能力以及计算资源消耗等问题,并对未来的发展趋势进行了展望。
|
26天前
|
机器学习/深度学习 人工智能 自动驾驶
深度学习中的卷积神经网络(CNN)及其应用
【10月更文挑战第21天】本文旨在深入探讨深度学习领域的核心组成部分——卷积神经网络(CNN)。通过分析CNN的基本结构、工作原理以及在图像识别、语音处理等领域的广泛应用,我们不仅能够理解其背后的技术原理,还能把握其在现实世界问题解决中的强大能力。文章将用浅显的语言和生动的例子带领读者一步步走进CNN的世界,揭示这一技术如何改变我们的生活和工作方式。
|
28天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习在自然语言处理中的突破与未来趋势####
本文深入探讨了深度学习技术在自然语言处理(NLP)领域的最新进展,重点介绍了其在语言理解、生成及翻译等方面的革新应用。通过对比传统方法的局限性,展示了深度学习如何以其强大的特征提取和学习能力重塑NLP领域。文章还分析了当前面临的挑战,如模型泛化能力、解释性问题及资源消耗等,并展望了未来发展趋势,包括多模态学习、持续学习机制以及更加公平和可解释的AI模型设计。本文旨在为读者提供一个全面而深入的视角,理解深度学习在推动NLP发展的核心作用及其未来的无限可能。 ####

热门文章

最新文章