Outils pour utilisateurs

Outils du site


tal_traitement_automatique_du_langage_avec_des_fables_de_la_fontaine

Ceci est une ancienne révision du document !


TAL Traitement Automatique du Langage avec des Fables de La Fontaine

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.

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 embeddin (« 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

Une image uniquement pour faire joli et épater en société !

Gensim

Réseaux de neurones

Et composer des textes en vers comme La Fontaine !

char-rnn

  • github.com/karpathy/char-rnn Multi-layer Recurrent Neural Network for training/sampling from character-level language models. Mais c'est du LUA, on “pass”

python recherche à faire

sudo pip3 install textgenrnn
sudo pip3 install tensorflow>=2.1.0
sudo pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.1.0-cp37-cp37m-manylinux2010_x86_64.whl
sudo python3.7 -m pip install --upgrade pip
sudo python3.7 pip install --upgrade pip
sudo python3.7 pip3 install --upgrade pip3
sudo pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.1.0-cp37-cp37m-manylinux2010_x86_64.whl
sudo pip3 install textgenrnn
serge@127:~$ sudo pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.1.0-cp37-cp37m-manylinux2010_x86_64.whl
Collecting tensorflow-cpu==2.1.0
  Downloading https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.1.0-cp37-cp37m-manylinux2010_x86_64.whl (104.6 MB)
     |████████████████████████████████| 104.6 MB 453 kB/s 
Collecting tensorboard<2.2.0,>=2.1.0
  Downloading tensorboard-2.1.1-py3-none-any.whl (3.8 MB)
     |████████████████████████████████| 3.8 MB 387 kB/s 
Requirement already satisfied, skipping upgrade: grpcio>=1.8.6 in /usr/local/lib/python3.7/dist-packages (from tensorflow-cpu==2.1.0) (1.19.0)
Requirement already satisfied, skipping upgrade: six>=1.12.0 in /usr/lib/python3/dist-packages (from tensorflow-cpu==2.1.0) (1.12.0)
Collecting numpy<2.0,>=1.16.0
  Downloading numpy-1.18.5-cp37-cp37m-manylinux1_x86_64.whl (20.1 MB)
     |████████████████████████████████| 20.1 MB 458 kB/s 
Collecting google-pasta>=0.1.6
  Downloading google_pasta-0.2.0-py3-none-any.whl (57 kB)
     |████████████████████████████████| 57 kB 448 kB/s 
Collecting tensorflow-estimator<2.2.0,>=2.1.0rc0
  Downloading tensorflow_estimator-2.1.0-py2.py3-none-any.whl (448 kB)
     |████████████████████████████████| 448 kB 397 kB/s 
Requirement already satisfied, skipping upgrade: absl-py>=0.7.0 in /usr/local/lib/python3.7/dist-packages (from tensorflow-cpu==2.1.0) (0.7.0)
Requirement already satisfied, skipping upgrade: astor>=0.6.0 in /usr/local/lib/python3.7/dist-packages (from tensorflow-cpu==2.1.0) (0.7.1)
Requirement already satisfied, skipping upgrade: gast==0.2.2 in /usr/local/lib/python3.7/dist-packages (from tensorflow-cpu==2.1.0) (0.2.2)
Collecting protobuf>=3.8.0
  Downloading protobuf-3.12.2-cp37-cp37m-manylinux1_x86_64.whl (1.3 MB)
     |████████████████████████████████| 1.3 MB 459 kB/s 
Collecting keras-applications>=1.0.8
  Downloading Keras_Applications-1.0.8-py3-none-any.whl (50 kB)
     |████████████████████████████████| 50 kB 429 kB/s 
Collecting opt-einsum>=2.3.2
  Downloading opt_einsum-3.2.1-py3-none-any.whl (63 kB)
     |████████████████████████████████| 63 kB 413 kB/s 
Requirement already satisfied, skipping upgrade: termcolor>=1.1.0 in /usr/local/lib/python3.7/dist-packages (from tensorflow-cpu==2.1.0) (1.1.0)
Collecting keras-preprocessing>=1.1.0
  Downloading Keras_Preprocessing-1.1.2-py2.py3-none-any.whl (42 kB)
     |████████████████████████████████| 42 kB 391 kB/s 
Requirement already satisfied, skipping upgrade: wheel>=0.26; python_version >= "3" in /usr/lib/python3/dist-packages (from tensorflow-cpu==2.1.0) (0.32.3)
Collecting scipy==1.4.1; python_version >= "3"
  Downloading scipy-1.4.1-cp37-cp37m-manylinux1_x86_64.whl (26.1 MB)
     |████████████████████████████████| 26.1 MB 154 kB/s 
Collecting wrapt>=1.11.1
  Downloading wrapt-1.12.1.tar.gz (27 kB)
Requirement already satisfied, skipping upgrade: markdown>=2.6.8 in /usr/local/lib/python3.7/dist-packages (from tensorboard<2.2.0,>=2.1.0->tensorflow-cpu==2.1.0) (3.0.1)
Requirement already satisfied, skipping upgrade: requests<3,>=2.21.0 in /usr/lib/python3/dist-packages (from tensorboard<2.2.0,>=2.1.0->tensorflow-cpu==2.1.0) (2.21.0)
Collecting google-auth<2,>=1.6.3
  Downloading google_auth-1.16.1-py2.py3-none-any.whl (90 kB)
     |████████████████████████████████| 90 kB 409 kB/s 
Collecting setuptools>=41.0.0
  Downloading setuptools-47.1.1-py3-none-any.whl (583 kB)
     |████████████████████████████████| 583 kB 404 kB/s 
Requirement already satisfied, skipping upgrade: werkzeug>=0.11.15 in /usr/local/lib/python3.7/dist-packages (from tensorboard<2.2.0,>=2.1.0->tensorflow-cpu==2.1.0) (0.14.1)
Collecting google-auth-oauthlib<0.5,>=0.4.1
  Downloading google_auth_oauthlib-0.4.1-py2.py3-none-any.whl (18 kB)
Requirement already satisfied, skipping upgrade: h5py in /usr/local/lib/python3.7/dist-packages (from keras-applications>=1.0.8->tensorflow-cpu==2.1.0) (2.9.0)
Collecting cachetools<5.0,>=2.0.0
  Downloading cachetools-4.1.0-py3-none-any.whl (10 kB)
Requirement already satisfied, skipping upgrade: pyasn1-modules>=0.2.1 in /usr/local/lib/python3.7/dist-packages (from google-auth<2,>=1.6.3->tensorboard<2.2.0,>=2.1.0->tensorflow-cpu==2.1.0) (0.2.8)
Collecting rsa<4.1,>=3.1.4
  Downloading rsa-4.0-py2.py3-none-any.whl (38 kB)
Collecting requests-oauthlib>=0.7.0
  Downloading requests_oauthlib-1.3.0-py2.py3-none-any.whl (23 kB)
Requirement already satisfied, skipping upgrade: pyasn1<0.5.0,>=0.4.6 in /usr/local/lib/python3.7/dist-packages (from pyasn1-modules>=0.2.1->google-auth<2,>=1.6.3->tensorboard<2.2.0,>=2.1.0->tensorflow-cpu==2.1.0) (0.4.8)
Collecting oauthlib>=3.0.0
  Downloading oauthlib-3.1.0-py2.py3-none-any.whl (147 kB)
     |████████████████████████████████| 147 kB 398 kB/s 
Building wheels for collected packages: wrapt
  Building wheel for wrapt (setup.py) ... done
  Created wheel for wrapt: filename=wrapt-1.12.1-cp37-cp37m-linux_x86_64.whl size=73410 sha256=c47ac3ed15850409bf1e0525a4b18567bf925f7f7671e772725aef6292745322
  Stored in directory: /root/.cache/pip/wheels/62/76/4c/aa25851149f3f6d9785f6c869387ad82b3fd37582fa8147ac6
Successfully built wrapt
ERROR: matplotlib 3.0.2 requires kiwisolver>=1.0.1, which is not installed.
ERROR: imgaug 0.2.8 requires opencv-python, which is not installed.
ERROR: tensorflow 1.13.1 has requirement tensorboard<1.14.0,>=1.13.0, but you'll have tensorboard 2.1.1 which is incompatible.
ERROR: tensorflow 1.13.1 has requirement tensorflow-estimator<1.14.0rc0,>=1.13.0, but you'll have tensorflow-estimator 2.1.0 which is incompatible.
ERROR: tensorboard 2.1.1 has requirement grpcio>=1.24.3, but you'll have grpcio 1.19.0 which is incompatible.
ERROR: scikit-image 0.14.2 has requirement pillow>=4.3.0, but you'll have pillow 3.2.0 which is incompatible.
Installing collected packages: numpy, setuptools, protobuf, cachetools, rsa, google-auth, oauthlib, requests-oauthlib, google-auth-oauthlib, tensorboard, google-pasta, tensorflow-estimator, keras-applications, opt-einsum, keras-preprocessing, scipy, wrapt, tensorflow-cpu
  Attempting uninstall: numpy
    Found existing installation: numpy 1.15.4
    Uninstalling numpy-1.15.4:
      Successfully uninstalled numpy-1.15.4
  Attempting uninstall: setuptools
    Found existing installation: setuptools 40.8.0
    Uninstalling setuptools-40.8.0:
      Successfully uninstalled setuptools-40.8.0
  Attempting uninstall: protobuf
    Found existing installation: protobuf 3.7.0
    Uninstalling protobuf-3.7.0:
      Successfully uninstalled protobuf-3.7.0
  Attempting uninstall: tensorboard
    Found existing installation: tensorboard 1.13.0
    Uninstalling tensorboard-1.13.0:
      Successfully uninstalled tensorboard-1.13.0
  Attempting uninstall: tensorflow-estimator
    Found existing installation: tensorflow-estimator 1.13.0
    Uninstalling tensorflow-estimator-1.13.0:
      Successfully uninstalled tensorflow-estimator-1.13.0
  Attempting uninstall: keras-applications
    Found existing installation: Keras-Applications 1.0.7
    Uninstalling Keras-Applications-1.0.7:
      Successfully uninstalled Keras-Applications-1.0.7
  Attempting uninstall: keras-preprocessing
    Found existing installation: Keras-Preprocessing 1.0.9
    Uninstalling Keras-Preprocessing-1.0.9:
      Successfully uninstalled Keras-Preprocessing-1.0.9
  Attempting uninstall: scipy
    Found existing installation: scipy 1.2.1
    Uninstalling scipy-1.2.1:
      Successfully uninstalled scipy-1.2.1
  Attempting uninstall: wrapt
    Found existing installation: wrapt 1.10.11
ERROR: Cannot uninstall 'wrapt'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

fin

tal_traitement_automatique_du_langage_avec_des_fables_de_la_fontaine.1591525021.txt.gz · Dernière modification : 2020/06/07 10:17 de serge