神经网络实现文本分类和预测代码
时间: 2023-08-10 17:09:00 浏览: 95
基于TF的LSTM实现文本分类,基于tensorflow实现:RNN->GRU训练和测试以及预测代码
好的,以下是一个使用深度学习模型(卷积神经网络)实现文本分类和预测的Python代码示例:
```python
import pandas as pd
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 Embedding, Conv1D, GlobalMaxPooling1D, Dense
from sklearn.model_selection import train_test_split
# 读取数据
data = pd.read_csv('data.csv')
# 将文本转化为数字向量表示
tokenizer = Tokenizer(num_words=5000)
tokenizer.fit_on_texts(data['text'])
X = tokenizer.texts_to_sequences(data['text'])
X = pad_sequences(X, maxlen=100)
# 划分数据集
y = pd.get_dummies(data['label']).values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 定义模型
model = Sequential()
model.add(Embedding(5000, 100, input_length=X.shape[1]))
model.add(Conv1D(filters=64, kernel_size=5, activation='relu'))
model.add(GlobalMaxPooling1D())
model.add(Dense(3, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
# 训练模型
model.fit(X_train, y_train, epochs=10, batch_size=32)
# 评估模型
loss, accuracy = model.evaluate(X_test, y_test, verbose=False)
print('Accuracy:', accuracy)
# 预测新数据
new_data = ['This is a positive sentence.', 'This is a negative sentence.']
X_new = tokenizer.texts_to_sequences(new_data)
X_new = pad_sequences(X_new, maxlen=100)
y_pred = model.predict(X_new)
print('Prediction:', y_pred)
```
以上代码使用了Keras深度学习库构建卷积神经网络,实现文本分类和预测。其中用到了Tokenizer将文本转化为数字向量表示,使用pad_sequences函数将数字向量序列填充为相同长度,使用get_dummies函数将标签转化为one-hot编码,然后使用Sequential模型依次添加嵌入层、卷积层、全局最大池化层和全连接层,最后用compile函数编译模型并使用fit函数训练模型。在预测新数据时,也需要先将新文本转化为数字向量表示,并使用pad_sequences函数填充为相同长度,然后使用predict函数对新数据进行分类预测。
阅读全文