赞
踩
一、实验目的:
2019新型冠状病毒(COVID-19)感染的肺炎疫情发生对人们生活生产的方方面面产生了重要影响,并引发国内舆论的广泛关注,众多网民参与疫情相关话题的讨论。为了掌握真实社会舆论情况,科学高效地做好防控宣传和舆情引导工作,针对疫情相关话题开展网民情绪识别的任务。
二、实验内容:
给定微博内容,设计算法对微博内容进行情绪识别,判断微博内容是积极的、消极的还是中性的。
训练数据集格式如下图所示,每一行(以\n结束)一个样本,以制表符(\t)分割数据和标签。1代表积极、-1代表消极、0代表中性。
测试集的输出要求如下图,每一行的预测对应测试集里面的一个数据。
程序流程图:
line = line.strip() 把文本分成content和label
通过奇偶交替的方式,将label和content分别存入两个列表中
利用正则法则对文本进行清洗,去除多余的非法符号,得到想要的文本
将文本中多余的语气助词等去除,利用的是哈工大的停用词典
开始训练
1、先将包都导入
2、加载数据集
其中PAD为未出现标签
一共形成79898个字
2、构建网络
配置模型相关参数,在COINFIG类中完成:
构建Text-CNN模型:
加载训练数据:
训练:
模型训练
3、未标签集清洗
1、利用jieba分词对未标签的文本进行按行分词
测试模型
输出文本对应的标签
输出结果
此次大作业,进一步学习了数据预处理以及卷积神经网络在文本中的应用。数据预处理的完成比较顺利,我认为在数据预处理前,一定要知道自己需要处理的方向与目的,然后在按照这个目的,用代码去一步一步的优化,从而以最简单易懂的方式完成预处理步骤。
CNN算法部分是最难的部分,首先由于我们要进行分三类,所以一定要有三个输出神经元。利用已经形成的清洗数据完成字典的构建,从而导入到CNN的第一层参数中,通过当前网络训练的词嵌入可以更好地捕获与当前任务相关的单词分布特征。第二层是卷积层,我们要明白,在句子中,一个单词是一个特征,也就是说,句子只具有长度一个维度。因此,应用于NLP中的卷积核,宽度与单词的嵌入维度相同,且卷积核只会在句子长度这一个方向上进行滑动。而第三层池化层就是将一个卷积操作+池化操作来获得一个 [公式] ,将具有相同卷积核(但是是不同的卷积核,即参数不同)大小( [公式] )的卷积操作结果再进行池化的 [公式] 拼在一起,即构成这个卷积核大小下的特征向量。TextCNN的第四层是输出层。输出层是全连接层。输出层的输入是final feature vector,输出是类别的概率分布。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。