帮我生成一段python代码,使用卷积神经网络解决情感分析的任务
时间: 2024-10-28 17:06:40 浏览: 9
当然可以。以下是使用Python和Keras库创建一个简单的卷积神经网络(CNN)用于文本情感分析的基本示例。我们将采用预处理后的词嵌入数据(如使用`word2vec`或`GloVe`),假设我们已经有了训练和测试的数据集。
```python
# 导入所需库
from keras.preprocessing.text import Tokenizer
from keras.preprocessing.sequence import pad_sequences
from keras.models import Sequential
from keras.layers import Embedding, Conv1D, GlobalMaxPooling1D, Dense, Dropout
# 假设我们已经有一个名为sentences和labels的情感分析数据集
sentences = ... # 被标记为正面或负面的文本列表
labels = ... # 相应的标签列表 (0 for negative, 1 for positive)
# 文本预处理
tokenizer = Tokenizer(num_words=10000) # 设置最大词汇数
tokenizer.fit_on_texts(sentences)
sequences = tokenizer.texts_to_sequences(sentences)
padded_sequences = pad_sequences(sequences, padding='post')
# 划分训练集和测试集
train_size = int(len(padded_sequences) * 0.8)
x_train = padded_sequences[:train_size]
y_train = labels[:train_size]
x_test = padded_sequences[train_size:]
y_test = labels[train_size:]
# 定义CNN模型
model = Sequential()
model.add(Embedding(input_dim=len(tokenizer.word_index)+1, output_dim=128, input_length=padded_sequences.shape[1]))
model.add(Conv1D(filters=64, kernel_size=3, activation='relu'))
model.add(GlobalMaxPooling1D())
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid')) # 输出层用二分类激活函数(sigmoid)
# 编译模型
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# 训练模型
model.fit(x_train, y_train, epochs=5, batch_size=32, validation_data=(x_test, y_test))
# 评估模型性能
score, accuracy = model.evaluate(x_test, y_test, verbose=0)
print(f"Test accuracy: {accuracy}")
#
阅读全文