【导读】近日,Abdul Fatir 在自己的CS5228课程报告使用不同的方法进行Tweets情感分析(作为二分类问题),并对这些方法的性能进行比较,主要是基于Python实现多种模型(Naive Bayes, SVM, CNN, LSTM, etc)用于推文情感分析,已于Github开源。
我们使用不同的方法进行Tweets情感分析(作为二分类问题),并对这些方法的性能进行比较。训练集使用csv类型的文件,格式tweet_id, sentiment,tweet,其中tweet_id正整数,sentiment是情感极性:1(积极情感)或0(消极情感),tweet是推文信息是引号包含的内容。测试集也是一个csv文件,格式是:tweet_id, tweet。
有些库是几种方法都需要的通用的库,有些库则是个别方法的特殊的需求
通用的库:
某些方法特有的库:
注意:建议使用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.py,使用TRAIN=True将显示训练集的准确率。
运行naivebayes.py,使用TRAIN=True将显示在10%的验证数据集的准确率。
执行logistic.py运行logistic回归模型或执行maxent-nltk.py <>运行NLTK的最大熵模型。令TRAIN = True时,将显示10%验证数据集的准确性。
运行decisiontree.py,令TRAIN = True时,将显示10%验证数据集的准确性结果。
运行randomforest.py,TRAIN = True时,将显示10%验证数据集的准确性。
运行xgboost.py,TRAIN = True时,将显示10%验证数据集的准确性。
运行svm.py,TRAIN = True时,将显示10%验证数据集的准确性。
运行neuralnet.py,TRAIN = True时,将显示10%验证数据集的准确性。
运行lstm.py,使用10%数据进行验证,并将每个epock时段的模型保存在./models/中。(在运行lstm.py之前,请确保此目录存在)。
运行cnn.py,将运行报告中所述的4-Conv-NN(4个conv层神经网络)模型。如果要运行CNN的其他版本,只需注释或删除添加Conv对应的行。使用10%的数据进行验证,并在./models/中为每个epoch保存模型。(确保在运行cnn.py之前,此目录已经存在)。
要提取训练集的倒数第二层特征,请运行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。
原文链接:https://github.com/abdulfatir/twitter-sentiment-analysis/blob/master/README.md
报告文档:https://github.com/abdulfatir/twitter-sentiment-analysis/blob/master/docs/report.pdf