当前位置:   article > 正文

自然语言处理——对电影评论的文本情感分析_电影评论文本的情感分析

电影评论文本的情感分析

题目(来自阿里云天池):数据主要包括IMDB网站上的电影评论文本数据。 数据分为训练数据和测试数据,分别保存在train.csv和test_noLabel.csv两个文件中。 字段说明如下: (1)ID:编号 (2)TXT:电影评论文本 (3)Label:评论的情感类别,1表示积极,0表示消极。 测试数据不包括评论的情感类别,需要通过由训练数据所建立的模型以及所给的测试数据,得出测试数据相应的情感类别。 注:比赛所用到的数据来自于公开数据集Large Movie Review Dataset。 数据引用: @InProceedings{maas-EtAl:2011:ACL-HLT2011, author = {Maas, Andrew L. and Daly, Raymond E. and Pham, Peter T. and Huang, Dan and Ng, Andrew Y. and Potts, Christopher}, title = {Learning Word Vectors for Sentiment Analysis}, booktitle = {Proceedings of the 49th Annual Meeting of the Association for Computational Linguistics: Human Language Technologies}, month = {June}, year = {2011}, address = {Portland, Oregon, USA}, publisher = {Association for Computational Linguistics}, pages = {142--150}, url = {http://www.aclweb.org/anthology/P11-1015} } 


前言

     通过本学期中文信息处理课程的学习,结课作业选择了文本情感分析这个题目,该题目是阿里云天池上的一个竞赛题目,给出训练集和测试集的数据,要求对训练集建立的模型进行训练,对测试集进行分类,在本次作业中,我运用到了数据预处理和特征提取方法HashingVectorizer对数据进行处理,并通过LogisticRegression方法进行逻辑回归,然后利用fit方法对模型进行训练,再用predict方法对测试集进行预测,最后将结果保存在一个result的csv文件里。

一、研究方法

        深度学习是机器学习的一个子集,是一门用于学习和利用“深度”人工神经网络的机器学习技术,主要算法模型包括卷积神经网络 (Convolutional Neural Networks,CNN) 、循环神经网络 (Recurrent Neural Networks,RNN) 和递归神经网络 (Recursive Neural Networks,RNN)  。深度学习的核心思想就是通过数据驱动的方式,采用一系列的非线性变换,能够从原始数据中进行特征提取。

        基于深度学习的情感分析流程一般都是先进行数据预处理,再构建神经网络学习模型,然后对模型进行训练和测试。

二、用python实现具体步骤(sklearn)

1.引入库

代码如下:

  1. import pandas as pd
  2. from sklearn.feature_extraction.text import HashingVectorizer
  3. from sklearn.linear_model import LogisticRegression
  4. import csv

2.读入数据

代码如下:

  1. # 读取训练集和测试集
  2. train_data = pd.read_csv('train.csv') #训练集数据
  3. test_data = pd.read_csv('test_noLabel.csv') #测试集数据

3.数据预处理和特征提取

采用HashingVectorizer方法对数据进行预处理。

代码如下:

  1. # 数据预处理和特征提取
  2. vectorizer = HashingVectorizer(n_features=25000, alternate_sign=False)
  3. train_txt = vectorizer.transform(train_data['txt'])
  4. test_txt = vectorizer.transform(test_data['TXT'])

HashingVectorizer是一个文本特征提取器,将文本转换为稀疏矩阵表示,‘n_features = 25000’表示设置特征维度为25000,‘alternate_sign = False’表示不使用交替符号哈希。

4.训练模型

采用LogisticRegression方法建立模型

代码如下:

  1. # 训练模型
  2. model = LogisticRegression()
  3. model.fit(train_txt, train_data['Label'])

LogisticRegression创建了一个逻辑回归模型的实例,并存储在‘model’变量中。

model.fit()方法是用训练集的特征矩阵和标签集进行训练。

5.进行情感分析

代码如下:

  1. # 进行情感分析
  2. pred_labels = model.predict(test_txt)
  3. result_fenlei = ["1" if label == 1 else "0" for label in pred_labels]

predict是一个预测方法,对测试集的数据进行测试,并把结果存储到pred_labels中。

分类用到了列表推导式,其中‘1’表示积极,‘0’表示消极

6.结果保存到CSV文件里

代码如下:

  1. # 结果存储到CSV文件
  2. results = pd.DataFrame({'ID': test_data['ID'], 'sentiment': result_fenlei})
  3. results.to_csv('results.csv', index=False)

创建一个包含测试集ID和情感结果的DataFrame。

将这个DataFrame存储到一个csv文件里,index = False表示不包含索引。


总体代码

  1. import pandas as pd
  2. from sklearn.feature_extraction.text import HashingVectorizer
  3. from sklearn.linear_model import LogisticRegression
  4. import csv
  5. # 读取训练集和测试集
  6. train_data = pd.read_csv('train.csv')
  7. test_data = pd.read_csv('test_noLabel.csv')
  8. # 数据预处理和特征提取
  9. vectorizer = HashingVectorizer(n_features=25000, alternate_sign=False)
  10. train_txt = vectorizer.transform(train_data['txt'])
  11. test_txt = vectorizer.transform(test_data['TXT'])
  12. # 训练模型
  13. model = LogisticRegression()
  14. model.fit(train_txt, train_data['Label'])
  15. # 进行情感分析
  16. pred_labels = model.predict(test_txt)
  17. result_fenlei = ["1" if label == 1 else "0" for label in pred_labels]
  18. # 结果存储到CSV文件
  19. results = pd.DataFrame({'ID': test_data['ID'], 'sentiment': result_fenlei})
  20. results.to_csv('results.csv', index=False)

总结

本次作业采用的是基于深度学习方法对文本进行情感分析。

优点是:1、高效的特征提取:使用HashingVectorizer进行特征提取,这种方法适用于处理大型文本数据集,并且具有较低的内存消耗。2、快速的训练和预测:采用逻辑回归作为分类算法,逻辑回归在大规模数据集上训练和预测的速度较快,适用于处理大量文本数据。3、存储结果方便:将情感分析的结果存储到CSV文件中,便于后续的分析、可视化或其他处理。

缺点是:1、特征表示的稀疏性:由于使用了哈希函数进行特征提取,特征表示是稀疏的,可能会丢失一些词汇信息。这可能会对模型的性能产生一定的影响。2、特征不可解释性:使用哈希技巧的特征提取方法无法提供直观的特征解释,即无法知道具体哪些词汇对情感分析起到了重要作用。3、对文本预处理的依赖性:代码中没有包括对文本数据的预处理步骤,例如去除停用词、词干化或词形还原等。这些预处理步骤可以对模型的性能和结果产生影响。

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

闽ICP备14008679号