情感分析是一种文本分类技术,其目的是分析文本中所表达的情绪,判断其积极性或消极性。它属于自然语言处理的一个重要方向,在很多领域有着广泛的应用,如新闻监控、产品评论分析等。
情感分析的主要步骤是:
- 数据读取:读取训练集和测试集文本数据及标签(积极或消极)。
- 数据预处理:包括文本清洗、大小写转换、标点符号过滤、停用词过滤、词干提取等。
- 特征提取:将文本表示为数字特征向量,常用的方法有:
- 词袋模型:统计文本中的词频信息。
- TF-IDF:统计词频及逆文本频率,衡量词的重要性。
- 词嵌入:使用预训练的词向量获得文本向量表示。
- 选择分类模型:常用的模型有朴素贝叶斯、LSTM、CNN等。
- 模型训练:使用训练集训练选择的分类模型。
- 模型评估:使用测试集评估模型性能,计算准确率、召回率、F1值等指标。
- 预测情感:对未知文本进行特征提取后,使用训练好的模型进行情感判断预测。
代码示例:
python
# 数据预处理
from keras.preprocessing.text import Tokenizer
from keras.preprocessing.sequence import pad_sequences
tokenizer = Tokenizer()
tokenizer.fit_on_texts(texts)
sequences = tokenizer.texts_to_sequences(texts)
data = pad_sequences(sequences, maxlen=MAX_LEN)
# CNN模型
from keras.models import Sequential
from keras.layers import Dense, Flatten, Embedding, Conv1D, MaxPool1D
model = Sequential()
model.add(Embedding(n_words, n_embd, input_length=MAX_LEN))
model.add(Conv1D(filters=32, kernel_size=3, activation='relu'))
model.add(MaxPool1D(pool_size=2))
model.add(Flatten())
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])
model.fit(x_train, y_train, epochs=10, batch_size=32)
# 预测情感
new_text = "This movie was awesome! I really enjoyed it."
new_seq = tokenizer.texts_to_sequences([new_text])
new_data = pad_sequences(new_seq, maxlen=MAX_LEN)
pred = model.predict(new_data)
print(pred)
# Output: [[0.9]] 积极文本