本文整理自笔者年前在知乎上的一个回答:
大数据舆情情感分析,如何提取情感并使用什么样的工具?(贴情感标签)
1、我将数据筛选预处理好,然后分好词。
https://www.zhihu.com/question/31471793/answer/542401478
2、是不是接下来应该与与情感词汇本库对照,生成结合词频和情感词库的情感关键词库。
3、将信息与情感关键词库进行比对,对信息加以情感标记。
4、我想问实现前三步,需要什么工具的什么功能呢?据说用spss和武汉大学的ROST WordParser。该如何使用呢?
情感分析说白了,就是一个文本(多)分类问题,我看一般的情感分析都是2类(正负面)或者3类(正面、中性和负面)。其实,这种粒度是远远不够的。本着“Talk is cheap, show you my code”的原则,我不扯咸淡,直接上代码给出解决方案(而且是经过真实文本数据验证了的:我用一个14个分类的例子来讲讲各类文本分类模型---从传统的机器学习文本分类模型到现今流行的基于深度学习的文本分类模型,最后给出一个超NB的模型集成,效果最优。
**************************************前方高能****************************************
在这篇文章中,笔者将讨论自然语言处理中文本分类的相关问题,将使用一个复旦大学开源的文本分类语料库,对文本分类的一般流程和常用模型进行探讨。
首先,笔者会创建一个非常基础的初始模型,然后基于此使用不同的特征进行改进。
接下来,笔者还将讨论如何使用深度神经网络来解决NLP问题,并在文章末尾以一般关于集成的一些想法结束这篇文章。
本文覆盖的NLP方法有:
TF-IDF
Count Features
Logistic Regression
Naive Bayes
SVM
Xgboost
Grid Search
Word Vectors
Dense Network
LSTM/BiLSTM
GRU
Ensembling
NOTE: 笔者并不能保证你学习了本文之后就能在NLP相关比赛中获得非常高的分数。但是,如果你正确地“吃透”它,并根据实际情况适时作出一些调整,你可以获得非常高的分数。
废话不多说,先导入一些我将要使用的重要python模块。
import pandas as pd
import numpy as np
import xgboost as xgb
from tqdm import tqdm
from sklearn.svm import SVC
from keras.models import Sequential
from keras.layers.recurrent import LSTM, GRU
from keras.layers.core import Dense, Activation, Dropout
from keras.layers.embeddings import Embedding
from keras.layers.normalization import BatchNormalization
from keras.utils import np_utils
from sklearn import preprocessing, decomposition, model_selection, metrics, pipeline
from sklearn.model_selection import GridSearchCV
from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer
from sklearn.decomposition import TruncatedSVD
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
from keras.layers import GlobalMaxPooling1D, Conv1D, MaxPooling1D, Flatten, Bidirectional, SpatialDropout1D
from keras.preprocessing import sequence, text
from keras.callbacks import EarlyStopping
from nltk import word_tokenize