tableau des métriques en LaTeX et début du rapport. Makefile
This commit is contained in:
parent
e84f3820b0
commit
b211b2faaa
4 changed files with 142 additions and 25 deletions
5
.gitignore
vendored
5
.gitignore
vendored
|
@ -1,2 +1,7 @@
|
|||
__pycache__/
|
||||
data/
|
||||
*.log
|
||||
*.tex
|
||||
*.aux
|
||||
*.pdf
|
||||
|
||||
|
|
5
Makefile
Normal file
5
Makefile
Normal file
|
@ -0,0 +1,5 @@
|
|||
table_metriques:
|
||||
pdflatex table_metriques_nb.tex
|
||||
pdflatex table_metriques_rl.tex
|
||||
build: rapport.md table_metriques
|
||||
pandoc rapport.md -o rapport.pdf
|
66
rapport.md
Normal file
66
rapport.md
Normal file
|
@ -0,0 +1,66 @@
|
|||
---
|
||||
title: IFT-7022 - Traitement automatique de la langue naturelle
|
||||
author: François Pelletier (908 144 032)
|
||||
date: 4 novembre 2019
|
||||
geometry: "left=3cm,right=3cm,top=2cm,bottom=2cm"
|
||||
output: pdf_document
|
||||
---
|
||||
|
||||
# Travail pratique 2
|
||||
|
||||
## Classification de textes - analyse de sentiments
|
||||
|
||||
### Introduction
|
||||
|
||||
L'objectif de cet exercice est de construire des modèles qui permettent de classifier des commentaires variés selon leur polarité. Nous disposons d'un jeu d'entraînement balancé composé de 3000 commentaires positifs et 3000 négatifs. Le jeu de test est aussi balancé et est composé de 986 commentaires positifs et 982 négatifs. Tous les commentaires sont en anglais.
|
||||
|
||||
### Prétraitement
|
||||
|
||||
Nous effectuons quatre étapes de prétraitement:
|
||||
|
||||
- Tokenisation
|
||||
- Normalisation
|
||||
- Sélection des types
|
||||
- Vectorisation
|
||||
|
||||
Pour chacune de ces étapes, certaines techniques seront expérimentées. Celles-ci produisent, aprèsla dernière étape, une matrice creuse de caractéristiques qui servira à entraîner les différents modèles. Nous ajoutons trois caractéristiques additionnelles à cette matrice, soit les nombres de mots positifs et négatifs, et le nombre total de mot du document.
|
||||
|
||||
#### Tokenisation
|
||||
|
||||
#### Normalisation
|
||||
|
||||
#### Sélection des types
|
||||
|
||||
#### Vectorisation
|
||||
|
||||
### Entraînement des modèles
|
||||
|
||||
Deux types de modèles sont entrainés:
|
||||
|
||||
- Naive Bayes
|
||||
- Régression logistique
|
||||
|
||||
#### Naive Bayes
|
||||
|
||||
#### Régression logistique
|
||||
|
||||
### Analyse de la performance
|
||||
|
||||
Pour chacun des modèles entraînés, différentes métriques de performance sont calculées à l'aide du jeu de données de test.
|
||||
|
||||
![Métriques de performance: Naive Bayes](table_metriques_nb.pdf)
|
||||
|
||||
![Métriques de performance: Régression logistique](table_metriques_rl.pdf)
|
||||
|
||||
### Conclusion
|
||||
|
||||
## Analyse syntaxique - portée d'une négation
|
||||
|
||||
### Introduction
|
||||
|
||||
### Conclusion
|
||||
|
||||
## Références
|
||||
|
||||
|
||||
|
|
@ -49,22 +49,22 @@ if __name__ == '__main__':
|
|||
|
||||
# Méthodes
|
||||
|
||||
norm_names = {
|
||||
0:"Stemming",
|
||||
1:"Lemmatisation"
|
||||
}
|
||||
|
||||
select_names = {
|
||||
0:"Fréquence",
|
||||
1:"Mot-outils",
|
||||
2:"Classe ouverte"
|
||||
}
|
||||
|
||||
vectorizer_names = {
|
||||
0:"Compteur",
|
||||
1:"Occurence",
|
||||
2:"TF-IDF"
|
||||
}
|
||||
norm_names = {
|
||||
0:"Stemm.",
|
||||
1:"Lemm."
|
||||
}
|
||||
|
||||
select_names = {
|
||||
0:"Fréq.",
|
||||
1:"M. outil",
|
||||
2:"Cl. ouv."
|
||||
}
|
||||
|
||||
vectorizer_names = {
|
||||
0:"Compt.",
|
||||
1:"Occ.",
|
||||
2:"TF-IDF"
|
||||
}
|
||||
|
||||
# Tokenisation
|
||||
|
||||
|
@ -241,13 +241,54 @@ vectorizer_names = {
|
|||
cm_nb[norm_m][sel_m][vect_m]+
|
||||
cm_reg[norm_m][sel_m][vect_m])
|
||||
|
||||
table_metriques_df = pd.DataFrame(table_metriques,columns=['Normalisation',
|
||||
'Sélection',
|
||||
'Vectorisation',
|
||||
'Précision NB',
|
||||
'Rappel NB',
|
||||
'Exactitude NB',
|
||||
'Précision RL',
|
||||
'Rappel RL',
|
||||
'Exactitude RL'])
|
||||
table_metriques_df = pd.DataFrame(table_metriques,columns=['Norm.',
|
||||
'Sélect.',
|
||||
'Vect.',
|
||||
'Préc. NB',
|
||||
'Rappel NB',
|
||||
'Exac. NB',
|
||||
'Préc. RL',
|
||||
'Rappel RL',
|
||||
'Exac. RL'])
|
||||
|
||||
# Tableau des métrique Naive Bayes
|
||||
|
||||
f = open("table_metriques_nb.tex","w")
|
||||
f.write(
|
||||
r"""
|
||||
\documentclass[preview]{standalone}
|
||||
\usepackage{booktabs}
|
||||
\begin{document}
|
||||
""")
|
||||
f.write(table_metriques_df[['Norm.',
|
||||
'Sélect.',
|
||||
'Vect.',
|
||||
'Préc. NB',
|
||||
'Rappel NB',
|
||||
'Exac. NB']].to_latex())
|
||||
f.write(
|
||||
r"""
|
||||
\end{document}
|
||||
""")
|
||||
f.close()
|
||||
|
||||
# Tableau des métriques Régression logistique
|
||||
|
||||
f = open("table_metriques_rl.tex","w")
|
||||
f.write(
|
||||
r"""
|
||||
\documentclass[preview]{standalone}
|
||||
\usepackage{booktabs}
|
||||
\begin{document}
|
||||
""")
|
||||
f.write(table_metriques_df[['Norm.',
|
||||
'Sélect.',
|
||||
'Vect.',
|
||||
'Préc. RL',
|
||||
'Rappel RL',
|
||||
'Exac. RL']].to_latex())
|
||||
f.write(
|
||||
r"""
|
||||
\end{document}
|
||||
""")
|
||||
f.close()
|
||||
|
|
Loading…
Reference in a new issue