赞
踩
题目(来自阿里云天池):数据主要包括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) 。深度学习的核心思想就是通过数据驱动的方式,采用一系列的非线性变换,能够从原始数据中进行特征提取。
基于深度学习的情感分析流程一般都是先进行数据预处理,再构建神经网络学习模型,然后对模型进行训练和测试。
代码如下:
- import pandas as pd
- from sklearn.feature_extraction.text import HashingVectorizer
- from sklearn.linear_model import LogisticRegression
- import csv
代码如下:
- # 读取训练集和测试集
- train_data = pd.read_csv('train.csv') #训练集数据
- test_data = pd.read_csv('test_noLabel.csv') #测试集数据
采用HashingVectorizer方法对数据进行预处理。
代码如下:
- # 数据预处理和特征提取
- vectorizer = HashingVectorizer(n_features=25000, alternate_sign=False)
- train_txt = vectorizer.transform(train_data['txt'])
- test_txt = vectorizer.transform(test_data['TXT'])
HashingVectorizer是一个文本特征提取器,将文本转换为稀疏矩阵表示,‘n_features = 25000’表示设置特征维度为25000,‘alternate_sign = False’表示不使用交替符号哈希。
采用LogisticRegression方法建立模型
代码如下:
- # 训练模型
- model = LogisticRegression()
- model.fit(train_txt, train_data['Label'])
LogisticRegression创建了一个逻辑回归模型的实例,并存储在‘model’变量中。
model.fit()方法是用训练集的特征矩阵和标签集进行训练。
代码如下:
- # 进行情感分析
- pred_labels = model.predict(test_txt)
- result_fenlei = ["1" if label == 1 else "0" for label in pred_labels]
predict是一个预测方法,对测试集的数据进行测试,并把结果存储到pred_labels中。
分类用到了列表推导式,其中‘1’表示积极,‘0’表示消极
代码如下:
- # 结果存储到CSV文件
- results = pd.DataFrame({'ID': test_data['ID'], 'sentiment': result_fenlei})
- results.to_csv('results.csv', index=False)
创建一个包含测试集ID和情感结果的DataFrame。
将这个DataFrame存储到一个csv文件里,index = False表示不包含索引。
- import pandas as pd
- from sklearn.feature_extraction.text import HashingVectorizer
- from sklearn.linear_model import LogisticRegression
- import csv
-
- # 读取训练集和测试集
- train_data = pd.read_csv('train.csv')
- test_data = pd.read_csv('test_noLabel.csv')
-
- # 数据预处理和特征提取
- vectorizer = HashingVectorizer(n_features=25000, alternate_sign=False)
- train_txt = vectorizer.transform(train_data['txt'])
- test_txt = vectorizer.transform(test_data['TXT'])
-
- # 训练模型
- model = LogisticRegression()
- model.fit(train_txt, train_data['Label'])
-
- # 进行情感分析
- pred_labels = model.predict(test_txt)
- result_fenlei = ["1" if label == 1 else "0" for label in pred_labels]
-
- # 结果存储到CSV文件
- results = pd.DataFrame({'ID': test_data['ID'], 'sentiment': result_fenlei})
- results.to_csv('results.csv', index=False)
本次作业采用的是基于深度学习方法对文本进行情感分析。
优点是:1、高效的特征提取:使用HashingVectorizer进行特征提取,这种方法适用于处理大型文本数据集,并且具有较低的内存消耗。2、快速的训练和预测:采用逻辑回归作为分类算法,逻辑回归在大规模数据集上训练和预测的速度较快,适用于处理大量文本数据。3、存储结果方便:将情感分析的结果存储到CSV文件中,便于后续的分析、可视化或其他处理。
缺点是:1、特征表示的稀疏性:由于使用了哈希函数进行特征提取,特征表示是稀疏的,可能会丢失一些词汇信息。这可能会对模型的性能产生一定的影响。2、特征不可解释性:使用哈希技巧的特征提取方法无法提供直观的特征解释,即无法知道具体哪些词汇对情感分析起到了重要作用。3、对文本预处理的依赖性:代码中没有包括对文本数据的预处理步骤,例如去除停用词、词干化或词形还原等。这些预处理步骤可以对模型的性能和结果产生影响。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。