写一个CNN文本分类代码
时间: 2023-11-09 16:01:34 浏览: 32
好的,以下是一个基本的CNN文本分类代码的示例:
```
import numpy as np
from keras.preprocessing.text import Tokenizer
from keras.preprocessing.sequence import pad_sequences
from keras.models import Sequential
from keras.layers import Dense, Embedding, Conv1D, MaxPooling1D, Flatten
# 加载训练数据和测试数据
train_texts = ['this is an example', 'another example', 'yet another example']
train_labels = [1, 0, 1] # 标签 1 表示正面情绪,0 表示负面情绪
test_texts = ['just a test', 'another test']
test_labels = [1, 0]
# 将文本转换为数字序列
tokenizer = Tokenizer(num_words=1000)
tokenizer.fit_on_texts(train_texts)
train_sequences = tokenizer.texts_to_sequences(train_texts)
test_sequences = tokenizer.texts_to_sequences(test_texts)
# 对数字序列进行填充和截断
max_length = 10
train_data = pad_sequences(train_sequences, maxlen=max_length)
test_data = pad_sequences(test_sequences, maxlen=max_length)
# 构建卷积神经网络模型
model = Sequential()
model.add(Embedding(input_dim=1000, output_dim=32, input_length=max_length))
model.add(Conv1D(filters=32, kernel_size=3, activation='relu'))
model.add(MaxPooling1D(pool_size=2))
model.add(Flatten())
model.add(Dense(units=1, activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
model.fit(train_data, train_labels, epochs=10, batch_size=16, verbose=1)
# 在测试数据上进行评估
loss, accuracy = model.evaluate(test_data, test_labels, verbose=1)
print('Test accuracy:', accuracy)
```
该代码使用Keras构建了一个简单的卷积神经网络模型,用于对文本进行分类。输入数据是数字序列,通过嵌入层、卷积层、池化层和全连接层处理,然后输出预测结果。在训练集和测试集上评估模型的准确度。在实际使用中,需要根据具体需求对模型进行调整和优化。