Table des matières
TAL Traitement Automatique du Langage avec des Fables de La Fontaine
Cette page est la suite de Text Processing and Machine Learning TAL
La page suivante est Générer du texte en python avec textgenrnn
Sources
Tout le code utilisé ici se trouve à:
Les liens de code pointent directement à la ligne du github.
Ressources
- Analysez vos données textuelles sur OpenClassrooms. L'exemple est trop compliqué pour expliquer des notions simples. De plus, l'exemple n'est pas fourni, le code est partiel (avec des erreurs et un mauvais respect du PEP8, des “;” en python !!). C'est en français et ça a le mérite d'exister. Et ça fini en queue de poisson: manifestement, l'auteur ne veut surtout pas partager, et donner des billes à la concurrence.
- github.com/karpathy/char-rnn Multi-layer Recurrent Neural Network for training/sampling from character-level language models.
Récupération des datas
Les fables de Jean de La Fontaine sont récupérées sur le site mesfables.com Merci à son auteur.
Méthode
- Aspiration du site
wget --mirror --convert-links --html-extension -o log http://www.mesfables.com/all.html
- Suppression de les dossire et fichiers pour ne conserver que les dossiers livre-i avec i = 1 à 12
- Dans chaque livre-i suppression des dossiers css et js
Du coup, il ne reste que des fichiers html, un par fables.
Récupération des fables et enregistrement dans des fichiers .txt dans fables_txt
python3 get_fables.py
Création d'un json des fables corpus.json
python3 fables_to_json.py
Le json est un dict:
# title, livre, fable sont des str corpus = {title: [livre, fable], ...}
Installation
sudo pip3 install pandas
Etape 1: Exploration du texte
Récupération du corpus
Les fables sont reproupées par livre, numéroté livre-i (i de 1 à 12), voir la Chronologie.
Exploration
Etape 2: Nettoyer et normaliser les données
Script etape_2.py
Suppression des stop words ou Mot vide
En recherche d'information, un mot vide (ou stop word, en anglais) est un mot qui est tellement commun qu'il est inutile de l'indexer ou de l'utiliser dans une recherche.
Chaque mot se voit affecté le nombre de fois qu'il apparaît dans le document: Sac de mots
Si je n'ai pas fais d'erreur, Monsieur Jean De La Fontaine écrit une poésie avec peu de bla bla: les mots sont toujours riches !
Racinisation (Stemming en EN)
En linguistique, la racinisation ou désuffixation est un procédé de transformation des flexions en leur radical ou racine. Contrairement au lemme qui correspond à un terme issu de l’usage ordinaire des locuteurs de la langue, la racine ne correspond généralement qu’à un terme résultant de ce type d’analyse.
Etape 3 Représentation du corpus en bag of words
Cooccurrence
- Cooccurrence sur Wikipedia: La cooccurrence (orthographiée co-occurrence en anglais) est la présence simultanée de deux ou de plusieurs mots (ou autres unités linguistiques) dans le même énoncé (la phrase, le paragraphe, l'extrait).
Bi-gram
TF-IDF
Représentation du TF-IDF
Cette fonction est secrète: en fait, je n'ai pas trouvé de code utilisant sklearn et qui soit juste, et comme c'est inutile pour la suite, je passe (en python pass).
Plongement de mots - word embedding
Wikipedia
- Le word embedding (« plongement de mots1 » ou « plongement lexical2 » en français) est une méthode d'apprentissage d'une représentation de mots utilisée notamment en traitement automatique des langues.
Cette technique permet de représenter chaque mot d'un dictionnaire par un vecteur de nombres réels. La technique des word embeddings diminue la dimension de la représentation des mots en comparaison d'un modèle vectoriel par exemple, facilitant ainsi les tâches d'apprentissage impliquant ces mots, puisque moins soumis au fléau de la dimension.
Comprendre: transformer le teste en matrice de nombre de taille limitées pour être traitées avec un apprentissage automatique. Voir Word2vec
Gensim
- Voir Gensim Documentation