当前位置:   article > 正文

自然语言处理 情绪识别_基于自然语言处理的情感分析实验报告

基于自然语言处理的情感分析实验报告

一、实验目的: 

2019新型冠状病毒(COVID-19)感染的肺炎疫情发生对人们生活生产的方方面面产生了重要影响,并引发国内舆论的广泛关注,众多网民参与疫情相关话题的讨论。为了掌握真实社会舆论情况,科学高效地做好防控宣传和舆情引导工作,针对疫情相关话题开展网民情绪识别的任务。

二、实验内容:

给定微博内容,设计算法对微博内容进行情绪识别,判断微博内容是积极的、消极的还是中性的。

训练数据集格式如下图所示,每一行(以\n结束)一个样本,以制表符(\t)分割数据和标签。1代表积极、-1代表消极、0代表中性。

测试集的输出要求如下图,每一行的预测对应测试集里面的一个数据。

三、实验步骤:

本次实验是基于CNN的中文多分类的情感分析

数据正在上传…重新上传取消

实验的数据是来自:data_test_unlabel.txt,,data_train.txt

 

程序流程图:

数据预处理

  1. 数据拆分

line = line.strip() 把文本分成content和label

  1. 文本重组

通过奇偶交替的方式,将label和content分别存入两个列表中

  1. 文本清洗

   利用正则法则对文本进行清洗,去除多余的非法符号,得到想要的文本

  1. 加载停用词典

   将文本中多余的语气助词等去除,利用的是哈工大的停用词典

  1. 输出形成已分词的训练集(标签在前,文本在后)

开始训练

1、先将包都导入

2、加载数据集

  1. 构建词汇表并存储,形如{word: id}:

其中PAD为未出现标签

  1. 基于预训练的word2vec构建训练语料中所含词语的word2vec:

一共形成79898个字

  1. 分类类别以及id对应词典{pos:1,neu:0, neg:-1}:

  1. 导入训练集:train/dev/test:

2、构建网络

配置模型相关参数,在COINFIG类中完成:

构建Text-CNN模型:

加载训练数据:

训练:

模型训练

3、未标签集清洗

1、利用jieba分词对未标签的文本进行按行分词

  1. 加载结果集

测试模型

输出文本对应的标签

输出结果

  • 实验总结

此次大作业,进一步学习了数据预处理以及卷积神经网络在文本中的应用。数据预处理的完成比较顺利,我认为在数据预处理前,一定要知道自己需要处理的方向与目的,然后在按照这个目的,用代码去一步一步的优化,从而以最简单易懂的方式完成预处理步骤。

CNN算法部分是最难的部分,首先由于我们要进行分三类,所以一定要有三个输出神经元。利用已经形成的清洗数据完成字典的构建,从而导入到CNN的第一层参数中,通过当前网络训练的词嵌入可以更好地捕获与当前任务相关的单词分布特征。第二层是卷积层,我们要明白,在句子中,一个单词是一个特征,也就是说,句子只具有长度一个维度。因此,应用于NLP中的卷积核,宽度与单词的嵌入维度相同,且卷积核只会在句子长度这一个方向上进行滑动。而第三层池化层就是将一个卷积操作+池化操作来获得一个 [公式] ,将具有相同卷积核(但是是不同的卷积核,即参数不同)大小( [公式] )的卷积操作结果再进行池化的 [公式] 拼在一起,即构成这个卷积核大小下的特征向量。TextCNN的第四层是输出层。输出层是全连接层。输出层的输入是final feature vector,输出是类别的概率分布。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/375285
推荐阅读
相关标签
  

闽ICP备14008679号