python3 -m venv .venv
source ./.venv/bin/activate
pip install -r requirements.txt
Exercício para dia 17 equipes de até 3
Os dados estão no arquivo imdb.csv;
-
Limpar dados com stopwords , regex, stem ou lemma, (nltk ou spacy)
-
Criar um classificador (não bayes)
-
Calcular a acurácia do seu classificador com testes
from nltk.sentiment import SentimentIntensityAnalyzer
sia = SentimentIntensityAnalyzer()
sia.polarity_scores("Wow, NLTK is really powerful!")
{'neg': 0.0, 'neu': 0.295, 'pos': 0.705, 'compound': 0.8012}
4)Comparar os resultados (acurácia) do sia com os do seu classificador
*Um notebook do jupyter postado em seu github (link na atividade do ava)
Developed by: Evandro Matheus Schmitz, Leonardo Fiedler and Recigio Poffo.
main.ipynb
contém o processamento para a geração do arquivo bag_of_words_full.csv, que é bag of words usado para no treinamento dos classificadores. Como subproduto do processamento são gerados os arquivos vocab que com tem as palavras que aparecem no dataset. bag_of_words_full.csv com somente a contagem de palavras com frequência total maior que 1000 no dataset original.analysis_10k.ipynb
contem o treinamento dos classificadores e a comparação deles com oSentimentIntensityAnalyzer
do pacotenltk.sentiment
.
Train - Accuracy: 0.8774444444444445
Train - Precision: 0.8685542720324875
Train - Recall: 0.8896000000000001
Train - Fscore: 0.8789416269136285
Test - Accuracy: 0.8382
Test - Precision: 0.8292218953389441
Test - Recall: 0.8523999999999999
Test - Fscore: 0.8404873169934663
Train - Accuracy: 0.9137777777777778
Train - Precision: 0.8950002334083923
Train - Recall: 0.9380666666666666
Train - Fscore: 0.9159943215020434
Test - Accuracy: 0.8146000000000001
Test - Precision: 0.7991287731653458
Test - Recall: 0.8408
Test - Fscore: 0.8192952511878564
Train - Accuracy: 0.9995666666666667
Train - Precision: 0.9996447404732312
Train - Recall: 0.9994888888888888
Train - Fscore: 0.9995662396062135
Test - Accuracy: 0.7894
Test - Precision: 0.792118779351039
Test - Recall: 0.785
Test - Fscore: 0.788402016300736
Melhores parâmetros: {'hidden_layer_sizes': 11, 'max_iter': 2000, 'solver': 'lbfgs'}
Train - Accuracy: 0.8644333333333334
Train - Precision: 0.853277569694183
Train - Recall: 0.880251851851852
Train - Fscore: 0.8665497361716412
Test - Accuracy: 0.851
Test - Precision: 0.8405017948165039
Test - Recall: 0.8664666666666667
Test - Fscore: 0.8532738359560665
Train - Accuracy: 0.9189259259259259
Train - Precision: 0.9039895699911117
Train - Recall: 0.9374148148148149
Train - Fscore: 0.9203979438411685
Test - Accuracy: 0.8279666666666665
Test - Precision: 0.8169500726728375
Test - Recall: 0.8454666666666666
Test - Fscore: 0.8309464314954284
Train - Accuracy: 0.998948148148148
Train - Precision: 0.9990142504608055
Train - Recall: 0.9988814814814815
Train - Fscore: 0.9989476337918202
Test - Accuracy: 0.7951333333333334
Test - Precision: 0.7916816834940178
Test - Recall: 0.8012666666666668
Test - Fscore: 0.7964063442145081
Melhores parâmetros: {'hidden_layer_sizes': 13, 'max_iter': 1000, 'solver': 'lbfgs'}
Pegando as sentenças coresposndentes as linhas do bag of words usadas nos classificadores, foi feito um teste usando o SentimentIntensityAnalyzer
. Os resultados foram:
- Sentimentos classificados corretamente: 20746
- Total de sentenças avaliadas: 30000
- Acurácia: 0.6915333333333333 que dá aproximadamente 69,16%