数据代码分享|PYTHON用NLP自然语言处理LSTM神经网络TWITTER推特灾难文本数据、词云可视化

简介: 数据代码分享|PYTHON用NLP自然语言处理LSTM神经网络TWITTER推特灾难文本数据、词云可视化

全文下载链接:http://tecdat.cn/?p=28877

作者:Yunfan Zhang


Twitter是一家美国社交网络及微博客服务的网站,致力于服务公众对话。迄今为止,Twitter的日活跃用户达1.86亿。


与此同时,Twitter也已成为突发紧急情况时人们的重要沟通渠道。由于智能手机无处不在,人们可以随时随地发布他们正在实时观察的紧急情况。因此,越来越多的救灾组织和新闻机构对通过程序方式监视Twitter产生了兴趣查看文末了解数据、代码免费获取方式

但是,我们并不清楚一个用户在推特上发布的推文是否是真实的正在发生的灾难。举个例子,用户发送了“从正面看昨晚的天空,好像在燃烧一样。”作者明确使用了“ABLAZE”一词,但仅仅是为了形容火烧云,并非真正的火焰燃烧。这对于人类来说是显而易见的,但是对于机器来说便很难分辨该用户是否正在预告真实发生的火灾。


解决方案


任务/目标

建立一个预测推文发布灾难真实性的机器学习模型,该模型可以预测哪些推文发布的是真实发生的灾难,哪些是虚假的灾难,从而为相关组织网络监测灾难发生及救援提供帮助。


数据源准备


数据集中包含的列:

列名 解释

id 每条推文的唯一标识符

text 推特的内容

location 推文发送的位置(可以为空白)

keyword 推文中的特定关键字(可以为空白)

target 仅在train.csv中存在,表示推文中描述灾难的真假,真实为1,虚假为0

其中,测试集包含7613个样本,训练集包含3263个样本。


加载数据并查看


运用pandas分别读取训练集,测试集等。

查看训练集前五行

结果如下:

查看测试集前五行

结果如下:


数据可视化


首先,运用plotly绘制真实虚假灾难数量对比的饼图,该饼图描述了正例反例在训练样本中的占比,检验数据平衡性。

counts\_train = train.target.value\_counts(sort=False)
labels = counts_train.index   
values\_train = counts\_train.values 
#输入饼图数据
data = go.Pie(labels=labels, values=values_train ,pull=\[0.03, 0\])

运行结果如下:

由饼图可知,在训练集中,灾难真实发生的样本(1)共有3271个,占总体的43%,非真实发生的样本(0)有4342个,占总体的57%。总体来说比例较为均衡,可以进行后续建模。

然后,为了进一步了解灾难推文的大致内容,本文利用wordcloud绘制推文的内容的词云。

首先自行将一些网络常用词加入停用词表。

然后定义绘制词云图的函数:

#设置词云格式并生成词云
wordcloud = WordCloud(width = 4000, height = 3000,    #宽高
                      background_color ='white',   #背景色
                      stopwords = stopwords,       #停用词

结果如下:

数据清洗


众所周知,在进行建模之前,我们必须首先进行数据的预处理,以便于后续进一步处理。因此,本文将进行一些基本的网络文本清理工作,例如去除网址,去除网络标签,删除标点符号,删除常用表情符号,拼写矫正等。

1. 删除网址

2. 删除HTML标签

3. 删除表情符号

首先,搜索推特中常用的表情符号,查询他们的代码点(https://emojipedia.org/relieved-face/),将需要删除的表情符号记录。

5. 拼写矫正


文本的向量化处理


1. 文本序列化

通过tensorflow自带的Tokenizer分词器设置训练集text中所有词的索引值,然后将词映射为其索引值。

然后,查看text中独立词汇的数量

输出结果:Number of unique words: 14666

2. 嵌入GloVe字典

在这里我们将使用GloVe预训练的语料库模型来表示我们的单词。GloVe模型用于进行词的向量化表示,使得向量之间尽可能多地蕴含语义和语法的信息。我们需要输入语料库,然后通过该模型输出词向量。该方法的原理是首先基于语料库构建词的共现矩阵,然后基于共现矩阵和GloVe模型学习词向量。GloVe语料库共有3种类型:50D,100D和200 D。在这里我们将使用100D。

3. 匹配GloVe向量

输出结果:

100%|██████████| 14666/14666 [00:00<00:00, 599653.57it/s]

(14667, 100)


建立模型


从2014年起,NLP 的主流方法转移到非线性的神经网络方法,从而输入也从稀疏高维特征向量变为低位稠密特征向量。神经网络不仅像传统机器学习方法一样学习预测,同时也学习如何正确表达数据,即在处理输入输出对时,网络内部产生一系列转化以处理输入数据来预测输出数据。

因此,本次建模以神经网络为基础,设置了Embedding层,Dropout层,LSTM层,以及全连接层。

1. 定义模型函数

导入神经网络相关库后定义模型函数。

#嵌入层
model.add(Embedding(input\_dim=num\_words,
                    output_dim=100,
                    embeddings_initializer=initializers.Constant

添加Embedding层以初始化GloVe模型训练出的权重矩阵。input_dim即词汇量,输入数组中的词典大小是14666,即有14666个不同的词,所以我的input_dim便要比14666要大1,output_dim是密集嵌入的尺寸,就如同CNN最后的全连接层一样,上面设置的100,便将每一个词变为用1x100来表示的向量,embeddings_initializer为嵌入矩阵的初始化的方法,为预定义初始化方法名的字符串,或用于初始化权重的初始化器。输入序列的长度设置为序列长度20,将每个text表示为一个20×100的矩阵

由于文本数据的连续性,我们添加LSTM层。LSTM是作为短期记忆的解决方案而创建的长短期记忆模型,和RNN类似,只是当词向量作为输入进入神经元后,神经元会按照某种方式对该词向量的信息进行选择,存储成新的信息,输入到相邻的隐藏层神经元中去。

输出结果:

2. 参数选择与调优

本文运用交叉验证的方法得到验证集精度,并以此为标准,使用网格搜索来确定最优超参数。

Scikit-Learn里有一个API 为model.selection.GridSearchCV,可以将keras搭建的模型传入,作为sklearn工作流程一部分。因此,我们运用此函数来包装keras模型以便在scikit-learn中使用keras。

3. 模型训练

输出结果:

输出结果:

由训练过程可知,验证集准确率最高的参数组合为第五次训练时的参数,batch_size=10 ,epochs=10。

4. 模型评估

查看最终参数选择的结果和交叉验证的结果:

输出结果:

交叉验证平均准确率:0.7921975544580065

最好的参数模型:{‘batch\_size’: 10, ‘nb\_epoch’: 10}

5. 与传统机器学习模型对比

将train中训练集数据划分为训练集和验证集,然后对比其在验证集上的准确率。

分别使用SVM,KNN,多层感知器,朴素贝叶斯,随机森林,GBDT等方法构建模型,与神经网络进行对比。

输出结果:

模型1验证集准确率: 0.6250820748522653

模型2验证集准确率: 0.5843729481286933

模型3验证集准确率: 0.5384110308601444

模型4验证集准确率: 0.4799737360472751

模型5验证集准确率: 0.6323046618516087

模型6验证集准确率: 0.6401838476690742

以上模型的验证集准确率与神经网络的验证集准确率相比差别较大,可见本文基于神经网络的文本预测模型是相对准确且可靠的。


结果预测


我们继续通过上述步骤构建的神经网络模型预测test测试集中的target列。

#预测
predictions = grid\_result.predict(testing\_padded)
submission\['target'\] = (predictions > 0.5).astype(int)

输出结果:


项目结果


真实虚假样本比例接近1:1.

灾难相关推文中提到最多的词汇是fire。

最好的参数组合是batch_size=10 ,epochs=10。

将测试集输入模型得到最终预测结果。


关于作者

在此对Yunfan Zhang 对本文所作的贡献表示诚挚感谢,她专长机器学习,概率论与数理统计。

相关文章
|
7月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于PSO粒子群优化TCN-LSTM时间卷积神经网络时间序列预测算法matlab仿真
本内容展示了一种基于粒子群优化(PSO)与时间卷积神经网络(TCN)的时间序列预测方法。通过 MATLAB2022a 实现,完整程序运行无水印,核心代码附详细中文注释及操作视频。算法利用 PSO 优化 TCN 的超参数(如卷积核大小、层数等),提升非线性时间序列预测性能。TCN 结构包含因果卷积层与残差连接,结合 LSTM 构建混合模型,经多次迭代选择最优超参数,最终实现更准确可靠的预测效果,适用于金融、气象等领域。
|
4月前
|
机器学习/深度学习 传感器 数据采集
基于贝叶斯优化CNN-LSTM混合神经网络预测(Matlab代码实现)
基于贝叶斯优化CNN-LSTM混合神经网络预测(Matlab代码实现)
825 0
|
机器学习/深度学习 数据可视化 Windows
深度学习笔记(七):如何用Mxnet来将神经网络可视化
这篇文章介绍了如何使用Mxnet框架来实现神经网络的可视化,包括环境依赖的安装、具体的代码实现以及运行结果的展示。
251 0
|
10月前
|
机器学习/深度学习 数据可视化 PyTorch
深入解析图神经网络注意力机制:数学原理与可视化实现
本文深入解析了图神经网络(GNNs)中自注意力机制的内部运作原理,通过可视化和数学推导揭示其工作机制。文章采用“位置-转移图”概念框架,并使用NumPy实现代码示例,逐步拆解自注意力层的计算过程。文中详细展示了从节点特征矩阵、邻接矩阵到生成注意力权重的具体步骤,并通过四个类(GAL1至GAL4)模拟了整个计算流程。最终,结合实际PyTorch Geometric库中的代码,对比分析了核心逻辑,为理解GNN自注意力机制提供了清晰的学习路径。
722 7
深入解析图神经网络注意力机制:数学原理与可视化实现
|
机器学习/深度学习 存储 自然语言处理
【NLP自然语言处理】探索注意力机制:解锁深度学习的语言理解新篇章(上)
【NLP自然语言处理】探索注意力机制:解锁深度学习的语言理解新篇章(上)
|
11月前
|
文字识别 自然语言处理 API
如何结合NLP(自然语言处理)技术提升OCR系统的语义理解和上下文感知能力?
通过结合NLP技术,提升OCR系统的语义理解和上下文感知能力。方法包括集成NLP模块、文本预处理、语义特征提取、上下文推理及引入领域知识库。代码示例展示了如何使用Tesseract进行OCR识别,并通过BERT模型进行语义理解和纠错,最终提高文本识别的准确性。相关API如医疗电子发票验真、车险保单识别等可进一步增强应用效果。
|
10月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于GA遗传优化TCN-LSTM时间卷积神经网络时间序列预测算法matlab仿真
本项目基于MATLAB 2022a实现了一种结合遗传算法(GA)优化的时间卷积神经网络(TCN)时间序列预测算法。通过GA全局搜索能力优化TCN超参数(如卷积核大小、层数等),显著提升模型性能,优于传统GA遗传优化TCN方法。项目提供完整代码(含详细中文注释)及操作视频,运行后无水印效果预览。 核心内容包括:1) 时间序列预测理论概述;2) TCN结构(因果卷积层与残差连接);3) GA优化流程(染色体编码、适应度评估等)。最终模型在金融、气象等领域具备广泛应用价值,可实现更精准可靠的预测结果。
|
机器学习/深度学习 算法 计算机视觉
基于CNN卷积神经网络的金融数据预测matlab仿真,对比BP,RBF,LSTM
本项目基于MATLAB2022A,利用CNN卷积神经网络对金融数据进行预测,并与BP、RBF和LSTM网络对比。核心程序通过处理历史价格数据,训练并测试各模型,展示预测结果及误差分析。CNN通过卷积层捕捉局部特征,BP网络学习非线性映射,RBF网络进行局部逼近,LSTM解决长序列预测中的梯度问题。实验结果表明各模型在金融数据预测中的表现差异。
482 10
|
机器学习/深度学习 人工智能 自然语言处理
自然语言处理(NLP)是AI的重要分支,旨在让计算机理解人类语言
自然语言处理(NLP)是AI的重要分支,旨在让计算机理解人类语言。本文探讨了深度学习在NLP中的应用,包括其基本任务、优势、常见模型及具体案例,如文本分类、情感分析等,并讨论了Python的相关工具和库,以及面临的挑战和未来趋势。
909 1
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
1272 3

热门文章

最新文章

推荐镜像

更多