Implementação Básica de uma CNN para Análise de Sentimentos em Python
E se se eu resolvesse, de formam mambembe, implementar uma CNN em Python com ajuda do ChatGPT?
Ficou assim.
1. Instalar as Bibliotecas Necessárias
Certifique-se de ter o TensorFlow e Keras instalados em seu ambiente. Eles podem ser instalados usando o seguinte comando:
pip install tensorflow
2. Importar as Bibliotecas
No início do seu script Python, importe as bibliotecas necessárias:
import numpy as np
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Embedding, Conv1D, GlobalMaxPooling1D, Dense
from tensorflow.keras.datasets import imdb
from tensorflow.keras.preprocessing.sequence import pad_sequences
3. Carregar e Preparar os Dados
Carregue o conjunto de dados IMDb e prepare as sequências de texto:
# Definir parâmetros
max_features = 5000 # Número máximo de palavras
max_len = 500 # Tamanho máximo de cada texto
# Carregar o conjunto de dados IMDb
(X_train, y_train), (X_test, y_test) = imdb.load_data(num_words=max_features)
# Preencher ou truncar as sequências para o mesmo comprimento
X_train = pad_sequences(X_train, maxlen=max_len)
X_test = pad_sequences(X_test, maxlen=max_len)
4. Construir o Modelo da CNN
Defina a arquitetura da rede neural convolucional:
model = Sequential()
model.add(Embedding(input_dim=max_features, output_dim=128, input_length=max_len))
model.add(Conv1D(filters=64, kernel_size=5, activation='relu'))
model.add(GlobalMaxPooling1D())
model.add(Dense(10, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
5. Compilar o Modelo
Compile o modelo configurando o otimizador, a função de perda e as métricas de avaliação:
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
6. Treinar o Modelo
Treine o modelo com os dados de treino:
model.fit(X_train, y_train, epochs=5, batch_size=32, validation_split=0.2)
7. Avaliar o Modelo
Avalie o modelo usando os dados de teste:
loss, accuracy = model.evaluate(X_test, y_test)
print(f'Test Accuracy: {accuracy:.2f}')
Apêndice: Glossário de Termos
Rede Neural Convolucional (CNN)
Um tipo de rede neural projetada para processar dados com uma estrutura de grade, como imagens ou sequências de texto.
Embedding
Uma técnica para converter palavras em vetores densos de tamanho fixo que capturam relações semânticas entre as palavras.
Conv1D
Uma camada de convolução unidimensional que aplica filtros sobre as sequências de entrada.
GlobalMaxPooling1D
Uma camada de pooling que reduz a dimensionalidade ao selecionar o valor máximo de cada filtro.
Dense
Uma camada totalmente conectada onde cada neurônio recebe entrada de todos os neurônios da camada anterior.
Sigmoid
Uma função de ativação que transforma a saída em um valor entre 0 e 1, usada para tarefas de classificação binária.
Adam
Um algoritmo de otimização que ajusta os pesos da rede neural de forma eficiente.
Binary Crossentropy
Uma função de perda utilizada em problemas de classificação binária, medindo a diferença entre a saída prevista e a saída real.
Batch Size
O número de amostras processadas antes de atualizar o modelo.
Epoch
Uma única passagem por todo o conjunto de dados de treino.
Referências
- Chollet, F. (2018). Deep Learning with Python. Manning Publications.
- Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press.
- Géron, A. (2019). Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow. O'Reilly Media.
- Brownlee, J. (2018). Deep Learning for Natural Language Processing. Machine Learning Mastery.
- LeCun, Y., Bengio, Y., & Hinton, G. (2015). Deep learning. Nature, 521(7553), 436-444.
- Olah, C. (2015). Understanding Convolutional Neural Networks. colah's blog.
- Raschka, S., & Mirjalili, V. (2017). Python Machine Learning. Packt Publishing.
- Srivastava, N., Hinton, G., Krizhevsky, A., Sutskever, I., & Salakhutdinov, R. (2014). Dropout: A simple way to prevent neural networks from overfitting. Journal of Machine Learning Research, 15(1), 1929-1958.
- Goldberg, Y. (2017). Neural Network Methods for Natural Language Processing. Synthesis Lectures on Human Language Technologies, 10(1), 1-309.
- Maas, A. L., Daly, R. E., Pham, P. T., Huang, D., Ng, A. Y., & Potts, C. (2011). Learning word vectors for sentiment analysis. In Proceedings of the 49th Annual Meeting of the Association for Computational Linguistics: Human Language Technologies.