【资源】Python实现多种模型(Naive Bayes, SVM, CNN, LSTM, etc)用于推文情感分析

【导读】近日,Abdul Fatir 在自己的CS5228课程报告使用不同的方法进行Tweets情感分析(作为二分类问题),并对这些方法的性能进行比较,主要是基于Python实现多种模型(Naive Bayes, SVM, CNN, LSTM, etc)用于推文情感分析,已于Github开源。

推文情感分析(Sentiment Analysis on Tweets)

  • 数据集

我们使用不同的方法进行Tweets情感分析(作为二分类问题),并对这些方法的性能进行比较。训练集使用csv类型的文件,格式tweet_id, sentiment,tweet,其中tweet_id正整数,sentiment是情感极性:1(积极情感)或0(消极情感),tweet是推文信息是引号包含的内容。测试集也是一个csv文件,格式是:tweet_id, tweet。

  • 环境要求

有些库是几种方法都需要的通用的库,有些库则是个别方法的特殊的需求

通用的库:

  • numpy
  • scikit-learn
  • scipy
  • nltk

某些方法特有的库:

  • keras with TensorFlow backend for Logistic Regression, MLP, RNN (LSTM), and CNN.
  • xgboost for XGBoost.

注意:建议使用Python的Anaconda发行版。该项目的报告可以在docs /中找到。

▌用法



  • 预处理:

1. 在训练和测试数据上运行preprocess.py <raw-csv-path>。然后就生成了数据集的预处理版本。

2. 运行stats.py <preprocessed-csv-path>(其中<preprocessed-csv-path>是用preprocess.py生成的csv所在路径)。它给出了数据集的一般统计信息,以及两个pickle文件,分别是训练集的unigrams和bigrams的分布。

经过上述步骤,应该共有四个文件:<preprocessed-train-csv>,<preprocessed-test-csv>,<freqdist>和<freqdist-bi>,分别是预处理的训练集、预处理的集、unigrams分布和bigrams分布。

对于后面的所有方法,将TRAIN_PROCESSED_FILE,TEST_PROCESSED_FILE,FREQ_DIST_FILE和BI_FREQ_DIST_FILE的值更改为各个文件己的路径。另外,可以更改USE_BIGRAMS和FEAT_TYPE的值,以使用不同方法获得结果。

  • Baseline

运行baseline.py,使用TRAIN=True将显示训练集的准确率。

  • 朴素贝叶斯(Naive Bayes)

运行naivebayes.py,使用TRAIN=True将显示在10%的验证数据集的准确率。

  • 最大熵(Maximum Entropy)

执行logistic.py运行logistic回归模型或执行maxent-nltk.py <>运行NLTK的最大熵模型。令TRAIN = True时,将显示10%验证数据集的准确性。

  • 决策树(Decision Tree)

运行decisiontree.py,令TRAIN = True时,将显示10%验证数据集的准确性结果。

  • 随机森林(Random Forest)

运行randomforest.py,TRAIN = True时,将显示10%验证数据集的准确性。

  • XGBoost

运行xgboost.py,TRAIN = True时,将显示10%验证数据集的准确性。

  • SVM

运行svm.py,TRAIN = True时,将显示10%验证数据集的准确性。

  • 多层感知机(Multi-Layer Perceptron)

运行neuralnet.py,TRAIN = True时,将显示10%验证数据集的准确性。

  • 递归神经网络(Reccurent Neural Networks)

运行lstm.py,使用10%数据进行验证,并将每个epock时段的模型保存在./models/中。(在运行lstm.py之前,请确保此目录存在)。

  • 卷积神经网络(Convolutional Neural Networks)

运行cnn.py,将运行报告中所述的4-Conv-NN(4个conv层神经网络)模型。如果要运行CNN的其他版本,只需注释或删除添加Conv对应的行。使用10%的数据进行验证,并在./models/中为每个epoch保存模型。(确保在运行cnn.py之前,此目录已经存在)。

  • Majority Vote Ensemble

要提取训练集的倒数第二层特征,请运行extract-cnnfeat.py <saved-model>。这将生成3个文件:train-feats.npy,train-labels.txt和test-feats.npy。

运行cnn-feats-svm.py,可以使用上一步中的文件,并对CNN模型中提取的特征执行SVM分类。

将你想要预测的CSV文件放在./results/中,然后运行majority-voting.py。将生成majority-voting.csv。

  • 其他文件的信息

  • dataset/positive-words.txt: 积极情感词列表
  • dataset/negative-words.txt: 消极情感词列表
  • dataset/glove-seeds.txt: 用StanfordNLP训练的GloVe词向量,与我们的数据集中的词匹配,作为种子词嵌入
  • Plots.ipynb: 使用notebook 来生产报告中的图 (https://github.com/abdulfatir/twitter-sentiment-analysis/blob/master/docs/report.pdf)

原文链接:https://github.com/abdulfatir/twitter-sentiment-analysis/blob/master/README.md

报告文档:https://github.com/abdulfatir/twitter-sentiment-analysis/blob/master/docs/report.pdf

原文发布于微信公众号 - 专知(Quan_Zhuanzhi)

原文发表时间:2017-12-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏图形学与OpenGL

实验四 二维几何变换

972
来自专栏Python小屋

Python+sklearn使用朴素贝叶斯算法识别中文垃圾邮件

2、读取全部训练集,删除其中的干扰字符,例如【】*。、,等等,然后分词,删除长度为1的单个字。

2325
来自专栏深度学习入门与实践

【深度学习系列】PaddlePaddle可视化之VisualDL

  上篇文章我们讲了如何对模型进行可视化,用的keras手动绘图输出CNN训练的中途结果,本篇文章将讲述如何用PaddlePaddle新开源的VisualDL来...

4139
来自专栏新智元

手把手教你用OpenCV和Python实现图像和视频神经风格迁移(代码)

2015年,Gatsys等人在论文A Neural Algorithm of Artistic Style中提出了最初的神经风格迁移算法。2016年,Johns...

4162
来自专栏专知

【前沿】TensorFlow Pytorch Keras代码实现深度学习大神Hinton NIPS2017 Capsule论文

【导读】10月26日,深度学习元老Hinton的NIPS2017 Capsule论文《Dynamic Routing Between Capsules》终于在a...

4106
来自专栏机器之心

教程 | 如何利用TensorFlow.js部署简单的AI版「你画我猜」图像识别应用

我们将使用卷积神经网络(CNN)来识别不同类型的手绘图像。这个卷积神经网络将在 Quick Draw 数据集(https://github.com/google...

3204
来自专栏贾志刚-OpenCV学堂

使用Tensorflow Object Detection API实现对象检测

Tensorflow Object Detection API自从发布以来,其提供预训练模型也是不断更新发布,功能越来越强大,对常见的物体几乎都可以做到实时准确...

1453
来自专栏大数据挖掘DT机器学习

阿里天池大数据竞赛实战:RF&GBRT 完成过程

一点比赛心得,供不太熟悉Xlab RF和GBRT调用的同学参考,不喜勿喷,大神绕道---------- 6月初的时候LR 做到4.9后一直上不去,...

38711
来自专栏磐创AI技术团队的专栏

ChatGirl 一个基于 TensorFlow Seq2Seq 模型的聊天机器人

简介 ? 还在开发中,它工作的效果还不好。但是你可以直接训练,并且运行。 包含预处理过的 twitter 英文数据集,训练,运行,工具代码,可以运行但是效果有待...

4198
来自专栏杨熹的专栏

了解 Sklearn 的数据集

学习资料:大家可以去莫烦的学习网站学到更多的知识。 学习资料: 相关代码 更多可用数据 网址 ---- ? 今天来看 Sklearn 中的 data s...

3448

扫码关注云+社区

领取腾讯云代金券