Outils pour utilisateurs

Outils du site


text_processing_and_machine_learning_tal

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
text_processing_and_machine_learning [2020/05/27 13:33] – [Ressources] sergetext_processing_and_machine_learning_tal [2022/02/08 16:00] (Version actuelle) – Tag0 Removed: text_gen serge
Ligne 1: Ligne 1:
-======Text Processing and Machine Learning====== +======Text Processing and Machine Learning TAL====== 
- +<WRAP center round box 60% centeralign> 
-<WRAP center round box 80% centeralign> +**{{tagpage>ia|Intelligence Artificielle}}**     **[[http://translate.google.com/translate?hl=&sl=auto&tl=en&u=https%3A%2F%2Fressources.labomedia.org%2Ftext_processing_and_machine_learning_tal|English Version]]** 
-**{{tagpage>ia|Intelligence Artificielle}}**+</WRAP> 
 +<WRAP center round box 60% centeralign> 
 +**[[les_pages_intelligence_artificielle_en_details|Les Pages Intelligence Artificielle en détails]]**
 </WRAP> </WRAP>
  
 <WRAP center round box 80% centeralign> <WRAP center round box 80% centeralign>
-**[[https://en.wikipedia.org/wiki/Text_processing|Text processing]]**\\ +**{{tagpage>tal|Traitement Automatique du Langage}}**  
-**[[https://fr.wikipedia.org/wiki/Traitement_automatique_du_langage_naturel|TAL : Traitement automatique du langage naturel]]**+
 </WRAP> </WRAP>
 =====Définitions ===== =====Définitions =====
Ligne 26: Ligne 27:
   * [[https://towardsdatascience.com/natural-language-processing-nlp-for-machine-learning-d44498845d5b|Natural Language Processing(NLP) for Machine Learning]]   * [[https://towardsdatascience.com/natural-language-processing-nlp-for-machine-learning-d44498845d5b|Natural Language Processing(NLP) for Machine Learning]]
  
-=====Analyse du corpus=====+ 
 +https://cocoon.huma-num.fr/exist/crdo 
 +===== NLTK Natural Language Toolkit===== 
 +**NLTK is a leading platform for building Python programs to work with human language data.** 
 + 
 +==== Ressources ==== 
 +  * [[https://www.nltk.org/index.html|nltk.org]] 
 +  * [[https://en.wikipedia.org/wiki/Natural_Language_Toolkit|Natural_Language_Toolkit sur Wikipedia/EN]] 
 + 
 +==== Installation ==== 
 + 
 +  sudo pip3 install nltk 
 +  python3 
 +  import nltk 
 +  nltk.download('punkt'
 +  nltk.download('averaged_perceptron_tagger'
 +  nltk.download('stopwords'
 +  nltk.download('treebank'
 +  nltk.download('maxent_ne_chunker'
 +  nltk.download('words'
 + 
 +=====Analyse du corpus avec NLTK sur un text simple=====
 ====Récupérération de textes et exploration du corpus==== ====Récupérération de textes et exploration du corpus====
  
 +===En général===
 +Le corpus sera soit une liste, un dictionnaire, un set  de string, récupéré dans une DB, dans du html, dans des fichiers ... qu'il peut être nécessaire de nettoyer, arranger.
 +
 +===Exemple d'étape===
 +  * Chargement d'un html
 +  * Récupération du texte voulu avec Beautifullsoup
 +
 +<code python nltk_example.py>
 +#!/usr/bin/env python3.7
 +
 +import nltk
 +from nltk.corpus import treebank
 +
 +raw = """À Monseigneur Le Duc de Bourgogne
 +Prince, l’unique objet du soin des Immortels,
 +Souffrez que mon encens parfume vos Autels.
 +Je vous offre un peu tard ces présents de ma Muse ;
 +"""
 +
 +# ### Récupération d'un texte
 +# Tokenize the text
 +tokens = nltk.wordpunct_tokenize(raw)
 +print(f'tokens:\n{tokens}')
 +
 +# Je ne garde que du 2ème mot au 30ème
 +tokens =tokens[2:30]
 +print(f'Texte:\n{tokens}')
 +
 +# ### Normalizing 1
 +# Création d'un NLTK Text
 +text = nltk.Text(tokens)
 +print(f'Texte:\n{text}')
 +# <Text: Bourgogne Prince , l ’ unique objet du...>
 +
 +# Normalize the words
 +words = [w.lower() for w in text]
 +print(f'words: nombre={len(words)}\n{words}')
 +
 +# Build vocabulary (les mots sans la ponctuation, apostrophe)
 +vocab = sorted(set(words))
 +print(f'vocab: nombre={len(vocab)}\n{vocab}')
 +
 +# ### Normalizing 2
 +# Tous les mots sans exception
 +mots_brut = nltk.word_tokenize(raw)
 +print(f'\nTous les mots bruts = {mots_brut}\n')
 +print(f'\nNombre de mots brut = {len(mots_brut)}\n')
 +
 +# Sans la ponctuation et apostrophes
 +tokenizer = nltk.RegexpTokenizer(r'\w+')
 +bons_mots = tokenizer.tokenize(raw.lower())
 +print(f'\nTous les bons mots = {bons_mots}\n')
 +print(f'\nNombre de bons mots = {len(bons_mots)}\n')
 +
 +# Fréquence des mots, sans la ponctuation et apostrophes
 +tokenizer = nltk.RegexpTokenizer(r'\w+')
 +corpora = tokenizer.tokenize(raw.lower())
 +freq = nltk.FreqDist(corpora)
 +print(f'Fréquence des mots dans le désordre:')
 +for k, v in freq.items():
 +    print(f'    {k} {v}')
 +
 +# ### Some simple things you can do with NLTK
 +tokens = nltk.word_tokenize(raw)
 +tagged = nltk.pos_tag(tokens)
 +print(f'tagged[0:6] = {tagged[0:6]}')
 +
 +# Identify named entities
 +entities = nltk.chunk.ne_chunk(tagged)
 +print(f'entities = {entities}')
 +
 +# Display a parse tree:
 +t = treebank.parsed_sents('wsj_0001.mrg')[0]
 +t.draw()
 +</code>
 +
 +<code text>
 +tokens:
 +['À', 'Monseigneur', 'Le', 'Duc', 'de', 'Bourgogne', 'Prince', ',', 'l', '’', 'unique', 'objet', 'du', 'soin', 'des', 'Immortels', ',', 'Souffrez', 'que', 'mon', 'encens', 'parfume', 'vos', 'Autels', '.', 'Je', 'vous', 'offre', 'un', 'peu', 'tard', 'ces', 'présents', 'de', 'ma', 'Muse', ';']
 +Texte:
 +['Le', 'Duc', 'de', 'Bourgogne', 'Prince', ',', 'l', '’', 'unique', 'objet', 'du', 'soin', 'des', 'Immortels', ',', 'Souffrez', 'que', 'mon', 'encens', 'parfume', 'vos', 'Autels', '.', 'Je', 'vous', 'offre', 'un', 'peu']
 +Texte:
 +<Text: Le Duc de Bourgogne Prince , l ’...>
 +words: nombre=28
 +['le', 'duc', 'de', 'bourgogne', 'prince', ',', 'l', '’', 'unique', 'objet', 'du', 'soin', 'des', 'immortels', ',', 'souffrez', 'que', 'mon', 'encens', 'parfume', 'vos', 'autels', '.', 'je', 'vous', 'offre', 'un', 'peu']
 +vocab: nombre=27
 +[',', '.', 'autels', 'bourgogne', 'de', 'des', 'du', 'duc', 'encens', 'immortels', 'je', 'l', 'le', 'mon', 'objet', 'offre', 'parfume', 'peu', 'prince', 'que', 'soin', 'souffrez', 'un', 'unique', 'vos', 'vous', '’']
 +
 +Tous les mots bruts = ['À', 'Monseigneur', 'Le', 'Duc', 'de', 'Bourgogne', 'Prince', ',', 'l', '’', 'unique', 'objet', 'du', 'soin', 'des', 'Immortels', ',', 'Souffrez', 'que', 'mon', 'encens', 'parfume', 'vos', 'Autels', '.', 'Je', 'vous', 'offre', 'un', 'peu', 'tard', 'ces', 'présents', 'de', 'ma', 'Muse', ';']
 +Nombre de mots brut = 37
 +
 +Tous les bons mots = ['à', 'monseigneur', 'le', 'duc', 'de', 'bourgogne', 'prince', 'l', 'unique', 'objet', 'du', 'soin', 'des', 'immortels', 'souffrez', 'que', 'mon', 'encens', 'parfume', 'vos', 'autels', 'je', 'vous', 'offre', 'un', 'peu', 'tard', 'ces', 'présents', 'de', 'ma', 'muse']
 +Nombre de bons mots = 32
 +
 +Fréquence des mots dans le désordre:
 +    à 1
 +    monseigneur 1
 +    le 1
 +    duc 1
 +    de 2
 +    bourgogne 1
 +    prince 1
 +    l 1
 +etc ...
 +tagged[0:6] = [('À', 'JJ'), ('Monseigneur', 'NNP'), ('Le', 'NNP'), ('Duc', 'NNP'), ('de', 'IN'), ('Bourgogne', 'NNP')]
 +entities = (S
 +  À/JJ
 +  (ORGANIZATION Monseigneur/NNP Le/NNP Duc/NNP)
 +  de/IN
 +  (PERSON Bourgogne/NNP Prince/NNP)
 +  ,/,
 +  l/NN
 +  ’/NNP
 +  unique/NN
 +  objet/NN
 +  du/NN
 +  soin/NN
 +  des/NNS
 +  (PERSON Immortels/NNP)
 +  ,/,
 +  (GPE Souffrez/NNP)
 +  que/NN
 +  mon/NN
 +  encens/VBZ
 +  parfume/JJ
 +  vos/NN
 +  (PERSON Autels/NNP)
 +  ./.
 +  Je/NNP
 +  vous/JJ
 +  offre/NN
 +  un/JJ
 +  peu/NN
 +  tard/NN
 +  ces/VBZ
 +  présents/NNS
 +  de/IN
 +  ma/NN
 +  (ORGANIZATION Muse/NNP)
 +  ;/:)
 +</code>
 +{{ :media_10:nltk_01.png?800 |}}
  
  
  
-=====Fin=====+=====Apprentissage avec des Fables de La Fontaine===== 
 +[[TAL Traitement Automatique du Langage avec des Fables de La Fontaine]]
  
-{{tag>ia text_processing machine_learning apprentissage_automatique python python3}}+{{tag> ia python tal }}
text_processing_and_machine_learning_tal.1590586408.txt.gz · Dernière modification : 2020/05/27 13:33 de serge