O dataset IMDB é um dos mais famosos benchmarks para modelos de classificação de textos que existe. Contando com mais de 49.000 avaliações de filmes e séries, e etiquetados com sentimento positivo e negativo. Link do dataset.
A imagem mostra a distribuição das classes do dataset, e features com as reviews em português e inglês, estando completamente balanceado.
Aplicação de técnicas do NLTK, junto com a métrica de TF-IDF (term frequency-inverse document frequency), a fim de vetorizar e tratar os textos. Por fim, aplicar algoritmos de Machine Learning adequados para classificação de textos e conseguir avaliar de forma mais robusta o sentimento das avaliações em três categorias: Positivo, Negativo e Neutro.
Como boa prática de projeto, a última versão mais estável do Python foi utilizada utilizando a ferramenta Pyenv, e a ferramenta Poetry foi utilizada em conjunto com o ambiente virtual criado para gerenciar e adicionar todas ferramentas necessárias para o projeto. Bibliotecas e Frameworks que não foram possíveis instalar com Poetry foram instaladas com utilizando [Pip][https://pypi.org/project/pip/], como por exemplo: > pip install wordcloud
.
Ferramenta | Versão |
---|---|
python | "3.12.1" |
numpy | "1.26.3" |
pandas | "2.2.0" |
seaborn | "0.13.2" |
nltk | "3.8.1" |
scikit-learn | "1.4.0" |
unidecod | "1.3.8" |
matplotlib | "3.8.2" |
wordcloud | "1.9.3" |
- notebooks - Organizado por tópicos, com diretórios para análise exploratória, pré-processamento, modelagem.
- reports - Contém visualizações e relatórios.
- src - Código-fonte organizado por funcionalidade, incluindo preparação de dados, engenharia de recursos, modelagem.
- Bag of Words - Abordagem que consiste em realizar uma contagem de palavras, ou seja, transformar o texto em um vetor de números. Processo de extração de características de texto para que uma forma estruturada possa ser utilizada para algoritmos de Machine Learning.
- Tokenização - Processo de dividir o texto em palavras ou frases menores, que são chamadas de tokens. Existem muitas abordagens para tokenização, para os propósitos deste projeto, a tokenização considerando espaços em branco entre as palavras será suficiente, e a biblioteca NLTK será utilizada em conjunto. Ferramentas do NLTK implementadas:
- Remoção de stopwords
- Eliminação de pontuações
- Normalização do corpus
- Stemming do corpus
- TF-IDF - técnica de processamento de linguagem natural que é usada para avaliar a importância de uma palavra em um documento. A sigla TF-IDF significa "Term Frequency-Inverse Document Frequency" e é uma métrica que avalia a importância de uma palavra em um documento. A técnica é composta por duas partes: a primeira parte é a frequência do termo (TF) e a segunda parte é a frequência inversa do documento (IDF).
- Regressão Logística
- Naive Bayes Gaussiano
- Naive Bayes Multinomial
- Random Forest
- Support Vector Machine
- Curva ROC
- Matriz de Confusão
- Acurácia
- Precisão
- Recall
Foi utilizada a ferramenta wordcloud com o propósito de se obter nuvens de palavras com as avaliações obtidas dos algoritmos.
A curva ROC é uma ferramenta que permite avaliar a capacidade discriminativa de um classificador binário. A área sob a curva (AUC) é uma métrica que permite comparar a capacidade discriminativa de diferentes classificadores. Quanto maior a AUC, melhor a capacidade discriminativa do classificador. E além disso, a curva ROC permite visualizar a taxa de verdadeiros positivos (sensibilidade) em função da taxa de falsos positivos (1-especificidade). Valore acentuados para o lado esquerdo superior indicam que os classificadores acertam mais verdadeiros positivos e erram menos falsos positivos.
Do gráfico plotado e valores acima mostrados, os modelos de regressão logística e support vector machine apresentaram os melhores resultados, com AUC de 0.948 e 0.951, respectivamente.
A matriz de confusão é uma tabela que mostra as frequências de classificação para cada classe de um modelo. A tabela tem duas linhas e duas colunas que reportam o número de:
- Verdadeiros positivos (VP) - classificações corretas da classe positiva
- Falsos positivos (FP) - classificações incorretas da classe positiva
- Verdadeiros negativos (VN) - classificações corretas da classe negativa
- Falsos negativos (FN) - classificações incorretas da classe negativa
A tabela abaixo mostra a montagem da tabela acima em termos das frequências:
VN | FP |
---|---|
FN | VP |
Métricas | ||
---|---|---|
Acurácia | Precisão | Recall |
87.86% | 87.18% | 88.54% |
Considerando o contexto de classificação de textos, os resultados obtidos para o melhor classificador são bem satisfatórios, mostrando que o algoritmo consegue classificar corretamente positivos que são realmente positivos, e negativos que são realmente negativos.
As nuvens de palavras acima mostram de forma satisfatória que as palavras mais relevantes para avaliações positivas e negativas estão bem construídas, sendo as palavras encontradas em sua forma raiz, base, após processo de stemming.
Para mais detalhes sobre todos os resultados obtidos: