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

2017 年 12 月 25 日 专知 专知内容组(编)

【导读】近日,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


-END-

专 · 知

人工智能领域主题知识资料查看获取【专知荟萃】人工智能领域26个主题知识资料全集(入门/进阶/论文/综述/视频/专家等)

同时欢迎各位用户进行专知投稿,详情请点击

诚邀】专知诚挚邀请各位专业者加入AI创作者计划了解使用专知!

请PC登录www.zhuanzhi.ai或者点击阅读原文,注册登录专知,获取更多AI知识资料

请扫一扫如下二维码关注我们的公众号,获取人工智能的专业知识!

请加专知小助手微信(Rancho_Fang),加入专知主题人工智能群交流!

点击“阅读原文”,使用专知

登录查看更多
31

相关内容

狭义的情感分析(sentiment analysis)是指利用计算机实现对文本数据的观点、情感、态度、情绪等的分析挖掘。广义的情感分析则包括对图像视频、语音、文本等多模态信息的情感计算。简单地讲,情感分析研究的目标是建立一个有效的分析方法、模型和系统,对输入信息中某个对象分析其持有的情感信息,例如观点倾向、态度、主观观点或喜怒哀乐等情绪表达。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
【ICML2020-西电】用于语言生成的递归层次主题引导RNN
专知会员服务
21+阅读 · 2020年6月30日
基于多头注意力胶囊网络的文本分类模型
专知会员服务
77+阅读 · 2020年5月24日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
《深度学习》圣经花书的数学推导、原理与Python代码实现
【新书】Pro 机器学习算法Python实现,379页pdf
专知会员服务
199+阅读 · 2020年2月11日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
机器学习入门的经验与建议
专知会员服务
92+阅读 · 2019年10月10日
【Strata Data Conference】用于自然语言处理的深度学习方法
专知会员服务
48+阅读 · 2019年9月23日
如何使用自然语言工具包(NLTK)在Python3中执行情感分析
Python程序员
19+阅读 · 2019年10月28日
Python用于NLP :处理文本和PDF文件
Python程序员
4+阅读 · 2019年3月27日
CNN与RNN中文文本分类-基于TensorFlow 实现
七月在线实验室
13+阅读 · 2018年10月30日
在Python中使用SpaCy进行文本分类
专知
24+阅读 · 2018年5月8日
用TensorFlow开发问答系统
机器学习研究会
7+阅读 · 2017年11月27日
tensorflow LSTM + CTC实现端到端OCR
机器学习研究会
26+阅读 · 2017年11月16日
开源|基于tensorflow使用CNN-RNN进行中文文本分类!
全球人工智能
11+阅读 · 2017年11月12日
Arxiv
8+阅读 · 2019年3月28日
Arxiv
22+阅读 · 2018年8月30日
Arxiv
8+阅读 · 2018年1月19日
Arxiv
5+阅读 · 2017年7月23日
Arxiv
5+阅读 · 2015年9月14日
VIP会员
相关VIP内容
【ICML2020-西电】用于语言生成的递归层次主题引导RNN
专知会员服务
21+阅读 · 2020年6月30日
基于多头注意力胶囊网络的文本分类模型
专知会员服务
77+阅读 · 2020年5月24日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
《深度学习》圣经花书的数学推导、原理与Python代码实现
【新书】Pro 机器学习算法Python实现,379页pdf
专知会员服务
199+阅读 · 2020年2月11日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
机器学习入门的经验与建议
专知会员服务
92+阅读 · 2019年10月10日
【Strata Data Conference】用于自然语言处理的深度学习方法
专知会员服务
48+阅读 · 2019年9月23日
相关资讯
如何使用自然语言工具包(NLTK)在Python3中执行情感分析
Python程序员
19+阅读 · 2019年10月28日
Python用于NLP :处理文本和PDF文件
Python程序员
4+阅读 · 2019年3月27日
CNN与RNN中文文本分类-基于TensorFlow 实现
七月在线实验室
13+阅读 · 2018年10月30日
在Python中使用SpaCy进行文本分类
专知
24+阅读 · 2018年5月8日
用TensorFlow开发问答系统
机器学习研究会
7+阅读 · 2017年11月27日
tensorflow LSTM + CTC实现端到端OCR
机器学习研究会
26+阅读 · 2017年11月16日
开源|基于tensorflow使用CNN-RNN进行中文文本分类!
全球人工智能
11+阅读 · 2017年11月12日
相关论文
Top
微信扫码咨询专知VIP会员